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 AWS IoT. Untuk menggunakan fitur perintah:
-
Pertama, buat sumber daya perintah dengan muatan yang berisi konfigurasi yang diperlukan untuk menjalankan perintah pada perangkat.
-
Tentukan perangkat target yang akan menerima muatan dan melakukan tindakan yang ditentukan.
-
Jalankan perintah pada perangkat target, dan ambil informasi status dari perangkat. Untuk memecahkan masalah apa pun, lihat log. CloudWatch
Untuk informasi selengkapnya tentang alur kerja ini, lihatAlur kerja perintah tingkat tinggi.
Perintah konsep kunci
Berikut ini menunjukkan beberapa konsep kunci untuk menggunakan fitur perintah.
- Commands
-
Perintah adalah instruksi yang dikirim dari cloud ke perangkat IoT Anda. Instruksi ini (payload perintah) dikirim ke perangkat sebagai MQTT pesan. Setelah perangkat menerima muatan perintah, mereka dapat memproses instruksi untuk mengambil tindakan yang sesuai. Contoh tindakan tersebut termasuk memodifikasi pengaturan konfigurasi perangkat, mentransmisikan pembacaan sensor, atau mengunggah log. Perangkat kemudian dapat menjalankan perintah dan mengembalikan hasilnya ke cloud. Ini memungkinkan Anda untuk memantau dan mengontrol perangkat yang terhubung dari jarak jauh.
- Namespace
-
Saat Anda menggunakan fitur perintah, Anda dapat menentukan namespace untuk perintah tersebut. Saat Anda ingin membuat perintah AWS IoT Device Management, Anda harus menggunakan
AWS-IoT
namespace default. Saat Anda menggunakan namespace ini, Anda harus memberikan payload saat membuat perintah. Payload akan digunakan saat Anda menjalankan perintah pada perangkat target Anda. Jika Anda ingin membuat perintah untuk AWS IoT FleetWise sebagai gantinya, Anda harus menggunakanAWS-IoT-FleetWise
namespace sebagai gantinya. Untuk informasi selengkapnya, lihat Perintah jarak jauh di panduan AWS IoT FleetWise pengembang untuk perintah. - Muatan
-
Saat Anda membuat perintah, Anda harus memberikan muatan yang menentukan tindakan yang harus dilakukan perangkat. Muatan dapat menggunakan format apa pun pilihan Anda. Untuk memastikan bahwa perangkat dapat membaca dan memahami informasi yang Anda kirim dengan benar, sebaiknya Anda menentukan jenis format payload dalam perintah. Jika perangkat Anda menggunakanMQTT5, mereka dapat mengikuti MQTT standar untuk mengidentifikasi format payload. Indikator format untuk JSON atau CBOR akan tersedia dalam topik permintaan perintah.
- Perangkat target
-
Ketika Anda ingin menjalankan perintah, Anda harus menentukan perangkat target yang akan menerima perintah dan melakukan tindakan. Jika perangkat Anda telah terdaftar sebagai benda dengan AWS IoT, Anda dapat menggunakan nama benda. Jika perangkat Anda belum terdaftar, Anda dapat menggunakan ID MQTT klien sebagai gantinya. ID klien adalah pengidentifikasi unik untuk perangkat atau klien Anda yang ditentukan dalam MQTT protokol. Ini dapat digunakan untuk menghubungkan perangkat Anda ke AWS IoT.
- Eksekusi perintah
-
Eksekusi perintah adalah instance dari perintah yang berjalan pada perangkat target. Saat Anda memulai eksekusi, perintah (payload) dikirim ke perangkat target. ID eksekusi perintah unik sekarang dihasilkan untuk target. Perangkat kemudian dapat menjalankan perintah dan melaporkan kemajuannya ke AWS IoT. Logika sisi perangkat menentukan bagaimana perintah akan dijalankan dan bagaimana status dipublikasikan ke topik yang dicadangkan.
- Topik perintah
-
Sebelum Anda menjalankan perintah, perangkat Anda harus berlangganan topik permintaan perintah. Saat Anda mengirim permintaan ke cloud untuk menjalankan perintah, muatan akan dikirim ke perangkat pada topik permintaan perintah. Setelah perangkat menjalankan perintah, ia dapat mempublikasikan hasil dan status eksekusi ke topik respons perintah. Untuk informasi selengkapnya, lihat Topik perintah.
Negara komando
Perintah yang Anda buat Akun AWS dapat berupa status penghapusan Tersedia, Usang, atau Tertunda.
- Available
-
Setelah Anda berhasil membuat sumber daya perintah, itu akan berada dalam keadaan yang tersedia. Perintah sekarang dapat digunakan untuk mengirim eksekusi perintah ke perangkat.
- Usang
-
Jika Anda tidak lagi berniat menggunakan perintah, Anda dapat menandainya untuk penghentian. Dalam keadaan ini, Anda tidak dapat mengirim eksekusi perintah baru ke perangkat Anda. Setiap eksekusi yang tertunda yang sudah dimulai akan terus berjalan di perangkat hingga selesai. Untuk mengirim eksekusi baru, Anda harus mengembalikan perintah agar tersedia.
- Penghapusan tertunda
-
Ketika Anda menandai perintah untuk penghapusan, jika perintah telah usang untuk durasi yang lebih lama dari batas waktu maksimum, perintah akan dihapus secara otomatis. Tindakan ini bersifat permanen dan tidak dapat dibatalkan. Secara default, durasi batas waktu maksimum adalah 12 jam. Jika perintah tidak digunakan lagi, atau tidak digunakan lagi untuk durasi yang lebih pendek dari batas waktu maksimum, perintah akan berada dalam status penghapusan tertunda. Perintah akan dihapus secara otomatis dari akun Anda setelah durasi batas waktu maksimum.
Status eksekusi perintah
Ketika Anda memulai eksekusi perintah pada perangkat target, eksekusi perintah memasuki CREATED
status. Kemudian dapat beralih ke salah satu status eksekusi perintah lainnya tergantung pada status yang dilaporkan oleh perangkat. Anda kemudian dapat mengambil informasi status dan melacak eksekusi perintah Anda.
catatan
Untuk perangkat target tertentu, Anda dapat menjalankan beberapa perintah secara bersamaan. Anda dapat menggunakan fitur kontrol konkurensi untuk membatasi jumlah maksimum eksekusi yang dikirim ke perangkat yang sama, yang mencegah perangkat kelebihan beban. Untuk informasi tentang jumlah maksimum eksekusi bersamaan yang dapat Anda jalankan untuk setiap perangkat, lihat AWS IoT Device Management perintah kuota.
Tabel berikut menunjukkan status yang berbeda dari eksekusi perintah dan bagaimana transisi eksekusi perintah antara berbagai status tergantung pada kemajuan eksekusi.
Status eksekusi perintah | Diprakarsai oleh perangkat/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 |
Saat perangkat Anda menjalankan perintah, itu dapat mempublikasikan pembaruan ke status dan hasilnya kapan saja ke cloud menggunakan MQTT topik perintah yang dicadangkan. Untuk memberikan konteks tambahan tentang status setiap eksekusi perintah ke cloud, ia dapat menggunakan reasonCode
dan reasonDescription
yang terkandung dalam statusReason
objek.
Diagram berikut menunjukkan berbagai status eksekusi perintah dan bagaimana transisi terjadi di antara mereka.

