Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konsep dan status perintah
Gunakan AWS IoT Perintah untuk mengirim instruksi dari cloud ke perangkat yang terhubung. Untuk menggunakan fitur ini:
-
Buat perintah dengan payload yang berisi konfigurasi yang diperlukan untuk dijalankan pada perangkat.
-
Tentukan perangkat target yang akan menerima muatan dan melakukan tindakan.
-
Jalankan perintah pada perangkat target dan mengambil informasi status. Untuk memecahkan masalah, lihat CloudWatch log.
Untuk informasi selengkapnya tentang alur kerja ini, lihatHigh-level alur kerja perintah.
Konsep kunci perintah
Konsep kunci berikut membantu Anda memahami fitur Perintah. Istilah digunakan secara konsisten di seluruh dokumentasi ini:
Command - Template yang dapat digunakan kembali mendefinisikan instruksi perangkat
Ek sekusi - Contoh perintah yang berjalan pada perangkat
Nama benda - Pengidentifikasi untuk perangkat yang terdaftar di registri IoT
ID Klien - Pengidentifikasi MQTT untuk perangkat yang tidak terdaftar
Payload - Data instruksi yang dikirim ke perangkat
Topik - Saluran MQTT untuk komunikasi perintah
- Commands
-
Perintah adalah instruksi yang dikirim dari cloud ke perangkat IoT Anda sebagai pesan MQTT. Setelah menerima muatan, perangkat memproses instruksi dan mengambil tindakan yang sesuai, seperti memodifikasi pengaturan konfigurasi, mengirimkan pembacaan sensor, atau mengunggah log. Perangkat kemudian mengembalikan hasil ke cloud, memungkinkan pemantauan dan kontrol jarak jauh.
- Namespace
-
Saat membuat perintah, tentukan namespace nya. Untuk AWS IoT Device Management perintah, gunakan
AWS-IoTnamespace default dan berikan payload atau payloadTemplate. Untuk AWS IoT FleetWise perintah, gunakanAWS-IoT-FleetWisenamespace. Untuk informasi selengkapnya, lihat Perintah jarak jauh di Panduan AWS IoT FleetWise Pengembang. - Muatan
-
Saat membuat perintah, berikan muatan statis yang menentukan tindakan yang harus dilakukan perangkat. Payload dapat menggunakan format yang didukung. Untuk memastikan perangkat menafsirkan muatan dengan benar, sebaiknya tentukan jenis format payload. Perangkat yang menggunakan protokol MQTT5 dapat mengikuti standar MQTT untuk mengidentifikasi format. Indikator format untuk JSON atau CBOR tersedia di topik permintaan perintah.
- Templat muatan
-
Template payload mendefinisikan payload perintah dengan placeholder yang menghasilkan muatan berbeda saat runtime berdasarkan nilai parameter yang Anda berikan. Misalnya, alih-alih membuat muatan terpisah untuk nilai suhu yang berbeda, buat satu templat dengan placeholder suhu dan tentukan nilainya selama eksekusi. Ini menghilangkan mempertahankan beberapa muatan serupa.
- Perangkat target
-
Untuk menjalankan perintah, tentukan perangkat target menggunakan nama benda (untuk perangkat yang terdaftar dengan AWS IoT) atau ID klien MQTT (untuk perangkat yang tidak terdaftar). ID klien adalah pengidentifikasi unik yang ditentukan dalam MQTT protokol yang digunakan untuk menghubungkan perangkat ke AWS IoT. Lihat perinciannya di Pertimbangan perangkat target.
- Topik perintah
-
Sebelum menjalankan perintah, perangkat harus berlangganan topik permintaan perintah. Saat Anda menjalankan perintah, muatan dikirim ke perangkat pada topik ini. Setelah eksekusi, perangkat mempublikasikan hasil dan status ke topik respons perintah. Untuk informasi selengkapnya, lihat Topik perintah.
- Eksekusi perintah
-
Eksekusi adalah contoh perintah yang berjalan pada perangkat target. Saat Anda memulai eksekusi, payload dikirim ke perangkat dan ID eksekusi unik dihasilkan. Perangkat mengeksekusi perintah dan melaporkan kemajuan ke AWS IoT. Device-side logika menentukan perilaku eksekusi dan pelaporan status ke topik yang dicadangkan.
Kondisi nilai parameter
Saat membuat perintah dengan templat payload, tentukan kondisi nilai untuk memvalidasi nilai parameter sebelum eksekusi. Kondisi nilai memastikan parameter memenuhi persyaratan, mencegah eksekusi yang tidak valid.
Operator yang didukung berdasarkan CommandParameterValue jenis
- Jenis numerik (INTEGER, PANJANG, DOUBLE, UNSIGNEDLONG)
-
EQUALS- Nilai harus sama dengan angka yang ditentukanNOT_EQUALS- Nilai tidak boleh sama dengan angka yang ditentukanGREATER_THAN- Nilai harus lebih besar dari angka yang ditentukanGREATER_THAN_EQUALS- Nilai harus lebih besar dari atau sama dengan angka yang ditentukanLESS_THAN- Nilai harus kurang dari angka yang ditentukanLESS_THAN_EQUALS- Nilai harus kurang dari atau sama dengan angka yang ditentukanIN_RANGE- Nilai harus dalam kisaran yang ditentukan (inklusif)NOT_IN_RANGE- Nilai harus di luar kisaran yang ditentukan (inklusif)IN_SET- Nilai harus cocok dengan salah satu angka yang ditentukanNOT_IN_SET- Nilai tidak boleh cocok dengan salah satu angka yang ditentukan
- Jenis string (STRING)
-
EQUALS- Nilai harus sama dengan string yang ditentukanNOT_EQUALS- Nilai tidak harus sama dengan string yang ditentukanIN_SET- Nilai harus cocok dengan salah satu string yang ditentukanNOT_IN_SET- Nilai tidak harus cocok dengan salah satu string yang ditentukan
- Tipe Boolean
-
Kondisi nilai tidak didukung
- Jenis biner
-
Kondisi nilai tidak didukung
Contoh: Perintah kontrol suhu
{ "commandId": "SetTemperature", "namespace": "AWS-IoT", "payloadTemplate": "{\"temperature\": \"${aws:iot:commandexecution::parameter:temperature}\"}", "parameters": [ { "name": "temperature", "type": "INTEGER", "valueConditions": [ { "comparisonOperator": "IN_RANGE", "operand": { "numberRange": { "min": "60", "max": "80" } } } ] } ] }
Dalam contoh ini, temperature parameter harus antara 60 dan 80 (inklusif). Permintaan eksekusi dengan nilai di luar rentang ini gagal validasi.
catatan
Kondisi nilai dievaluasi pada pemanggilan StartCommandExecution API. Validasi yang gagal mengembalikan kesalahan dan mencegah pembuatan eksekusi.
Prioritas dan evaluasi nilai parameter
Saat memulai eksekusi perintah dengan template payload, nilai parameter diselesaikan menggunakan prioritas berikut:
Parameter permintaan eksekusi - Nilai yang disediakan dalam
StartCommandExecutionpermintaan mengambil prioritas tertinggiNilai default perintah - Jika parameter tidak disediakan dalam permintaan eksekusi, parameter
defaultValuedigunakanTidak ada nilai - Jika tidak ada yang disediakan, eksekusi gagal sebagai parameter yang diperlukan untuk menghasilkan permintaan eksekusi
Kondisi nilai dievaluasi pada nilai parameter akhir yang diturunkan di atas pada prioritas dan sebelum pembuatan eksekusi. Jika validasi gagal, permintaan eksekusi mengembalikan kesalahan.
Contoh: SetTemperature perintah dengan defaultValue
{ "parameters": [ { "name": "temperature", "type": "INTEGER", "defaultValue": {"I": 72}, "valueConditions": [ { "comparisonOperator": "IN_RANGE", "operand": {"numberRange": {"min": "60", "max": "80"}} } ] } ] }
Saat memulai eksekusi:
Jika Anda memberikan
"temperature": {"I": 75}dalam permintaan, 75 digunakanJika Anda menghilangkan parameter suhu, nilai default 72 digunakan
Kedua nilai divalidasi terhadap kondisi rentang [60,80]
Status perintah
Perintah di Anda Akun AWS dapat berada di salah satu dari tiga status: Tersedia, Tidak digunakan lagi , atau Penundaan penghapusan.
- Available
-
Setelah pembuatan berhasil, perintah berada dalam status Tersedia dan dapat dieksekusi pada perangkat.
- Tidak digunakan lagi
-
Tandai perintah untuk penghentian saat tidak lagi diperlukan. Perintah yang tidak digunakan lagi tidak dapat memulai eksekusi baru, tetapi eksekusi yang tertunda terus selesai. Untuk mengaktifkan eksekusi baru, kembalikan perintah ke status Tersedia.
- Penghapusan tertunda
-
Saat Anda menandai perintah untuk dihapus, perintah tersebut akan dihapus secara otomatis jika tidak digunakan lagi lebih lama dari batas waktu maksimum (default: 12 jam). Tindakan ini permanen. Jika tidak usang atau tidak digunakan lagi selama kurang dari batas waktu, perintah masuk ke status Penghapusan Tertunda dan dihapus setelah batas waktu berakhir.
Status pelaksanaan perintah
Saat Anda memulai eksekusi pada perangkat target, perangkat tersebut memasuki CREATED status dan dapat beralih ke status lain berdasarkan laporan perangkat. Anda dapat mengambil informasi status dan melacak eksekusi.
catatan
Anda dapat menjalankan beberapa perintah secara bersamaan di perangkat. Gunakan kontrol konkurensi untuk membatasi eksekusi per perangkat dan mencegah kelebihan beban. Untuk eksekusi bersamaan maksimum per perangkat, lihat kuota AWS IoT Device Management perintah.
Tabel berikut menunjukkan status eksekusi dan transisinya berdasarkan kemajuan eksekusi.
| Status pelaksanaan perintah | Diprakarsai oleh device/cloud? | Eksekusi terminal? | Transisi status yang diizinkan |
|---|---|---|---|
CREATED |
Cloud | Tidak |
|
IN_PROGRESS |
Perangkat | Tidak |
|
TIMED_OUT |
Perangkat dan cloud | Tidak |
|
SUCCEEDED |
Perangkat | Ya | Tidak berlaku |
FAILED |
Perangkat | Ya | Tidak berlaku |
REJECTED |
Perangkat | Ya | Tidak berlaku |
Perangkat dapat mempublikasikan pembaruan status dan hasil kapan saja menggunakan perintah yang disediakan topik MQTT. Untuk memberikan konteks tambahan, perangkat dapat menggunakan reasonCode dan reasonDescription bidang dalam statusReason objek.
Diagram berikut menunjukkan transisi status eksekusi.
catatan
Ketika AWS IoT mendeteksi tidak ada respons perangkat dalam periode batas waktu, itu ditetapkan TIMED_OUT sebagai status sementara yang memungkinkan percobaan ulang dan perubahan status. Jika perangkat Anda secara eksplisit melaporkanTIMED_OUT, ini menjadi status terminal tanpa transisi lebih lanjut. Untuk informasi selengkapnya, lihat Non-terminal eksekusi perintah.
Bagian berikut menjelaskan eksekusi terminal dan non-terminal serta statusnya.
Non-terminal eksekusi perintah
Eksekusi adalah non-terminal jika dapat menerima pembaruan dari perangkat. Non-terminal Eksekusi dianggap aktif. Status berikut adalah non-terminal:
-
CREATED
Saat Anda memulai eksekusi dari AWS IoT konsol atau menggunakan
StartCommandExecutionAPI, permintaan yang berhasil mengubah status menjadiCREATED. Dari status ini, eksekusi dapat beralih ke status non-terminal atau terminal lainnya. -
IN_PROGRESS
Setelah menerima muatan, perangkat dapat mulai menjalankan instruksi dan melakukan tindakan tertentu. Saat mengeksekusi, perangkat dapat mempublikasikan tanggapan ke topik respons perintah dan memperbarui status ke
IN_PROGRESS. DariIN_PROGRESS, eksekusi dapat beralih ke terminal atau status non-terminal apa pun kecuali.CREATEDcatatan
UpdateCommandExecutionAPI dapat dipanggil beberapa kali denganIN_PROGRESSstatus. Tentukan detail eksekusi tambahan menggunakanstatusReasonobjek. -
TIMED_OUT
Baik cloud maupun perangkat dapat memicu status ini. Eksekusi dalam
CREATEDatauIN_PROGRESSstatus dapat berubah menjadiTIMED_OUTkarena alasan berikut:-
Setelah mengirim perintah, timer dimulai. Jika perangkat tidak merespons dalam durasi yang ditentukan, cloud berubah status menjadi
TIMED_OUT. Dalam hal ini, eksekusi non-terminal. -
Perangkat dapat mengganti status ke status terminal apa pun atau melaporkan batas waktu dan mengatur status ke.
TIMED_OUTDalam hal ini, status tetapTIMED_OUTada, tetapi bidangStatusReasonobjek berubah berdasarkan informasi perangkat. Eksekusi menjadi terminal.
Untuk informasi selengkapnya, lihat Nilai batas waktu dan status eksekusi TIMED_OUT.
-
Eksekusi perintah terminal
Eksekusi menjadi terminal ketika tidak lagi menerima pembaruan dari perangkat. Status berikut adalah terminal. Eksekusi dapat beralih ke status terminal dari status non-terminal apa pun:CREATED,, IN_PROGRESS atau. TIMED_OUT
-
SUCCEEDED
Jika perangkat berhasil menyelesaikan eksekusi, perangkat dapat mempublikasikan respons ke topik respons perintah dan memperbarui status ke
SUCCEEDED. -
FAILED
Ketika perangkat gagal menyelesaikan eksekusi, perangkat dapat mempublikasikan respons ke topik respons perintah dan memperbarui status ke
FAILED. GunakanreasonDescriptionbidangreasonCodedan distatusReasonobjek, atau CloudWatch log, untuk memecahkan masalah kegagalan. -
DITOLAK
Ketika perangkat menerima permintaan yang tidak valid atau tidak kompatibel, perangkat dapat memanggil
UpdateCommandExecutionAPI dengan statusREJECTED. GunakanreasonDescriptionbidangreasonCodedan distatusReasonobjek, atau CloudWatch log, untuk memecahkan masalah.