Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan bayangan di perangkat
Bagian ini menjelaskan komunikasi perangkat dengan bayangan menggunakan MQTT pesan, metode yang disukai perangkat untuk berkomunikasi dengan layanan AWS IoT Device Shadow.
Komunikasi bayangan meniru model permintaan/respons menggunakan model komunikasi terbitkan/berlangganan. MQTT Setiap tindakan bayangan terdiri dari topik permintaan, topik respons yang berhasil (accepted
), dan topik respons kesalahan (rejected
).
Jika Anda ingin aplikasi dan layanan dapat menentukan apakah perangkat terhubung, lihatMendeteksi perangkat terhubung.
penting
Karena MQTT menggunakan model komunikasi terbitkan/berlangganan, Anda harus berlangganan topik respons sebelum mempublikasikan topik permintaan. Jika tidak, Anda mungkin tidak menerima tanggapan atas permintaan yang Anda publikasikan.
Jika Anda menggunakan AWS IoT Device SDKuntuk memanggil layanan Device ShadowAPIs, ini ditangani untuk Anda.
Contoh di bagian ini menggunakan bentuk singkat dari topik di mana ShadowTopicPrefix
dapat merujuk pada bayangan bernama atau tidak disebutkan namanya, seperti yang dijelaskan dalam tabel ini.
Bayangan dapat dinamai atau tidak disebutkan namanya (klasik). Topik yang digunakan oleh masing-masing hanya berbeda dalam awalan topik. Tabel ini menunjukkan awalan topik yang digunakan oleh setiap jenis bayangan.
ShadowTopicPrefix nilai |
Jenis bayangan |
---|---|
$aws/things/ |
Bayangan tanpa nama (klasik) |
$aws/things/ |
Bernama bayangan |
penting
Pastikan penggunaan bayangan aplikasi atau layanan Anda konsisten dan didukung oleh implementasi yang sesuai di perangkat Anda. Misalnya, pertimbangkan bagaimana bayangan dibuat, diperbarui, dan dihapus. Pertimbangkan juga bagaimana pembaruan ditangani di perangkat dan aplikasi atau layanan yang mengakses perangkat melalui bayangan. Desain Anda harus jelas tentang bagaimana status perangkat diperbarui dan dilaporkan serta bagaimana aplikasi dan layanan Anda berinteraksi dengan perangkat dan bayangannya.
Untuk membuat topik lengkap, pilih jenis bayangan yang ingin Anda rujuk, ganti, dan
jika berlakushadowName
, dengan nilai yang sesuai, lalu tambahkan dengan rintisan topik seperti yang ditunjukkan pada tabel berikut. thingName
Ingatlah bahwa topik peka huruf besar/kecil.ShadowTopicPrefix
Lihat Topik bayangan untuk informasi lebih lanjut tentang topik yang dicadangkan untuk bayangan.
Menginisialisasi perangkat pada koneksi pertama ke AWS IoT
Setelah perangkat mendaftar AWS IoT, perangkat harus berlangganan MQTT pesan-pesan ini untuk bayangan yang didukungnya.
Topik | Arti | Tindakan yang harus dilakukan perangkat saat topik ini diterima |
---|---|---|
|
|
Tindakan yang diperlukan untuk mengakomodasi bayangan yang dihapus, seperti berhenti menerbitkan pembaruan. |
|
|
Menanggapi pesan kesalahan di badan pesan. |
|
|
Tindakan yang diperlukan untuk memproses dokumen negara di badan pesan. |
|
|
Menanggapi pesan kesalahan di badan pesan. |
|
|
Konfirmasikan data yang diperbarui di badan pesan cocok dengan status perangkat. |
|
|
Menanggapi pesan kesalahan di badan pesan. |
|
Dokumen bayangan diperbarui oleh permintaan ke AWS IoT, dan badan pesan berisi perubahan yang diminta. |
Perbarui status perangkat agar sesuai dengan status yang diinginkan di badan pesan. |
|
Pembaruan bayangan baru-baru ini selesai, dan badan pesan berisi dokumen bayangan saat ini. |
Konfirmasikan status yang diperbarui di badan pesan cocok dengan status perangkat. |
Setelah berlangganan pesan di tabel sebelumnya untuk setiap bayangan, perangkat harus menguji untuk melihat apakah bayangan yang didukungnya telah dibuat dengan menerbitkan /get
topik ke setiap bayangan. Jika /get/accepted
pesan diterima, badan pesan berisi dokumen bayangan, yang dapat digunakan perangkat untuk menginisialisasi statusnya. Jika /get/rejected
pesan diterima, bayangan harus dibuat dengan menerbitkan /update
pesan dengan status perangkat saat ini.
Misalnya, Anda memiliki sesuatu My_IoT_Thing
yang tidak memiliki bayangan klasik atau bernama. Jika Anda sekarang mempublikasikan /get
permintaan pada topik yang dicadangkan$aws/things/My_IoT_Thing/shadow/get
, itu mengembalikan kesalahan pada $aws/things/My_IoT_Thing/shadow/get/rejected
topik karena benda tersebut tidak memiliki bayangan. Untuk mengatasi kesalahan ini, pertama-tama publikasikan /update
pesan dengan menggunakan $aws/things/My_IoT_Thing/shadow/update
topik dengan status perangkat saat ini seperti payload berikut.
{ "state": { "reported": { "welcome": "aws-iot", "color": "yellow" } } }
Bayangan klasik sekarang dibuat untuk benda itu dan pesan dipublikasikan ke $aws/things/My_IoT_Thing/shadow/update/accepted
topik. Jika Anda memublikasikan ke topik$aws/things/My_IoT_Thing/shadow/get
, ia mengembalikan respons ke $aws/things/My_IoT_Thing/shadow/get/accepted
topik dengan status perangkat.
Untuk bayangan bernama, Anda harus terlebih dahulu membuat bayangan bernama atau mempublikasikan pembaruan dengan nama bayangan sebelum menggunakan permintaan get. Misalnya, untuk membuat bayangan bernamanamedShadow1
, pertama-tama publikasikan informasi status perangkat ke topik$aws/things/My_IoT_Thing/shadow/name/namedShadow1/update
. Untuk mengambil informasi status, gunakan /get
permintaan untuk bayangan bernama,$aws/things/My_IoT_Thing/shadow/name/namedShadow1/get
.
Memproses pesan saat perangkat terhubung AWS IoT
Saat perangkat terhubung AWS IoT, perangkat dapat menerima pesan /update/delta dan harus menjaga status perangkat tetap sesuai dengan perubahan bayangannya dengan:
-
Membaca semua pesan /update/delta yang diterima dan menyinkronkan status perangkat agar sesuai.
-
Menerbitkan pesan /update dengan badan
reported
pesan yang memiliki status perangkat saat ini, setiap kali status perangkat berubah.
Saat perangkat terhubung, perangkat harus mempublikasikan pesan-pesan ini saat ditunjukkan.
Indikasi | Topik | Muatan |
---|---|---|
Status perangkat telah berubah. |
|
Dokumen bayangan dengan |
Perangkat mungkin tidak disinkronkan dengan bayangan. |
|
(kosong) |
Tindakan pada perangkat menunjukkan bahwa bayangan tidak akan lagi didukung oleh perangkat, seperti saat perangkat dilepas atau diganti. |
|
(kosong) |
Memproses pesan saat perangkat tersambung kembali AWS IoT
Ketika perangkat dengan satu atau lebih bayangan terhubung AWS IoT, itu harus menyinkronkan statusnya dengan semua bayangan yang didukungnya dengan:
-
Membaca semua pesan /update/delta yang diterima dan menyinkronkan status perangkat agar sesuai.
-
Menerbitkan pesan /update dengan badan
reported
pesan yang memiliki status perangkat saat ini.