Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Berinteraksi dengan Device Shadow menggunakan aplikasi sampel dan klien uji MQTT
Untuk berinteraksi denganshadow.py
contoh aplikasi, masukkan nilai di terminal untukdesired
nilai. Misalnya, Anda dapat menentukan warna yang menyerupai lampu lalu lintas danAWS IoTmenanggapi permintaan dan memperbarui nilai yang dilaporkan.
Dalam tutorial ini, Anda akan belajar cara:
-
Menggunakan
shadow.py
contoh aplikasi untuk menentukan status yang diinginkan dan memperbarui status bayangan saat ini. -
Mengedit dokumen Shadow untuk mengamati peristiwa delta dan bagaimana
shadow.py
aplikasi sampel merespon itu. -
Gunakan klien uji MQTT untuk berlangganan topik bayangan dan mengamati pembaruan saat Anda menjalankan program sampel.
Sebelum Anda menjalankan tutorial ini, Anda harus memiliki:
MenyiapkanAkun AWS, mengkonfigurasi perangkat Raspberry Pi Anda, dan membuatAWS IoThal dan kebijakan. Anda juga harus menginstal perangkat lunak yang diperlukan, Device SDK, file sertifikat, dan menjalankan program sampel di terminal. Untuk informasi selengkapnya, lihat tutorial sebelumnyaTutorial: Mempersiapkan Raspberry Pi Anda untuk menjalankan aplikasi bayangandanLangkah 1: Jalankan aplikasi contoh shadow.py. Anda harus menyelesaikan tutorial ini jika belum.
Dalam tutorial ini, Anda akan:
Tutorial ini memakan waktu sekitar 45 menit untuk menyelesaikannya.
Langkah 1: Perbarui nilai yang diinginkan dan dilaporkan menggunakanshadow.py
aplikasi sampel
Dalam tutorial sebelumnyaLangkah 1: Jalankan aplikasi contoh shadow.py, Anda belajar bagaimana mengamati pesan yang diterbitkan ke dokumen Shadow diAWS IoTkonsol saat Anda memasukkan nilai yang diinginkan seperti yang dijelaskan di bagianTutorial: Menginstal Device SDK dan menjalankan aplikasi sampel untuk Device Shadows.
Pada contoh sebelumnya, kita mengatur warna yang diinginkanyellow
. Setelah Anda memasukkan setiap nilai, terminal meminta Anda untuk memasukkan yang laindesired
nilai. Jika Anda lagi memasukkan nilai yang sama (yellow
), aplikasi mengenali ini dan meminta Anda untuk memasukkan yang barudesired
nilai.
Enter desired value: yellow Local value is already 'yellow'. Enter desired value:
Sekarang, katakan bahwa Anda memasukkan warnagreen
.AWS IoTmenanggapi permintaan dan memperbaruireported
nilaigreen
. Ini adalah bagaimana pembaruan terjadi ketikadesired
berbeda darireported
negara, menyebabkan delta.
Bagaimanashadow.py
contoh aplikasi mensimulasikan interaksi Device Shadow:
-
Masukkan
desired
nilai (katakanlahyellow
) di terminal untuk mempublikasikan keadaan yang diinginkan. -
Sebagai
desired
berbeda darireported
negara (mengatakan warnagreen
), delta terjadi, dan aplikasi yang berlangganan delta menerima pesan ini. -
Aplikasi merespons pesan dan memperbarui statusnya ke
desired
nilaiyellow
. -
Aplikasi kemudian menerbitkan pesan pembaruan dengan nilai baru yang dilaporkan dari status perangkat,
yellow
.
Berikut ini menunjukkan pesan yang ditampilkan di terminal yang menunjukkan bagaimana permintaan pembaruan dipublikasikan.
Enter desired value: green Changed local shadow value to 'green'. Updating reported shadow value to 'green'... Update request published. Finished updating reported shadow value to 'green'.
DiAWS IoTconsole, dokumen Shadow mencerminkan nilai diperbarui untukgreen
untuk keduareported
dandesired
bidang, dan nomor versi bertambah 1. Misalnya, jika nomor versi sebelumnya ditampilkan sebagai 10, nomor versi saat ini akan ditampilkan sebagai 11.
catatan
Menghapus bayangan tidak mengatur ulang nomor versi ke 0. Anda akan melihat bahwa versi bayangan bertambah 1 ketika Anda mempublikasikan permintaan pembaruan atau membuat bayangan lain dengan nama yang sama.
Mengedit dokumen Shadow untuk mengamati peristiwa delta
Parametershadow.py
aplikasi sampel juga berlangganandelta
peristiwa, dan merespon ketika ada perubahan padadesired
nilai. Misalnya, Anda dapat menggantidesired
nilai untuk warnared
. Untuk melakukannya, diAWS IoTkonsol, edit dokumen Shadow dengan mengklikMengeditdan kemudian mengaturdesired
nilaired
di JSON, sambil menjagareported
nilaigreen
. Sebelum Anda menyimpan perubahan, menjaga terminal pada Raspberry Pi terbuka karena Anda akan melihat pesan yang ditampilkan di terminal ketika perubahan terjadi.
{ "desired": { "welcome": "aws-iot", "color": "red" }, "reported": { "welcome": "aws-iot", "color": "green" } }
Setelah Anda menyimpan nilai baru,shadow.py
aplikasi sampel merespons perubahan ini dan menampilkan pesan di terminal yang menunjukkan delta. Anda kemudian akan melihat pesan berikut muncul di bawah prompt untuk memasukkandesired
nilai.
Enter desired value: Received shadow delta event. Delta reports that desired value is 'red'. Changing local value... Changed local shadow value to 'red'. Updating reported shadow value to 'red'... Finished updating reported shadow value to 'red'. Enter desired value: Update request published. Finished updating reported shadow value to 'red'.
Langkah 2: Melihat pesan darishadow.py
contoh aplikasi di klien uji MQTT
Anda dapat menggunakanKlien uji MQTTdi dalamAWS IoTkonsoluntuk memonitor pesan MQTT yang diteruskan dalamAkun AWS. Dengan berlangganan topik MQTT yang dipesan yang digunakan oleh layanan Device Shadow, Anda dapat mengamati pesan yang diterima oleh topik saat menjalankan aplikasi sampel.
Jika Anda belum menggunakan klien uji MQTT, Anda dapat meninjauLihat MQTT pesan dengan AWS IoT MQTT klien. Ini membantu Anda mempelajari cara menggunakanKlien uji MQTTdi dalamAWS IoTkonsoluntuk melihat pesan MQTT saat mereka melewati broker pesan.
-
Buka klien uji MQTT
BukaKlien uji MQTT diAWS IoTkonsol
di jendela baru sehingga Anda dapat mengamati pesan yang diterima oleh topik MQTT tanpa kehilangan konfigurasi klien uji MQTT Anda. Klien uji MQTT tidak menyimpan langganan atau log pesan jika Anda membiarkannya pergi ke halaman lain di konsol. Untuk bagian tutorial ini, Anda dapat memiliki dokumen Shadow dari AndaAWS IoThal dan klien uji MQTT terbuka di jendela terpisah untuk lebih mudah mengamati interaksi dengan Device Shadows. -
Berlangganan topik Shadow yang dipesan MQTT
Anda dapat menggunakan klien uji MQTT untuk memasukkan nama topik yang dipesan MQTT Device Shadow dan berlangganan ke mereka untuk menerima pembaruan saat menjalankan
shadow.py
aplikasi sampel. Untuk berlangganan topik:DiKlien uji MQTTdi dalamAWS IoTkonsol, pilihBerlangganan topik.
DiFilter topikbagian, masukkan:$ aws/hal/
thingname
/bayangan/update/ #. Di sini,thingname
adalah nama sumber daya yang Anda buat sebelumnya (misalnya,My_light_bulb
).Menjaga nilai default untuk pengaturan konfigurasi tambahan, lalu pilihLangganan.
Dengan menggunakan#wildcard dalam langganan topik, Anda dapat berlangganan beberapa topik MQTT pada saat yang sama dan mengamati semua pesan yang dipertukarkan antara perangkat dan Shadow dalam satu jendela. Untuk informasi selengkapnya tentang karakter wildcard dan penggunaannya, lihatMQTTtopik.
-
Jalankan
shadow.py
program sampel dan mengamati pesanDi jendela baris perintah Raspberry Pi Anda, jika Anda telah memutuskan program, jalankan aplikasi sampel lagi dan tonton pesan diKlien uji MQTTdi dalamAWS IoTkonsol.
-
Jalankan perintah berikut untuk me-restart program sampel. Ganti
your-iot-thing-nama
danyour-iot-endpoint
dengan nama-namaAWS IoThal yang Anda buat sebelumnya (misalnya,My_light_bulb
), dan titik akhir untuk berinteraksi dengan perangkat.cd ~/aws-iot-device-sdk-python-v2/samples python3 shadow.py --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint
your-iot-endpoint
--thing_nameyour-iot-thing-name
Parameter
shadow.py
contoh aplikasi kemudian berjalan dan mengambil status bayangan saat ini. Jika Anda telah menghapus bayangan atau menghapus status saat ini, program menetapkan nilai saat ini keoff
dan kemudian meminta Anda untuk memasukkandesired
nilai.Connecting to a3qEXAMPLEffp-ats.iot.us-west-2.amazonaws.com with client ID 'test-0c8ae2ff-cc87-49d2-a82a-ae7ba1d0ca5a'... Connected! Subscribing to Delta events... Subscribing to Update responses... Subscribing to Get responses... Requesting current shadow state... Launching thread to read user input... Finished getting initial shadow state. Shadow document lacks 'color' property. Setting defaults... Changed local shadow value to 'off'. Updating reported shadow value to 'off'... Update request published. Finished updating reported shadow value to 'off'... Enter desired value:
Di sisi lain, jika program berjalan dan Anda me-restart, Anda akan melihat nilai warna terbaru yang dilaporkan di terminal. Di klien uji MQTT, Anda akan melihat pembaruan ke topik$ aws/hal/
thingname
/bayangan/dapatkandan$ aws/hal/thingname
/bayangan/mendapatkan/diterima.Misalkan warna terbaru yang dilaporkan
green
. Berikut ini menunjukkan isi dari$ aws/hal/thingname
/bayangan/mendapatkan/diterimaFile JSON.{ "state": { "desired": { "welcome": "aws-iot", "color": "green" }, "reported": { "welcome": "aws-iot", "color": "green" } }, "metadata": { "desired": { "welcome": { "timestamp": 1620156892 }, "color": { "timestamp": 1620161643 } }, "reported": { "welcome": { "timestamp": 1620156892 }, "color": { "timestamp": 1620161643 } } }, "version": 10, "timestamp": 1620173908 }
-
Masukkan
desired
nilai di terminal, sepertiyellow
. Parametershadow.py
contoh aplikasi merespon dan menampilkan pesan berikut di terminal yang menunjukkan perubahan dalamreported
nilaiyellow
.Enter desired value: yellow Changed local shadow value to 'yellow'. Updating reported shadow value to 'yellow'... Update request published. Finished updating reported shadow value to 'yellow'.
DiKlien uji MQTTdi dalamAWS IoTkonsol, di bawahLangganan, Anda melihat bahwa topik berikut menerima pesan:
-
$ aws/hal/
thingname
/bayangan/update: menunjukkan bahwa keduanyadesired
danupdated
nilai berubah menjadi warnayellow
. -
$ aws/hal/
thingname
/shadow/update/accepted: menunjukkan nilai-nilai saatdesired
danreported
negara dan metadata dan informasi versi mereka. -
$ aws/hal/
thingname
/bayangan/perbaruan/dokumen: menunjukkan nilai sebelumnya dan saat ini daridesired
danreported
negara dan metadata dan informasi versi mereka.
Sebagai dokumen$ aws/hal/
thingname
/bayangan/perbaruan/dokumenjuga berisi informasi yang terkandung dalam dua topik lainnya, kita dapat meninjau untuk melihat informasi negara. Keadaan sebelumnya menunjukkan nilai yang dilaporkan diatur kegreen
, metadata dan informasi versinya, dan keadaan saat ini yang menunjukkan nilai dilaporkan diperbarui untukyellow
.{ "previous": { "state": { "desired": { "welcome": "aws-iot", "color": "green" }, "reported": { "welcome": "aws-iot", "color": "green" } }, "metadata": { "desired": { "welcome": { "timestamp": 1617297888 }, "color": { "timestamp": 1617297898 } }, "reported": { "welcome": { "timestamp": 1617297888 }, "color": { "timestamp": 1617297898 } } }, "version": 10 }, "current": { "state": { "desired": { "welcome": "aws-iot", "color": "yellow" }, "reported": { "welcome": "aws-iot", "color": "yellow" } }, "metadata": { "desired": { "welcome": { "timestamp": 1617297888 }, "color": { "timestamp": 1617297904 } }, "reported": { "welcome": { "timestamp": 1617297888 }, "color": { "timestamp": 1617297904 } } }, "version": 11 }, "timestamp": 1617297904 }
-
-
Sekarang, jika Anda memasukkan yang lain
desired
nilai, Anda melihat perubahan lebih lanjut kereported
nilai dan pembaruan pesan yang diterima oleh topik ini. Nomor versi juga bertambah sebesar 1. Misalnya, jika Anda memasukkan nilaigreen
, keadaan sebelumnya melaporkan nilainyayellow
dan keadaan saat ini melaporkan nilainyagreen
.
-
-
Edit dokumen Shadow untuk mengamati peristiwa delta
Untuk mengamati perubahan pada topik delta, edit dokumen Shadow diAWS IoTkonsol. Misalnya, Anda dapat mengganti
desired
nilai untuk warnared
. Untuk melakukannya, diAWS IoTkonsol, pilihMengeditdan kemudian mengaturdesired
nilai merah di JSON, sambil menjagareported
nilai diatur kegreen
. Sebelum menyimpan perubahan, buka terminal karena Anda akan melihat pesan delta yang dilaporkan di terminal.{ "desired": { "welcome": "aws-iot", "color": "red" }, "reported": { "welcome": "aws-iot", "color": "green" } }
Parameter
shadow.py
aplikasi sampel merespons perubahan ini dan menampilkan pesan di terminal yang menunjukkan delta. Dalam klien uji MQTT,update
topik akan menerima pesan yang menunjukkan perubahan padadesired
danreported
nilai.Anda juga melihat bahwa topik$ aws/hal/
thingname
/shadow/update/deltamenerima pesan. Untuk melihat pesan, pilih topik ini, yang tercantum di bawahLangganan.{ "version": 13, "timestamp": 1617318480, "state": { "color": "red" }, "metadata": { "color": { "timestamp": 1617318480 } } }
Langkah 3: Memecahkan masalah kesalahan dengan interaksi Device Shadow
Saat menjalankan aplikasi contoh Shadow, Anda mungkin mengalami masalah dengan mengamati interaksi dengan layanan Device Shadow.
Jika program berjalan dengan sukses dan meminta Anda untuk memasukkandesired
nilai, Anda harus dapat mengamati interaksi Device Shadow dengan menggunakan dokumen Shadow dan klien uji MQTT seperti yang dijelaskan sebelumnya. Namun, jika Anda tidak dapat melihat interaksinya, berikut adalah beberapa hal yang dapat Anda periksa:
-
Periksa nama benda dan bayangannya diAWS IoTkonsol
Jika Anda tidak melihat pesan dalam dokumen Shadow, tinjau perintahnya dan pastikan pesan tersebut sesuai dengan nama benda diAWS IoTkonsol. Anda juga dapat memeriksa apakah Anda memiliki bayangan klasik dengan memilih sumber daya Anda dan kemudian memilihBayangan. Tutorial ini berfokus terutama pada interaksi dengan bayangan klasik.
Anda juga dapat mengonfirmasi bahwa perangkat yang Anda gunakan terhubung ke internet. DiAWS IoTkonsol, pilih hal yang Anda buat sebelumnya, lalu pilihInteraksi. Pada halaman detail objek, Anda akan melihat pesan di sini yang mengatakan:
This thing already appears to be connected.
-
Periksa topik cadangan MQTT yang Anda langgani
Jika Anda tidak melihat pesan muncul di klien uji MQTT, periksa apakah topik yang Anda langgani diformat dengan benar. Topik MQTT Device Shadow memiliki format$ aws/hal/
thingname
/bayangan/dan mungkin memilikiupdate
,get
, ataudelete
mengikutinya tergantung pada tindakan yang ingin Anda lakukan pada bayangan. Tutorial ini menggunakan topik$ aws/hal/thingname
/bayangan/ #jadi pastikan Anda memasukkannya dengan benar saat berlangganan topik diFilter topikbagian dari klien uji.Saat Anda memasukkan nama topik, pastikan bahwa
thingname
sama dengan namaAWS IoThal yang Anda buat sebelumnya. Anda juga dapat berlangganan topik MQTT tambahan untuk melihat apakah pembaruan telah berhasil dilakukan. Misalnya, Anda dapat berlangganan topik$ aws/hal/thingname
/shadow/update/ditolakuntuk menerima pesan setiap kali permintaan pembaruan gagal sehingga Anda dapat men-debug masalah koneksi. Untuk informasi selengkapnya tentang topik yang dipesan, lihatTopik bayangandanMQTTTopik Device Shadow.
Langkah 4: Tinjau hasil dan langkah selanjutnya
Dalam tutorial ini, Anda belajar bagaimana:
-
Menggunakan
shadow.py
contoh aplikasi untuk menentukan status yang diinginkan dan memperbarui status bayangan saat ini. -
Mengedit dokumen Shadow untuk mengamati peristiwa delta dan bagaimana
shadow.py
aplikasi sampel merespon itu. -
Gunakan klien uji MQTT untuk berlangganan topik bayangan dan mengamati pembaruan saat Anda menjalankan program sampel.
Langkah selanjutnya
Anda dapat berlangganan topik tambahan yang dipesan MQTT untuk mengamati pembaruan pada aplikasi bayangan. Misalnya, jika Anda hanya berlangganan topik$ aws/hal/thingname
/shadow/update/accepted, Anda hanya akan melihat informasi status saat ini ketika pembaruan berhasil dilakukan.
Anda juga dapat berlangganan topik bayangan tambahan untuk men-debug masalah atau mempelajari lebih lanjut tentang interaksi Device Shadow dan juga men-debug masalah apa pun dengan interaksi Device Shadow. Untuk informasi selengkapnya, lihat Topik bayangan dan MQTTTopik Device Shadow.
Anda juga dapat memilih untuk memperluas aplikasi Anda dengan menggunakan bayangan bernama atau dengan menggunakan perangkat keras tambahan yang terhubung dengan Raspberry Pi untuk LED dan mengamati perubahan keadaan mereka menggunakan pesan yang dikirim dari terminal.
Untuk informasi selengkapnya tentang layanan Device Shadow dan menggunakan layanan di perangkat, aplikasi, dan layanan, lihatAWS IoT Layanan Device Shadow,Menggunakan bayangan di perangkat, danMenggunakan bayangan di aplikasi dan layanan.