Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Melaksanakan AWS.SendCommand operasi
AWS.SendCommandOperasi ini memungkinkan Integrasi Terkelola AWS IoT Device Management untuk mengirim perintah yang dimulai oleh pengguna akhir melalui AWS pelanggan ke server sumber daya Anda. Server sumber daya Anda dapat mendukung beberapa jenis perangkat, di mana setiap jenis memiliki model responsnya sendiri.
Eksekusi perintah adalah proses asinkron di mana Integrasi Terkelola untuk AWS IoT Device Management mengirim permintaan eksekusi perintah dengantraceId, yang akan disertakan konektor Anda dalam respons perintah yang dikirim kembali ke Integrasi Terkelola untuk melalui API. AWS IoT Device Management SendConnectorEvent Integrasi Terkelola untuk AWS IoT Device Management mengharapkan server sumber daya mengembalikan respons yang mengakui bahwa perintah telah diterima, tetapi tidak selalu menunjukkan bahwa perintah dijalankan.
Alur Kerja Eksekusi Perintah Perangkat
Diagram berikut menggambarkan alur eksekusi perintah dengan contoh di mana pengguna akhir mencoba menyalakan lampu rumah mereka:
Langkah Alur Kerja
-
Pengguna akhir mengirim perintah - Pengguna akhir mengirim perintah untuk menyalakan lampu menggunakan aplikasi AWS pelanggan.
-
Perintah relai pelanggan - Pelanggan menyampaikan informasi perintah ke Integrasi Terkelola AWS IoT Device Management dengan informasi perangkat pengguna akhir.
-
Integrasi terkelola menghasilkan TraceID - Integrasi Terkelola AWS IoT Device Management untuk menghasilkan “traceID” yang akan digunakan konektor Anda saat mengirim respons perintah kembali ke layanan.
-
Permintaan perintah dikirim ke konektor - Integrasi Terkelola untuk AWS IoT Device Management mengirim permintaan perintah ke konektor Anda, menggunakan antarmuka
AWS.SendCommandoperasi.-
Payload yang ditentukan oleh antarmuka ini terdiri dari pengenal perangkat, perintah perangkat yang dirumuskan sebagai Matter endpoints/clusters /perintah, token akses pengguna akhir, dan parameter lain yang diperlukan.
-
-
Connector menyimpan TraceID - Konektor Anda menyimpan
traceIduntuk dimasukkan dalam respons perintah.-
Konektor Anda menerjemahkan Integrasi Terkelola untuk permintaan AWS IoT Device Management perintah ke dalam format server sumber daya yang sesuai.
-
-
Konektor mendapat UserId - Konektor Anda mendapatkan
UserIddari token akses pengguna akhir yang disediakan dan mengaitkannya dengan perintah.-
UserIdDapat diambil dari server sumber daya Anda menggunakan panggilan terpisah atau diekstraksi dari token akses jika terjadi JWT dan token serupa. -
Implementasi tergantung pada server sumber daya dan detail token akses Anda.
-
-
Konektor memanggil server sumber daya - Konektor Anda memanggil server sumber daya ke lampu pengguna akhir “Aktifkan”.
-
Server sumber daya berinteraksi dengan perangkat - Server sumber daya berinteraksi dengan perangkat.
-
Konektor menyampaikan ke Integrasi Terkelola untuk AWS IoT Device Management server sumber daya telah mengirimkan perintah, merespons dengan ACK sebagai respons perintah awal yang sinkron.
-
Integrasi Terkelola untuk AWS IoT Device Management kemudian menyampaikannya kembali ke aplikasi pelanggan.
-
-
Perangkat mengeksekusi perintah - Setelah perangkat menyalakan lampu, peristiwa perangkat itu ditangkap oleh server sumber daya Anda.
-
Server sumber daya mengirimkan peristiwa perangkat - Server sumber daya Anda mengirimkan peristiwa perangkat ke konektor.
-
Konektor mengubah peristiwa - Konektor Anda mengubah peristiwa perangkat yang dihasilkan oleh server sumber daya menjadi Integrasi Terkelola untuk jenis operasi peristiwa AWS IoT Device Management DEVICE_COMMAND_RESPONSE.
-
Panggilan konektor SendConnectorEvent - Konektor Anda memanggil
SendConnectorEventAPI dengan operasi sebagai “DEVICE_COMMAND_RESPONSE”.-
Ini melampirkan yang
traceIddisediakan oleh Integrasi Terkelola untuk AWS IoT Device Management permintaan awal.
-
-
Integrasi terkelola memberi tahu pelanggan - Integrasi Terkelola untuk AWS IoT Device Management memberi tahu pelanggan tentang perubahan status perangkat pengguna akhir.
-
Pelanggan memberi tahu pengguna akhir - Pelanggan memberi tahu pengguna akhir bahwa lampu perangkat telah menyala.
catatan
Konfigurasi server sumber daya Anda menentukan logika untuk menangani permintaan perintah perangkat yang gagal dan pesan respons. Ini termasuk percobaan ulang pesan menggunakan referenceId yang sama untuk perintah.
Persyaratan konektor C2C untuk Eksekusi Perintah Perangkat
Daftar berikut menguraikan persyaratan untuk konektor C2C Anda untuk memfasilitasi eksekusi perintah perangkat yang berhasil.
-
Konektor C2C Lambda dapat memproses pesan permintaan
AWS.SendCommandoperasi dari integrasi terkelola untuk AWS IoT Device Management. -
Konektor C2C Anda harus melacak perintah yang dikirim ke server sumber daya Anda dan memetakannya dengan `traceID` yang sesuai.
-
Anda dapat memanggil integrasi terkelola untuk AWS IoT Device Management API layanan melalui SigV4 AWS menggunakan kredensyal Akun AWS yang digunakan untuk mendaftarkan konektor C2C.
Proses Eksekusi Perintah
Langkah 1: Integrasi Terkelola Mengirim Perintah ke Konektor
Kirim permintaan POST dengan salah satu muatan berikut, tergantung pada jenis otorisasi:
Permintaan OAuth 2.0:
/Send-Command { "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.SendCommand", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "connectorDeviceId": "Your_Device_Id", "traceId": "traceId-3241u78123419", "endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }] } }
Permintaan Otorisasi Umum:
/Send-Command { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.SendCommand", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "connectorDeviceId": "Your_Device_Id", "traceId": "traceId-3241u78123419", "endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3" } }] }] }] } }
Langkah 2: Perintah ACK Konektor C2C
{ "header":{ "responseCode":200 }, "payload":{ "responseMessage": "Successfully received send-command request for connector 'Your-Connector-Id' and connector-device-id 'Your_Device_Id'" } }
Langkah 3: Konektor Mengirim Peristiwa Respons Perintah Perangkat
AWS-API: /SendConnectorEvent URI: POST /connector-event/{Your-Connector-Id} { "UserId": "End-User-Id", "Operation": "DEVICE_COMMAND_RESPONSE", "OperationVersion": "1.0", "StatusCode": 200, "Message": “Example message”, "ConnectorDeviceId": "Your_Device_Id", "TraceId": "traceId-3241u78123419", "MatterEndpoint": { "id": "1", "clusters": [{ "id": "0x0202", "attributes": [ { "0x0000": “3” } ], "commands": [ "0xff01": { "0x0000": "3” } ] }] } }
catatan
Perubahan status perangkat sebagai akibat dari eksekusi perintah tidak akan tercermin dalam Integrasi Terkelola AWS IoT Device Management hingga peristiwa DEVICE_COMMAND_RESPONSE yang sesuai telah diterima melalui API. SendConnectorEvent Ini berarti bahwa hingga Integrasi Terkelola untuk AWS IoT Device Management menerima acara dari langkah 3 sebelumnya, terlepas dari apakah respons pemanggilan konektor Anda menunjukkan keberhasilan atau tidak, status perangkat tidak akan diperbarui.
penting
Jangan sertakan atribut dalam payload DEVICE_COMMAND_RESPONSE kecuali perangkat telah mengonfirmasi bahwa perubahan status benar-benar diterapkan. DEVICE_COMMAND_RESPONSE tanpa atribut berfungsi sebagai pengakuan bahwa perintah telah dikirim ke pihak ketiga, dan menghasilkan pemberitahuan DEVICE_COMMAND. Untuk melaporkan bahwa nilai atribut telah diperbarui pada perangkat, kirim DEVICE_EVENT terpisah dengan atribut yang diperbarui. Perbedaan ini mencegah positif palsu di mana perintah tampaknya berhasil tetapi perangkat tidak pernah menerima perubahan status, misalnya, ketika perangkat baru-baru ini terputus.
Menafsirkan materi 'titik akhir' termasuk dalam permintaan AWS.SendCommand
Integrasi Terkelola akan menggunakan kemampuan perangkat yang dilaporkan selama penemuan perangkat untuk menentukan perintah apa yang dapat diterima perangkat. Setiap kemampuan perangkat dimodelkan melalui AWS implementasi Model Data Matter; dengan demikian, semua perintah yang masuk akan diturunkan dari bidang `commands` dalam cluster tertentu. Adalah tanggung jawab konektor Anda untuk mengurai bidang `titik akhir`, menentukan perintah Matter yang sesuai, dan menerjemahkannya sedemikian rupa sehingga perintah yang benar mencapai perangkat. Biasanya, ini berarti menerjemahkan model data Matter ke dalam permintaan API terkait.
Setelah perintah dijalankan, konektor Anda kemudian menentukan `atribut` mana yang ditentukan oleh AWS implementasi Model Data Materi yang telah berubah sebagai hasilnya. Perubahan ini kemudian dilaporkan ke integrasi terkelola untuk AWS IoT Device Management melalui peristiwa API DEVICE_COMMAND_RESPONSE yang dikirim bersama API. SendConnectorEvent
Pertimbangkan bidang `endpoints` yang disertakan dalam contoh payload berikut: AWS.SendCommand
"endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }]
Dari objek ini, konektor dapat menentukan yang berikut:
-
Mengatur informasi endpoint dan cluster:
-
Atur titik akhir
idke “1".catatan
Jika perangkat mendefinisikan beberapa titik akhir sehingga satu cluster (seperti On/Off) dapat mengontrol beberapa kemampuan (yaitu menyalakan lampu on/off serta memutar strobo on/off), id ini digunakan untuk merutekan perintah ke kemampuan yang benar.
-
Atur cluster
idke “0x0202" (cluster Kontrol Kipas).
-
-
Mengatur informasi perintah:
-
Atur pengidentifikasi perintah ke “0xff01" (Perbarui perintah Status yang ditentukan oleh). AWS
-
Perbarui pengidentifikasi atribut yang disertakan dengan nilai yang disediakan dalam permintaan.
-
-
Perbarui atribut:
-
Setel pengenal atribut ke “0x0000" (FanMode atribut dari Fan Control Cluster).
-
Atur nilai atribut ke “3" (Kecepatan kipas tinggi).
-
Integrasi Terkelola telah mendefinisikan dua jenis perintah “kustom” yang tidak ditentukan secara ketat oleh AWS implementasi Model Data Materi: Perintah ReadState dan UpdateState . Untuk mendapatkan dan menyetel atribut cluster yang ditentukan Matter, Integrasi Terkelola akan mengirimkan AWS.SendCommand permintaan konektor Anda dengan ID perintah yang berkaitan dengan UpdateState (id: 0xff01) atau ReadState (id: 0xff02), dengan parameter atribut yang sesuai yang harus diperbarui atau dibaca. Perintah ini dapat dipanggil untuk jenis perangkat APAPUN untuk atribut yang disetel sebagai bisa berubah (dapat diperbarui) atau dapat diambil (dapat dibaca) dari implementasi Model Data Matter yang sesuai AWS .