Konsep dan status perintah - AWS IoT Core

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:

  1. Pertama, buat sumber daya perintah dengan muatan yang berisi konfigurasi yang diperlukan untuk menjalankan perintah pada perangkat.

  2. Tentukan perangkat target yang akan menerima muatan dan melakukan tindakan yang ditentukan.

  3. 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 menggunakan AWS-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 dan sumber
Status eksekusi perintah Diprakarsai oleh perangkat/cloud? Eksekusi terminal? Transisi status yang diizinkan
CREATED Cloud Tidak
  • DI_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

IN_PROGRESS Perangkat Tidak
  • DI_ PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

TIMED_OUT Perangkat dan cloud Tidak
  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

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.

Gambar yang menunjukkan bagaimana transisi status eksekusi perintah antara berbagai status.

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 sebagaiIN_PROGRESS. Dari IN_PROGRESS status, eksekusi perintah dapat bertransisi ke status terminal atau non-terminal lain selain. CREATED

    catatan

    UpdateCommandExecutionAPIDapat dipanggil beberapa kali dengan status. IN_PROGRESS Anda dapat menentukan detail tambahan tentang eksekusi menggunakan statusReason objek.

  • TIMED_OUT

    Status eksekusi perintah ini dapat dipicu oleh cloud dan perangkat. Eksekusi dalam CREATED atau IN_PROGRESS status dapat berubah menjadi TIMED_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 menjadiTIMED_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 di TIMED_OUT tetapi bidang StatusReason 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 keSUCCEEDED.

  • FAILED

    Ketika perangkat Anda gagal menyelesaikan eksekusi perintah, perangkat dapat mempublikasikan respons terhadap topik respons perintah dan memperbarui status eksekusi perintah keFAILED. Anda dapat menggunakan reasonCode dan reasonDescription bidang statusReason 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 menggunakan reasonCode dan reasonDescription bidang statusReason objek, atau CloudWatch log, untuk memecahkan masalah lebih lanjut.