AWS IoT Layanan Device Shadow - AWS IoT Core

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

AWS IoT Layanan Device Shadow

Layanan AWS IoT Device Shadow menambahkan bayangan ke objek AWS IoT benda. Bayangan dapat membuat status perangkat tersedia untuk aplikasi dan layanan lain apakah perangkat terhubung AWS IoT atau tidak. AWS IoT benda benda dapat memiliki beberapa bayangan bernama sehingga solusi IoT Anda memiliki lebih banyak opsi untuk menghubungkan perangkat Anda ke aplikasi dan layanan lain.

AWS IoT benda benda tidak memiliki bayangan sampai mereka dibuat secara eksplisit. Bayangan dapat dibuat, diperbarui, dan dihapus dengan menggunakan AWS IoT konsol. Perangkat, klien web lainnya, dan layanan dapat membuat, memperbarui, dan menghapus bayangan dengan menggunakan MQTT dan topik MQTT yang dicadangkan, HTTP menggunakan Device Shadow REST API, dan for. AWS CLIAWS IoT Karena bayangan disimpan oleh AWS di cloud, mereka dapat mengumpulkan dan melaporkan data status perangkat dari aplikasi dan layanan cloud lainnya apakah perangkat terhubung atau tidak.

Menggunakan bayangan

Shadows menyediakan penyimpanan data yang andal untuk perangkat, aplikasi, dan layanan cloud lainnya untuk berbagi data. Mereka memungkinkan perangkat, aplikasi, dan layanan cloud lainnya untuk terhubung dan memutuskan sambungan tanpa kehilangan status perangkat.

Sementara perangkat, aplikasi, dan layanan cloud lainnya terhubung AWS IoT, mereka dapat mengakses dan mengontrol keadaan perangkat saat ini melalui bayangannya. Misalnya, aplikasi dapat meminta perubahan dalam status perangkat dengan memperbarui bayangan. AWS IoT menerbitkan pesan yang menunjukkan perubahan pada perangkat. Perangkat menerima pesan ini, memperbarui statusnya agar cocok, dan menerbitkan pesan dengan statusnya yang diperbarui. Layanan Device Shadow mencerminkan status yang diperbarui ini dalam bayangan yang sesuai. Aplikasi ini dapat berlangganan pembaruan bayangan atau dapat menanyakan bayangan untuk statusnya saat ini.

Saat perangkat offline, aplikasi masih dapat berkomunikasi dengan AWS IoT dan bayangan perangkat. Ketika perangkat terhubung kembali, ia menerima keadaan bayangannya saat ini sehingga dapat memperbarui statusnya agar sesuai dengan bayangannya, dan kemudian menerbitkan pesan dengan status yang diperbarui. Demikian juga, ketika aplikasi offline dan status perangkat berubah saat offline, perangkat terus memperbarui bayangan sehingga aplikasi dapat menanyakan bayangan untuk statusnya saat ini saat terhubung kembali.

Jika perangkat Anda sering offline dan Anda ingin mengonfigurasi perangkat Anda untuk menerima pesan delta setelah terhubung kembali, Anda dapat menggunakan fitur sesi persisten. Untuk informasi lebih lanjut tentang periode kedaluwarsa sesi persisten, lihat Periode kedaluwarsa sesi persisten.

Memilih untuk menggunakan bayangan bernama atau tidak disebutkan namanya

Layanan Device Shadow mendukung bayangan bernama dan tidak disebutkan namanya, atau klasik. Objek benda dapat memiliki beberapa bayangan bernama, dan tidak lebih dari satu bayangan yang tidak disebutkan namanya. Objek benda juga dapat memiliki bayangan bernama cadangan, yang beroperasi mirip dengan bayangan bernama kecuali Anda tidak dapat memperbarui namanya. Untuk informasi selengkapnya, lihat Cadangan bernama bayangan.

Objek benda dapat memiliki bayangan bernama dan tidak disebutkan namanya secara bersamaan; namun, API yang digunakan untuk mengakses masing-masing sedikit berbeda, jadi mungkin lebih efisien untuk memutuskan jenis bayangan mana yang paling cocok untuk solusi Anda dan hanya menggunakan jenis itu. Untuk informasi selengkapnya tentang API untuk mengakses bayangan, lihatTopik bayangan.

Dengan bayangan bernama, Anda dapat membuat tampilan yang berbeda dari keadaan objek benda. Misalnya, Anda dapat membagi objek benda dengan banyak properti menjadi bayangan dengan kelompok properti logis, masing-masing diidentifikasi dengan nama bayangannya. Anda juga dapat membatasi akses ke properti dengan mengelompokkannya ke dalam bayangan yang berbeda dan menggunakan kebijakan untuk mengontrol akses. Untuk informasi selengkapnya tentang kebijakan yang akan digunakan dengan bayangan perangkat, lihat Tindakan, sumber daya, dan kunci kondisi untuk AWS IoT dan AWS IoT Core kebijakan.

Bayangan klasik yang tidak disebutkan namanya lebih sederhana, tetapi agak lebih terbatas daripada bayangan bernama. Setiap AWS IoT benda hanya dapat memiliki satu bayangan yang tidak disebutkan namanya. Jika Anda mengharapkan solusi IoT Anda memiliki kebutuhan terbatas untuk data bayangan, ini mungkin cara Anda ingin mulai menggunakan bayangan. Namun, jika Anda berpikir Anda mungkin ingin menambahkan bayangan tambahan di masa depan, pertimbangkan untuk menggunakan bayangan bernama sejak awal.

Pengindeksan armada mendukung bayangan yang tidak disebutkan namanya dan bayangan bernama berbeda. Untuk informasi selengkapnya, lihat Mengelola pengindeksan armada.

Mengakses bayangan

