View a markdown version of this page

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 pesan MQTT, metode yang disukai perangkat untuk berkomunikasi dengan layanan AWS IoT Device Shadow.

Komunikasi bayangan meniru request/response model menggunakan model publish/subscribe komunikasi 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 jika perangkat terhubung.

penting

Karena MQTT menggunakan model publish/subscribe komunikasi, Anda harus berlangganan topik respons sebelum Anda menerbitkan topik permintaan. Jika tidak, Anda mungkin tidak menerima tanggapan atas permintaan yang Anda publikasikan.

Jika Anda menggunakan AWS IoT Device SDK a untuk memanggil API layanan Device Shadow, ini ditangani untuk Anda.

Contoh-contoh di bagian ini menggunakan bentuk singkat dari topik di mana ShadowTopicPrefix dapat merujuk pada bayangan bernama atau tanpa nama, seperti yang dijelaskan dalam tabel ini.

Bayangan dapat diberi nama 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.

Nilai ShadowTopicPrefix Jenis bayangan
$aws/things/thingName/shadow Bayangan tanpa nama (klasik)
$aws/things/thingName/shadow/name/shadowName Dinamakan 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 ShadowTopicPrefix untuk jenis bayangan yang ingin Anda rujuk, ganti, dan shadowName jika berlakuthingName, dengan nilai-nilai yang sesuai, lalu tambahkan itu dengan stub topik seperti yang ditunjukkan pada tabel berikut. Ingatlah bahwa topik peka huruf besar/kecil.

Lihat Topik bayangan untuk informasi selengkapnya tentang topik yang dicadangkan untuk bayangan.

Menginisialisasi perangkat pada koneksi pertama ke AWS IoT

Setelah perangkat mendaftar AWS IoT, perangkat harus berlangganan pesan MQTT ini untuk bayangan yang didukungnya.

Topik Arti Tindakan yang harus diambil perangkat saat topik ini diterima

ShadowTopicPrefix/delete/accepted

Per delete mintaan diterima dan AWS IoT menghapus bayangan.

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

ShadowTopicPrefix/delete/rejected

Per delete mintaan ditolak oleh AWS IoT dan bayangan tidak dihapus. Badan pesan berisi informasi kesalahan.

Tanggapi pesan kesalahan di badan pesan.

ShadowTopicPrefix/get/accepted

Per get mintaan 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

Per get mintaan ditolak oleh AWS IoT, dan isi pesan berisi informasi kesalahan.

Tanggapi pesan kesalahan di badan pesan.

ShadowTopicPrefix/update/accepted

Per update mintaan 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

Per update mintaan ditolak oleh AWS IoT, dan isi pesan berisi informasi kesalahan.

Tanggapi pesan kesalahan di badan pesan.

ShadowTopicPrefix/update/delta

Dokumen bayangan diperbarui oleh permintaan ke AWS IoT, dan isi 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 sekarang Anda mempublikasikan /get permintaan pada topik yang dic $aws/things/My_IoT_Thing/shadow/get adangkan, itu mengembalikan kesalahan pada $aws/things/My_IoT_Thing/shadow/get/rejected topik karena benda itu tidak memiliki bayangan. Untuk mengatasi kesalahan ini, pertama 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 mempublikasikan ke topik$aws/things/My_IoT_Thing/shadow/get, itu 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 menerbitkan pembaruan dengan nama bayangan sebelum menggunakan permintaan get. Misalnya, untuk membuat bayangan bernamanamedShadow1, pertama 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/update/deltapesan dan harus menjaga status perangkat tetap sesuai dengan perubahan bayangannya dengan:

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

  2. Menerbitkan pesan /update dengan reported badan pesan yang memiliki status perangkat saat ini, setiap kali status perangkat berubah.

Saat perangkat terhubung, ia harus mempublikasikan pesan-pesan ini ketika ditunjukkan.

Indikasi Topik Payload

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 terhubung kembali ke AWS IoT

Ketika perangkat dengan satu atau lebih bayangan terhubung AWS IoT, ia harus menyinkronkan statusnya dengan semua bayangan yang didukungnya dengan:

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

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