Menggunakan bayangan di perangkat - AWS IoT Core

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/thingName/shadow Bayangan tanpa nama (klasik)
$aws/things/thingName/shadow/name/shadowName 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 shadowName jika berlakuthingName, dengan nilai yang sesuai, lalu tambahkan dengan rintisan topik seperti yang ditunjukkan pada tabel berikut. ShadowTopicPrefix Ingatlah bahwa topik peka huruf besar/kecil.

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

ShadowTopicPrefix/delete/accepted

deletePermintaan itu diterima dan AWS IoT menghapus bayangan.

Tindakan yang diperlukan untuk mengakomodasi bayangan yang dihapus, seperti berhenti menerbitkan pembaruan.

ShadowTopicPrefix/delete/rejected

deletePermintaan ditolak oleh AWS IoT dan bayangan tidak dihapus. Badan pesan berisi informasi kesalahan.

Menanggapi pesan kesalahan di badan pesan.

ShadowTopicPrefix/get/accepted

getPermintaan diterima oleh AWS IoT, dan badan pesan berisi dokumen bayangan saat ini.

Tindakan yang diperlukan untuk memproses dokumen negara di badan pesan.

ShadowTopicPrefix/get/rejected

getPermintaan ditolak oleh AWS IoT, dan badan pesan berisi informasi kesalahan.

Menanggapi pesan kesalahan di badan pesan.

ShadowTopicPrefix/update/accepted

updatePermintaan diterima oleh AWS IoT, dan badan pesan berisi dokumen bayangan saat ini.

Konfirmasikan data yang diperbarui di badan pesan cocok dengan status perangkat.

ShadowTopicPrefix/update/rejected

updatePermintaan ditolak oleh AWS IoT, dan badan pesan berisi informasi kesalahan.

Menanggapi pesan kesalahan di badan pesan.

ShadowTopicPrefix/update/delta

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.

ShadowTopicPrefix/update/documents

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:

  1. Membaca semua pesan /update/delta yang diterima dan menyinkronkan status perangkat agar sesuai.

  2. 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.

ShadowTopicPrefix/update

Dokumen bayangan dengan reported properti.

Perangkat mungkin tidak disinkronkan dengan bayangan.

ShadowTopicPrefix/get

(kosong)

Tindakan pada perangkat menunjukkan bahwa bayangan tidak akan lagi didukung oleh perangkat, seperti saat perangkat dilepas atau diganti.

ShadowTopicPrefix/delete

(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:

  1. Membaca semua pesan /update/delta yang diterima dan menyinkronkan status perangkat agar sesuai.

  2. Menerbitkan pesan /update dengan badan reported pesan yang memiliki status perangkat saat ini.