Menggunakan bayangan di aplikasi dan layanan - 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 aplikasi dan layanan

Bagian ini menjelaskan cara aplikasi atau layanan berinteraksi dengan layanan AWS IoT Device Shadow. Contoh ini mengasumsikan aplikasi atau layanan hanya berinteraksi dengan bayangan dan, melalui bayangan, perangkat. Contoh ini tidak menyertakan tindakan manajemen apa pun, seperti membuat atau menghapus bayangan.

Contoh ini menggunakan REST API layanan AWS IoT Device Shadow untuk berinteraksi dengan bayangan. Berbeda dengan contoh yang digunakan dalamMenggunakan bayangan di perangkat, yang menggunakan model komunikasi terbitkan/berlangganan, contoh ini menggunakan model komunikasi permintaan/respons dari REST API. Ini berarti aplikasi atau layanan harus membuat permintaan sebelum dapat menerima tanggapan dari AWS IoT. Kerugian dari model ini, bagaimanapun, adalah tidak mendukung notifikasi. Jika aplikasi atau layanan Anda memerlukan pemberitahuan perubahan status perangkat secara tepat waktu, pertimbangkan protokol MQTT atau MQTT melalui WSS, yang mendukung model komunikasi terbitkan/berlangganan, seperti yang dijelaskan dalam. Menggunakan bayangan di perangkat

penting

Pastikan penggunaan bayangan aplikasi atau layanan Anda konsisten dan didukung oleh implementasi yang sesuai di perangkat Anda. Pertimbangkan, misalnya, bagaimana bayangan dibuat, diperbarui, dan dihapus, dan bagaimana pembaruan ditangani di perangkat dan aplikasi atau layanan yang mengakses bayangan. Desain Anda harus secara jelas menentukan bagaimana status perangkat diperbarui dan dilaporkan, dan bagaimana aplikasi dan layanan Anda berinteraksi dengan perangkat dan bayangannya.

URL REST API untuk bayangan bernama adalah:

https://endpoint/things/thingName/shadow?name=shadowName

dan untuk bayangan yang tidak disebutkan namanya:

https://endpoint/things/thingName/shadow

di mana:

titik akhir

Titik akhir yang dikembalikan oleh perintah CLI:

aws iot describe-endpoint --endpoint-type IOT:Data-ATS
thingName

Nama benda benda yang menjadi milik bayangan

shadowName

Nama bayangan bernama. Parameter ini tidak digunakan dengan bayangan yang tidak disebutkan namanya.

Menginisialisasi aplikasi atau layanan pada koneksi ke AWS IoT

Ketika aplikasi pertama kali terhubung AWS IoT, itu harus mengirim permintaan HTTP GET ke URL bayangan yang digunakannya untuk mendapatkan status bayangan saat ini yang digunakannya. Ini memungkinkannya untuk menyinkronkan aplikasi atau layanan ke bayangan.

Status pemrosesan berubah saat aplikasi atau layanan terhubung AWS IoT

Saat aplikasi atau layanan terhubung AWS IoT, aplikasi dapat menanyakan status saat ini secara berkala dengan mengirimkan permintaan HTTP GET pada URL bayangan yang digunakannya.

Saat pengguna akhir berinteraksi dengan aplikasi atau layanan untuk mengubah status perangkat, aplikasi atau layanan dapat mengirim permintaan HTTP POST ke URL bayangan yang digunakan untuk memperbarui desired status bayangan. Permintaan ini mengembalikan perubahan yang diterima, tetapi Anda mungkin harus melakukan polling bayangan dengan membuat permintaan HTTP GET hingga perangkat memperbarui bayangan dengan status barunya.

Mendeteksi perangkat terhubung

Untuk menentukan apakah perangkat saat ini terhubung, sertakan connected properti dalam dokumen bayangan dan gunakan pesan MQTT Last Will and Testament (LWT) untuk menyetel connected properti false jika perangkat terputus karena kesalahan.

catatan

Pesan MQTT LWT yang dikirim ke topik yang AWS IoT dipesan (topik yang dimulai dengan $) diabaikan oleh layanan Device Shadow. AWS IoT Namun, mereka diproses oleh klien berlangganan dan oleh mesin AWS IoT aturan, jadi Anda perlu membuat pesan LWT yang dikirim ke topik yang tidak dipesan dan aturan yang menerbitkan kembali pesan MQTT LWT sebagai pesan pembaruan bayangan ke topik pembaruan bayangan yang dicadangkan,. ShadowTopicPrefix/update

Untuk mengirim pesan LWT ke layanan Device Shadow
  1. Buat aturan yang menerbitkan kembali pesan MQTT LWT pada topik yang dicadangkan. Contoh berikut adalah aturan yang mendengarkan pesan tentang my/things/myLightBulb/update topik tersebut dan menerbitkannya kembali. $aws/things/myLightBulb/shadow/update

    { "rule": { "ruleDisabled": false, "sql": "SELECT * FROM 'my/things/myLightBulb/update'", "description": "Turn my/things/ into $aws/things/", "actions": [ { "republish": { "topic": "$$aws/things/myLightBulb/shadow/update", "roleArn": "arn:aws:iam:123456789012:role/aws_iot_republish" } } ] } }
  2. Saat perangkat terhubung AWS IoT, perangkat akan mendaftarkan pesan LWT ke topik yang tidak dicadangkan agar aturan penerbitan ulang dapat dikenali. Dalam contoh ini, topik itu my/things/myLightBulb/update dan menetapkan properti yang terhubung kefalse.

    { "state": { "reported": { "connected":"false" } } }
  3. Setelah terhubung, perangkat menerbitkan pesan pada topik pembaruan bayangannya,$aws/things/myLightBulb/shadow/update, untuk melaporkan statusnya saat ini, yang mencakup pengaturan connected propertinyatrue.

    { "state": { "reported": { "connected":"true" } } }
  4. Sebelum perangkat terputus dengan anggun, ia menerbitkan pesan tentang topik pembaruan bayangannya,$aws/things/myLightBulb/shadow/update, untuk melaporkan status terbarunya, yang mencakup pengaturan propertinya. connected false

    { "state": { "reported": { "connected":"false" } } }
  5. Jika perangkat terputus karena kesalahan, broker AWS IoT pesan menerbitkan pesan LWT perangkat atas nama perangkat. Aturan republish mendeteksi pesan ini dan menerbitkan pesan pembaruan bayangan untuk memperbarui connected properti bayangan perangkat.