Setiap bayangan memiliki topik MQTT yang dicadangkan dan URL HTTP yang mendukungget,update, dan delete tindakan pada bayangan.

Bayangan menggunakan dokumen bayangan JSON untuk menyimpan dan mengambil data. Dokumen bayangan berisi properti state yang menjelaskan aspek-aspek status perangkat ini:

  • desired

    Aplikasi menentukan status properti perangkat yang diinginkan dengan memperbarui desired objek.

  • reported

    Perangkat melaporkan keadaan mereka saat ini di reported objek.

  • delta

    AWS IoT melaporkan perbedaan antara keadaan yang diinginkan dan yang dilaporkan dalam delta objek.

Data yang disimpan dalam bayangan ditentukan oleh properti status badan pesan tindakan pembaruan. Tindakan pembaruan selanjutnya dapat memodifikasi nilai objek data yang ada, dan juga menambahkan dan menghapus kunci dan elemen lain dalam objek status bayangan. Untuk informasi selengkapnya tentang mengakses bayangan, lihat Menggunakan bayangan di perangkat danMenggunakan bayangan di aplikasi dan layanan.

penting

Izin untuk membuat permintaan pembaruan harus dibatasi pada aplikasi dan perangkat tepercaya. Ini mencegah properti status bayangan diubah secara tidak terduga; jika tidak, perangkat dan aplikasi yang menggunakan bayangan harus dirancang untuk mengharapkan kunci di properti status berubah.

Menggunakan bayangan di perangkat, aplikasi, dan layanan cloud lainnya

Menggunakan bayangan di perangkat, aplikasi, dan layanan cloud lainnya membutuhkan konsistensi dan koordinasi di antara semua ini. Layanan AWS IoT Device Shadow menyimpan status bayangan, mengirim pesan saat status bayangan berubah, dan merespons pesan yang mengubah statusnya. Perangkat, aplikasi, dan layanan cloud lainnya dalam solusi IoT Anda harus mengelola statusnya dan menjaganya tetap konsisten dengan status bayangan perangkat.

Data status bayangan bersifat dinamis dan dapat diubah oleh perangkat, aplikasi, dan layanan cloud lainnya dengan izin untuk mengakses bayangan. Untuk alasan ini, penting untuk mempertimbangkan bagaimana setiap perangkat, aplikasi, dan layanan cloud lainnya akan berinteraksi dengan bayangan. Sebagai contoh:

  • Perangkat harus menulis hanya ke reported properti status bayangan saat mengkomunikasikan data status ke bayangan.

  • Aplikasi dan layanan cloud lainnya harus menulis hanya ke desired properti saat mengkomunikasikan permintaan perubahan status ke perangkat melalui bayangan.

penting

Data yang terkandung dalam objek data bayangan independen dari bayangan lain dan properti objek benda lain, seperti atribut benda dan konten pesan MQTT yang mungkin dipublikasikan oleh perangkat objek benda. Namun, perangkat dapat melaporkan data yang sama dalam topik dan bayangan MQTT yang berbeda jika perlu.

Perangkat yang mendukung banyak bayangan harus menjaga konsistensi data yang dilaporkan dalam bayangan yang berbeda.

Pesanan pesan

Tidak ada jaminan bahwa pesan dari AWS IoT layanan akan tiba di perangkat dalam urutan tertentu. Skenario berikut menunjukkan apa yang terjadi dalam kasus ini.

Dokumen negara awal:

{ "state": { "reported": { "color": "blue" } }, "version": 9, "timestamp": 123456776 }

Pembaruan 1:

{ "state": { "desired": { "color": "RED" } }, "version": 10, "timestamp": 123456777 }

Perbarui 2:

{ "state": { "desired": { "color": "GREEN" } }, "version": 11, "timestamp": 123456778 }

Dokumen negara bagian akhir:

{ "state": { "reported": { "color": "GREEN" } }, "version": 12, "timestamp": 123456779 }

Ini menghasilkan dua pesan delta:

{ "state": { "color": "RED" }, "version": 11, "timestamp": 123456778 }
{ "state": { "color": "GREEN" }, "version": 12, "timestamp": 123456779 }

Perangkat mungkin menerima pesan-pesan ini rusak. Karena status dalam pesan ini bersifat kumulatif, perangkat dapat dengan aman membuang pesan apa pun yang berisi nomor versi yang lebih lama dari yang dilacaknya. Jika perangkat menerima delta untuk versi 12 sebelum versi 11, perangkat dapat dengan aman membuang pesan versi 11.

Pangkas pesan bayangan

Untuk mengurangi ukuran pesan bayangan yang dikirim ke perangkat Anda, tentukan aturan yang hanya memilih bidang yang dibutuhkan perangkat Anda, lalu menerbitkan kembali pesan pada topik MQTT yang didengarkan perangkat Anda.

Aturan ditentukan dalam JSON dan akan terlihat seperti berikut:

{ "sql": "SELECT state, version FROM '$aws/things/+/shadow/update/delta'", "ruleDisabled": false, "actions": [ { "republish": { "topic": "${topic(3)}/delta", "roleArn": "arn:aws:iam:123456789012:role/my-iot-role" } } ] }

Pernyataan SELECT menentukan bidang mana dari pesan yang akan dipublikasikan ulang ke topik yang ditentukan. Kartu liar “+” digunakan untuk mencocokkan semua nama bayangan. Aturan menetapkan bahwa semua pesan yang cocok harus dipublikasikan ulang ke topik yang ditentukan. Dalam hal ini, "topic()" fungsi ini digunakan untuk menentukan topik yang akan diterbitkan ulang. topic(3)mengevaluasi nama benda dalam topik asli. Untuk informasi selengkapnya tentang membuat aturan, lihatAturan untuk AWS IoT.