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 dengan aplikasi shadow.py sampel, masukkan nilai di terminal untuk desired nilai tersebut. Misalnya, Anda dapat menentukan warna yang menyerupai lampu lalu lintas dan menang AWS IoT gapi permintaan dan memperbarui nilai yang dilaporkan.
Dalam tutorial ini, Anda akan belajar bagaimana:
-
Gunakan aplikasi
shadow.pysampel untuk menentukan status yang diinginkan dan memperbarui status bayangan saat ini. -
Edit dokumen Shadow untuk mengamati peristiwa delta dan bagaimana aplikasi
shadow.pysampel meresponsnya. -
Gunakan klien uji MQTT untuk berlangganan topik bayangan dan mengamati pembaruan saat Anda menjalankan program sampel.
Sebelum Anda menjalankan tutorial ini, Anda harus memiliki:
Siapkan Akun AWS, konfigurasikan perangkat Raspberry Pi Anda, dan buat AWS IoT sesuatu dan kebijakan. Anda juga harus menginstal perangkat lunak yang diperlukan, Device SDK, file sertifikat, dan menjalankan program sampel di terminal. Untuk informasi lebih lanjut, lihat tutorial sebelumnya Tutorial: Mempersiapkan Raspberry Pi Anda untuk menjalankan aplikasi bayangan danLangkah 1: Jalankan aplikasi sampel shadow.py. Anda harus menyelesaikan tutorial ini jika Anda belum melakukannya.
Dalam tutorial ini, Anda akan:
Tutorial ini membutuhkan waktu sekitar 45 menit untuk menyelesaikannya.
Langkah 1: Perbarui nilai yang diinginkan dan dilaporkan menggunakan aplikasi sampel shadow.py
Dalam tutorial sebelumnyaLangkah 1: Jalankan aplikasi sampel shadow.py, Anda belajar bagaimana mengamati pesan yang diterbitkan ke dokumen Shadow di AWS IoT konsol ketika Anda memasukkan nilai yang diinginkan seperti yang dijelaskan di bagianTutorial: Menginstal Device SDK dan menjalankan aplikasi sampel untuk Device Shadows.
Pada contoh sebelumnya, kami mengatur warna yang diinginkan keyellow. Setelah Anda memasukkan setiap nilai, terminal meminta Anda untuk memasukkan desired nilai lain. Jika Anda memasukkan kembali nilai yang sama (yellow), aplikasi mengenali ini dan meminta Anda untuk memasukkan desired nilai baru.
Enter desired value: yellow Local value is already 'yellow'. Enter desired value:
Sekarang, katakan bahwa Anda memasukkan warnagreen. AWS IoT menanggapi permintaan dan memperbarui reported nilai kegreen. Ini adalah bagaimana pembaruan terjadi ketika desired status berbeda dari reported negara bagian, menyebabkan delta.
Bagaimana contoh aplikasi shadow.py mensimulasikan interaksi Device Shadow:
-
Masukkan
desirednilai (katakanlahyellow) di terminal untuk mempublikasikan status yang diinginkan. -
Karena
desiredstatus berbeda darireportedstatus (katakanlah wargreennanya), delta terjadi, dan aplikasi yang berlangganan delta menerima pesan ini. -
Aplikasi merespons pesan dan memperbarui statusnya ke
desirednilai,yellow. -
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'.
Di AWS IoT konsol, dokumen Shadow mencerminkan nilai yang diperbarui green untuk kedua desired bidang reported dan, dan nomor versi bertambah dengan 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 saat Anda menerbitkan permintaan pembaruan atau membuat bayangan lain dengan nama yang sama.
Edit dokumen Shadow untuk mengamati peristiwa delta
Aplikasi shadow.py sampel juga berlangganan delta acara, dan merespons ketika ada perubahan desired nilai. Misalnya, Anda dapat mengubah desired nilai menjadi warnared. Untuk melakukan ini, di AWS IoT konsol, edit dokumen Shadow dengan mengklik Edit dan kemudian atur desired nilainya ke red dalam JSON, sambil mempertahankan nil reported ainya kegreen. Sebelum Anda menyimpan perubahan, biarkan 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, aplikasi shadow.py sampel merespons perubahan ini dan menampilkan pesan di terminal yang menunjukkan delta. Anda kemudian akan melihat pesan berikut muncul di bawah prompt untuk memasukkan desired 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: Lihat pesan dari aplikasi sampel shadow.py di klien uji MQTT
Anda dapat menggunakan klien uji MQTT di AWS IoT konsol untuk memantau pesan MQTT yang diteruskan di Anda. Akun AWS Dengan berlangganan topik MQTT cadangan 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 meninjaunya. Lihat pesan MQTT dengan AWS IoT Klien MQTT Ini membantu Anda mempelajari cara menggunakan klien uji MQTT di AWS IoT konsol untuk melihat pesan MQTT saat melewati broker pesan.
-
Buka klien uji MQTT
Buka klien uji MQTT di AWS IoT konsol
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 apa pun jika Anda membiarkannya pergi ke halaman lain di konsol. Untuk bagian tutorial ini, Anda dapat membuka dokumen Shadow dari AWS IoT benda Anda dan klien uji MQTT di jendela terpisah untuk lebih mudah mengamati interaksi dengan Device Shadows. -
Berlangganan topik Shadow yang dicadangkan MQTT
Anda dapat menggunakan klien uji MQTT untuk memasukkan nama topik cadangan MQTT Device Shadow dan berlangganan untuk menerima pembaruan saat menjalankan aplikasi
shadow.pysampel. Untuk berlangganan topik:Di klien uji MQTT di AWS IoT konsol, pilih Berlangganan topik.
Di bagian Filter Topik, masukkan: $aws/things/
thingname/shadow/update/#. Di sini,thingnameadalah nama sumber daya benda yang Anda buat sebelumnya (misalnya,My_light_bulb).Simpan nilai default untuk pengaturan konfigurasi tambahan, lalu pilih Ber langganan.
Dengan menggunakan # wildcard dalam langganan topik, Anda dapat berlangganan beberapa topik MQTT secara bersamaan dan mengamati semua pesan yang dipertukarkan antara perangkat dan Bayangannya dalam satu jendela. Untuk informasi selengkapnya tentang karakter wildcard dan penggunaannya, lihatTopik MQTT.
-
Jalan
kan programsampel shadow.py dan amati pesanDi jendela baris perintah Raspberry Pi Anda, jika Anda telah memutuskan program, jalankan aplikasi sampel lagi dan tonton pesan di klien uji MQTT di AWS IoT konsol.
-
Jalankan perintah berikut untuk memulai ulang program sampel. Ganti
your-iot-thing-namedanyour-iot-endpointdengan nama AWS IoT benda yang Anda buat sebelumnya (misalnya,My_light_bulb), dan titik akhir untuk berinteraksi dengan perangkat.cd ~/aws-iot-device-sdk-python-v2/samples/service-clients python3 shadow.py --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpointyour-iot-endpoint--thing_nameyour-iot-thing-nameAplikasi
shadow.pysampel kemudian berjalan dan mengambil status bayangan saat ini. Jika Anda telah menghapus bayangan atau menghapus status saat ini, program menetapkan nilai saat ini keoffdan kemudian meminta Anda untuk memasukkandesirednilai.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 sedang berjalan dan Anda memulai ulang, Anda akan melihat nilai warna terbaru yang dilaporkan di terminal. Di klien uji MQTT, Anda akan melihat pembaruan untuk topik $aws/things//shadow/getdan $
thingnameaws/thingsthingname/shadow/get//diterima.Misalkan warna terbaru yang dilaporkan adalah
green. Berikut ini menunjukkan isi file JSON $ aws/thingsthingnameshadow/get //diterima.{ "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
desirednilai di terminal, sepertiyellow. Aplikasishadow.pysampel merespons dan menampilkan pesan berikut di terminal yang menunjukkan perubahanreportednilai keyellow.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'.Di klien uji MQTT di AWS IoT konsol, di bawah Langganan, Anda melihat bahwa topik berikut menerima pesan:
-
$aws/things/
thingname/shadow/update: menunjukkan bahwa keduanyadesireddanupdatednilai berubah menjadi warnayellow. -
$aws/things/
thingname/shadow/update/: menunjukkan nilai status dan saat inidesiredsertareportedmetadata dan informasi versinya. -
$aws/things/
thingname/shadow/update/dokumen: menunjukkan nilai sebelumnya dan saat ini dari statusdesireddanreportedserta metadata dan informasi versinya.
Karena dokumen $ aws/things
thingname/shadow/update/dokumen juga berisi informasi yang terkandung dalam dua topik lainnya, kita dapat meninjaunya untuk melihat informasi status. Status sebelumnya menunjukkan nilai yang dilaporkan disetel kegreen, metadata dan informasi versinya, dan status saat ini yang menunjukkan nilai yang dilaporkan diperbarui keyellow.{ "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
desirednilai lain, Anda melihat perubahan lebih lanjut padareportednilai dan pembaruan pesan yang diterima oleh topik ini. Nomor versi juga bertambah 1. Misalnya, jika Anda memasukkan nilaigreen, status sebelumnya melaporkan nilaiyellowdan status saat ini melaporkan nilainyagreen.
-
-
Edit dokumen Shadow untuk mengamati peristiwa delta
Untuk mengamati perubahan pada topik delta, edit dokumen Shadow di AWS IoT konsol. Misalnya, Anda dapat mengubah
desirednilai menjadi warnared. Untuk melakukan ini, di AWS IoT konsol, pilih Edit dan kemudian aturdesirednilainya menjadi merah di JSON, sambil tetapreportedmengatur nilai kegreen. Sebelum Anda menyimpan perubahan, biarkan terminal tetap terbuka karena Anda akan melihat pesan delta dilaporkan di terminal.{ "desired": { "welcome": "aws-iot", "color": "red" }, "reported": { "welcome": "aws-iot", "color": "green" } }Aplikasi
shadow.pysampel merespons perubahan ini dan menampilkan pesan di terminal yang menunjukkan delta. Di klien uji MQTT,updatetopik akan menerima pesan yang menunjukkan perubahan padareportednilaidesireddan.Anda juga melihat bahwa topik $ aws/things
thingname/shadow/update//delta menerima pesan. Untuk melihat pesan, pilih topik ini, yang tercantum di bawah Lang ganan.{ "version": 13, "timestamp": 1617318480, "state": { "color": "red" }, "metadata": { "color": { "timestamp": 1617318480 } } }
Langkah 3: Memecahkan masalah kesalahan dengan interaksi Device Shadow
Saat menjalankan aplikasi sampel Shadow, Anda mungkin mengalami masalah dengan mengamati interaksi dengan layanan Device Shadow.
Jika program berjalan dengan sukses dan meminta Anda untuk memasukkan desired 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 interaksi, berikut adalah beberapa hal yang dapat Anda periksa:
-
Periksa nama benda dan bayangannya di AWS IoT konsol
Jika Anda tidak melihat pesan di dokumen Shadow, tinjau perintah dan pastikan itu cocok dengan nama benda di AWS IoT konsol. Anda juga dapat memeriksa apakah Anda memiliki bayangan klasik dengan memilih sumber daya barang Anda dan kemudian memilih Shadows. Tutorial ini berfokus terutama pada interaksi dengan bayangan klasik.
Anda juga dapat mengonfirmasi bahwa perangkat yang Anda gunakan terhubung ke internet. Di AWS IoT konsol, pilih hal yang Anda buat sebelumnya, lalu pilih Inter act. Pada halaman detail hal, Anda akan melihat pesan di sini yang mengatakan:
This thing already appears to be connected. -
Periksa topik cadangan MQTT yang Anda berlangganan
Jika Anda tidak melihat pesan muncul di klien uji MQTT, periksa apakah topik yang Anda berlangganan diformat dengan benar. Topik MQTT Device Shadow memiliki format $ aws/things
thingname//shadow/ dan mungkin memilikiupdate,get, atau mengikutdeleteinya tergantung pada tindakan yang ingin Anda lakukan pada bayangan. Tutorial ini menggunakan topik $aws/things/thingname/shadow/ # jadi pastikan Anda memasukkannya dengan benar saat berlangganan topik di bagian filter Topic dari klien uji.Saat Anda memasukkan nama topik, pastikan
thingnameitu sama dengan nama AWS IoT benda yang Anda buat sebelumnya. Anda juga dapat berlangganan topik MQTT tambahan untuk melihat apakah pembaruan telah berhasil dilakukan. Misalnya, Anda dapat berlangganan topik $ aws/thingsthingname/shadow/update/untuk menerima pesan setiap kali permintaan pembaruan gagal sehingga Anda dapat men-debug masalah koneksi. Untuk informasi lebih lanjut tentang topik yang dicadangkan, lihat Topik bayangan danTopik MQTT Bayangan Perangkat.
Langkah 4: Tinjau hasil dan langkah selanjutnya
Dalam tutorial ini, Anda belajar bagaimana untuk:
-
Gunakan aplikasi
shadow.pysampel untuk menentukan status yang diinginkan dan memperbarui status bayangan saat ini. -
Edit dokumen Shadow untuk mengamati peristiwa delta dan bagaimana aplikasi
shadow.pysampel meresponsnya. -
Gunakan klien uji MQTT untuk berlangganan topik bayangan dan mengamati pembaruan saat Anda menjalankan program sampel.
Langkah selanjutnya
Anda dapat berlangganan topik cadangan MQTT tambahan untuk mengamati pembaruan pada aplikasi bayangan. Misalnya, jika Anda hanya berlangganan topik $aws/things/thingname/shadow/update/, 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 Topik MQTT Bayangan Perangkat.
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 status mereka menggunakan pesan yang dikirim dari terminal.
Untuk informasi selengkapnya tentang layanan Device Shadow dan penggunaan layanan di perangkat, aplikasi, dan layanan, lihatAWS IoT Layanan Bayangan Perangkat,Menggunakan bayangan di perangkat, danMenggunakan bayangan di aplikasi dan layanan.