Bagian berikut menjelaskan eksekusi perintah terminal dan non-terminal, berbagai status eksekusi, dan cara kerjanya.
Eksekusi perintah non-terminal
Eksekusi perintah Anda adalah non-terminal jika eksekusi dapat menerima pembaruan dari perangkat atau klien. Eksekusi dalam status non-terminal dianggap Aktif. Status berikut adalah non-terminal.
-
CREATED
Saat Anda memulai eksekusi perintah dari AWS IoT konsol, atau gunakan
StartCommandExecution
API untuk mengirim perintah ke perangkat Anda menggunakan topik permintaan perintah. Jika permintaan berhasil, status eksekusi perintah berubah menjadiCREATED
. Dari status ini, eksekusi perintah dapat beralih ke status non-terminal atau terminal lainnya. -
DI_ PROGRESS
Setelah menerima payload perintah, perangkat Anda dapat mulai menjalankan instruksi di payload dan melakukan tindakan yang ditentukan. Saat menjalankan perintah, perangkat dapat mempublikasikan respons terhadap topik respons perintah dan memperbarui status eksekusi perintah sebagai
IN_PROGRESS
. DariIN_PROGRESS
status, eksekusi perintah dapat bertransisi ke status terminal atau non-terminal lain selain.CREATED
catatan
UpdateCommandExecution
APIDapat dipanggil beberapa kali dengan status.IN_PROGRESS
Anda dapat menentukan detail tambahan tentang eksekusi menggunakanstatusReason
objek. -
TIMED_OUT
Status eksekusi perintah ini dapat dipicu oleh cloud dan perangkat. Eksekusi dalam
CREATED
atauIN_PROGRESS
status dapat berubah menjadiTIMED_OUT
status karena alasan berikut.-
Setelah perintah dikirim ke perangkat, timer dimulai. Jika tidak ada respons dari perangkat dalam durasi tertentu, cloud mengubah status eksekusi perintah menjadi
TIMED_OUT
. Dalam hal ini, eksekusi perintah adalah non-terminal. -
Perangkat dapat mengganti status ke status terminal lainnya, atau melaporkan bahwa waktu habis terjadi saat menjalankan perintah, dan menyetel statusnya ke.
TIMED_OUT
Dalam hal ini, status eksekusi tetap diTIMED_OUT
tetapi bidangStatusReason
objek berubah tergantung pada informasi yang dilaporkan oleh perangkat. Eksekusi perintah sekarang menjadi terminal.
Untuk informasi selengkapnya, lihat Nilai waktu habis dan status TIMED_OUT eksekusi.
-
Eksekusi perintah terminal
Eksekusi perintah menjadi terminal jika eksekusi tidak lagi menerima pembaruan tambahan dari perangkat. Status berikut adalah terminal. Eksekusi dapat bertransisi ke status terminal dari salah satu status non-terminal,,CREATED
, IN_PROGRESS
atau. TIMED_OUT
-
SUCCEEDED
Jika perangkat berhasil menyelesaikan menjalankan perintah, perangkat dapat mempublikasikan respons terhadap topik respons perintah dan memperbarui status eksekusi perintah ke
SUCCEEDED
. -
FAILED
Ketika perangkat Anda gagal menyelesaikan eksekusi perintah, perangkat dapat mempublikasikan respons terhadap topik respons perintah dan memperbarui status eksekusi perintah ke
FAILED
. Anda dapat menggunakanreasonCode
danreasonDescription
bidangstatusReason
objek, atau CloudWatch log, untuk memecahkan masalah kegagalan lebih lanjut. -
REJECTED
Ketika perangkat Anda menerima permintaan yang tidak valid atau tidak kompatibel, perangkat dapat memanggil
UpdateCommandExecution
API dengan status.REJECTED
Anda dapat menggunakanreasonCode
danreasonDescription
bidangstatusReason
objek, atau CloudWatch log, untuk memecahkan masalah lebih lanjut.