Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memulai dan memantau pelaksanaan perintah
Setelah membuat Perintah, mulai Eksekusi pada perangkat target. Perangkat memperbarui hasil dan menerbitkan status ke Topik cadangan MQTT. Ambil dan pantau status Eksekusi dari akun Anda.
Mulai dan pantau Perintah menggunakan AWS IoT konsol atau AWS CLI.
Mulai dan pantau operasi perintah
Mulai eksekusi perintah
penting
Anda bertanggung jawab penuh untuk menerapkan perintah dengan cara yang aman dan sesuai dengan hukum yang berlaku.
Sebelum memulai Eksekusi, pastikan:
-
Anda membuat Perintah di AWS IoT namespace dengan informasi Payload. Saat memulai Eksekusi, perangkat memproses instruksi Payload dan melakukan tindakan tertentu. Lihat Buat sumber daya perintah untuk pembuatan perintah.
-
Perangkat Anda berlangganan Topik cadangan MQTT untuk Perintah. Saat memulai Eksekusi, informasi Payload dipublikasikan ke Topik permintaan MQTT yang dicadangkan ini:
<devices>bisa menjadi klien Things atau MQTT.<DeviceID>adalah nama benda atau ID klien. Nilai<PayloadFormat>yang didukung: JSON dan CBOR. Untuk informasi selengkapnya, lihat Topik perintah.$aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat>Untuk non- JSON/CBOR
<PayloadFormat>, gunakan format Topik Perintah ini:$aws/commands/<devices>/<DeviceID>/executions/+/request
Tentukan perangkat target untuk menerima dan menjalankan Perintah. Gunakan nama Thing untuk perangkat terdaftar atau ID Klien untuk perangkat yang tidak terdaftar. Setelah menerima Payload, perangkat mengeksekusi Perintah dan melakukan tindakan tertentu.
AWS IoT hal
Perangkat target dapat berupa hal-hal yang terdaftar di AWS IoT registri. Hal-hal menyederhanakan pencarian dan manajemen perangkat.
Daftarkan perangkat sebagai Things dari halaman Hubungkan perangkat CreateThing. Temukan Hal-hal yang ada dari Thing Hub DescribeThing. Lihat Mengelola hal-hal dengan registri untuk detail pendaftaran.
ID klien
Untuk perangkat yang tidak terdaftar, gunakan ID Klien.
ID Klien adalah pengenal unik yang Anda tetapkan ke perangkat. Ditetapkan dalam protokol MQTT, berisi karakter alfanumerik, garis bawah, atau tanda hubung. Setiap perangkat yang terhubung AWS IoT memerlukan ID Klien yang unik.
catatan
-
Untuk Barang terdaftar, ID Klien dapat cocok dengan nama Thing.
-
Saat menargetkan ID Klien tertentu, perangkat harus terhubung AWS IoT menggunakan ID Klien tersebut untuk menerima Payload.
ID Klien adalah ID klien MQTT yang digunakan perangkat saat menghubungkan ke AWS IoT Core. AWS IoT menggunakan ID ini untuk mengidentifikasi perangkat dan mengelola koneksi dan langganan.
Batas waktu menentukan durasi (dalam detik) untuk perangkat untuk memberikan hasil Eksekusi.
Setelah membuat Eksekusi, timer dimulai. Jika perangkat offline atau gagal melaporkan hasil dalam batas waktu, waktu Eksekusi habis dengan statusTIMED_OUT.
Default: 10 detik. Maksimal: 12 jam.
Nilai batas waktu dan status eksekusi TIMED_OUT
Baik cloud maupun perangkat dapat melaporkan batas waktu.
Setelah mengirim Perintah, timer dimulai. Jika tidak ada respons perangkat yang tiba dalam batas waktu, cloud menetapkan status Eksekusi ke TIMED_OUT dengan kode $NO_RESPONSE_FROM_DEVICE alasan.
Ini terjadi ketika:
-
Perangkat menjadi offline selama Eksekusi.
-
Perangkat gagal menyelesaikan Eksekusi dalam batas waktu.
-
Perangkat gagal melaporkan status dalam batas waktu.
Dalam hal ini, ketika status eksekusi dilaporkan dari cloud, eksekusi perintah adalah non-terminal. TIMED_OUT Perangkat Anda dapat mempublikasikan respons yang mengganti status ke salah satu status terminal:SUCCEEDED,FAILED, atau. REJECTED Eksekusi perintah kemudian menjadi terminal dan tidak menerima pembaruan lebih lanjut.
Perangkat Anda juga dapat memperbarui TIMED_OUT status yang diprakarsai oleh cloud dengan melaporkan bahwa batas waktu terjadi saat menjalankan perintah. Dalam hal ini, status eksekusi perintah tetap diTIMED_OUT, tetapi statusReason objek diperbarui berdasarkan informasi yang dilaporkan oleh perangkat. Eksekusi perintah kemudian menjadi terminal, dan tidak ada pembaruan lebih lanjut yang diterima.
Menggunakan sesi persisten MQTT
Anda dapat mengonfigurasi sesi persisten MQTT untuk digunakan dengan fitur AWS IoT Device Management perintah. Fitur ini sangat berguna dalam kasus-kasus seperti ketika perangkat Anda offline dan Anda ingin memastikan bahwa perangkat masih menerima perintah ketika kembali online sebelum durasi batas waktu, dan melakukan instruksi yang ditentukan.
Secara default, kedaluwarsa sesi persisten MQTT diatur ke 60 menit. Jika batas waktu eksekusi perintah Anda dikonfigurasi ke nilai yang melebihi durasi ini, eksekusi perintah yang berjalan lebih dari 60 menit dapat ditolak oleh broker pesan dan gagal. Untuk menjalankan perintah yang durasinya lebih dari 60 menit, Anda dapat meminta peningkatan waktu kedaluwarsa sesi persisten.
catatan
Untuk memastikan bahwa Anda menggunakan fitur sesi persisten MQTT dengan benar, atur tanda Clean Start ke nol. Untuk informasi selengkapnya, lihat Sesi persisten MQTT.
Untuk mulai menjalankan perintah dari konsol, buka halaman
-
Untuk menjalankan perintah yang telah Anda buat, pilih Run command.
-
Tinjau informasi tentang perintah yang Anda buat, termasuk topik cadangan MQTT, dan parameter, jika berlaku.
Untuk perintah dinamis, masukkan nilai parameter atau biarkan dengan default. Untuk parameter yang tidak memiliki nilai default, Anda harus memberikan nilai yang akan dikirim sebagai bagian dari eksekusi ini.
-
Tentukan perangkat target untuk menerima dan menjalankan Perintah. Perangkat dapat ditentukan sebagai AWS IoT sesuatu jika telah terdaftar AWS IoT, atau menggunakan ID klien jika perangkat Anda belum terdaftar. Untuk informasi selengkapnya, lihat Pertimbangan perangkat target
-
(Opsional) Konfigurasikan nilai batas waktu untuk perintah yang menentukan durasi yang Anda inginkan untuk menjalankan perintah sebelum waktunya habis. Jika perintah Anda perlu berjalan lebih dari 60 menit, Anda mungkin harus meningkatkan waktu kedaluwarsa sesi persisten MQTT. Untuk informasi selengkapnya, lihat Pertimbangan batas waktu eksekusi perintah.
-
Pilih Jalankan perintah.
Gunakan operasi API bidang data StartCommandExecution HTTP untuk memulai eksekusi perintah. Permintaan dan respons API dikorelasikan oleh ID eksekusi perintah. Setelah perangkat selesai menjalankan perintah, perangkat dapat melaporkan status dan hasil eksekusi ke cloud dengan menerbitkan pesan ke topik respons perintah. Untuk kode respons khusus, kode aplikasi yang Anda miliki dapat memproses pesan respons dan memposting hasilnya ke AWS IoT.
Jika perangkat Anda telah berlangganan topik permintaan perintah, StartCommandExecution API akan menerbitkan pesan payload ke topik tersebut. Payload dapat menggunakan format apa pun pilihan Anda. Untuk informasi selengkapnya, lihat Muatan perintah.
$aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat>
Jika format payload bukan JSON atau CBOR, berikut ini menunjukkan format topik permintaan perintah.
$aws/commands/<devices>/<DeviceID>/executions/+/request
Contoh kebijakan IAM
Sebelum Anda menggunakan operasi API ini, pastikan kebijakan IAM memberi wewenang kepada Anda untuk melakukan tindakan ini di perangkat. Contoh berikut menunjukkan kebijakan IAM yang memungkinkan izin pengguna untuk melakukan StartCommandExecution tindakan.
Dalam contoh ini, ganti:
-
dengan Anda Wilayah AWS, sepertiregionus-east-1. -
dengan Akun AWS nomor Anda, sepertiaccount-id.123456789012 -
dengan pengenal unik untuk AWS IoT perintah Anda, seperticommand-id. Jika Anda ingin mengirim lebih dari satu perintah, Anda dapat menentukan perintah ini dalam kebijakan IAM.LockDoor -
dengan salahdevicesthingsatu atauclienttergantung pada apakah perangkat Anda telah terdaftar sebagai AWS IoT sesuatu, atau ditentukan sebagai klien MQTT. -
dengan AWS IoTdevice-idthing-nameatau Andaclient-id.
{ "Effect": "Allow", "Action": [ "iot:StartCommandExecution" ], "Resource": [ "arn:aws:iot:region:account-id:command/command-id", "arn:aws:iot:region:account-id:devices/device-id" ] }
Untuk melihat daftar kunci kondisi yang didukungStartCommandExecution, lihat K unci Kondisi untuk AWS IoT di Panduan Pengguna IAM.
Dapatkan titik akhir bidang data khusus akun
Sebelum menjalankan perintah API, Anda harus mendapatkan URL titik akhir khusus akun untuk titik akhir. Jika Anda menggunakan titik akhir dual-stack (IPv4 dan IPv6), gunakan. iot:Data-ATS iot:JobsEndpoint hanya untuk IPv4. Misalnya, jika Anda menjalankan perintah ini:
aws iot describe-endpoint --endpoint-type iot:Data-ATS
Ini mengembalikan URL titik akhir khusus akun seperti yang ditunjukkan pada respons sampel di bawah ini.
{ "endpointAddress": "<account-specific-prefix>-ats.iot.<region>.api.com" }
Mulai contoh eksekusi perintah (AWS CLI)
Contoh berikut menampilkan cara mulai menjalankan perintah menggunakan start-command-execution AWS CLI perintah.
Dalam contoh ini, ganti:
-
dengan ARN untuk perintah yang ingin Anda jalankan. Anda dapat memperoleh informasi ini dari respons perintah<command-arn>create-commandCLI. Misalnya, jika Anda menjalankan perintah untuk mengubah mode roda kemudi, gunakanarn:aws:iot:.region:account-id:command/SetComfortSteeringMode -
dengan Thing ARN untuk perangkat target, yang dapat berupa benda IoT atau klien MQTT, yang ingin Anda jalankan perintahnya. Misalnya, jika Anda menjalankan perintah untuk perangkat target<target-arn>myRegisteredThing, gunakanarn:aws:iot:.region:account-id:thing/myRegisteredThing -
dengan titik akhir khusus akun yang Anda perolehDapatkan titik akhir bidang data khusus akun, diawali dengan.<endpoint-url>https://Misalnya,https://.123456789012abcd.jobs.iot.us-east-1.amazonaws.com -
(Opsional) Anda juga dapat menentukan parameter tambahan
executionTimeoutSeconds,, saat melakukan operasiStartCommandExecutionAPI. Bidang opsional ini menentukan waktu dalam detik di mana perangkat harus menyelesaikan menjalankan perintah. Secara default, nilainya adalah 10 detik. Ketika status eksekusi perintah adalahCREATED, timer dimulai. Jika hasil eksekusi perintah tidak diterima sebelum timer berakhir, maka status secara otomatis berubah menjadiTIMED_OUT. -
aws iot-jobs-data start-command-execution \ --command-arn<command-arn>\ --target-arn<target-arn>\ --endpoint<endpoint-url>\ --execution-timeout-seconds900 -
(Opsional) Untuk perintah dinamis, tentukan parameter dan nilainya yang akan digunakan untuk substitusi. Anda harus memberikan nilai untuk parameter yang tidak memiliki DefaultValue ditetapkan pada pembuatan perintah. Jika parameter memiliki DefaultValue, nilai parameter yang diberikan di sini diutamakan. Untuk parameter yang memiliki ValueConditions ditetapkan, nilai parameter yang disediakan di sini harus memenuhi kondisi.
Berdasarkan contoh perintah
Light_Power_Statusdinamis: -
aws iot-jobs-data start-command-execution \ --command-arnarn:aws:iot:us-east-1:123456789012:command/Light_Power_Status\ --target-arnarn:aws:iot:us-east-1:123456789012:thing/exampleThing\ --endpoint<endpoint-url>\ --execution-timeout-seconds900\ --parameters"powerStatus={S=ON}"
Menjalankan perintah ini mengembalikan ID eksekusi perintah. Anda dapat menggunakan ID ini untuk menanyakan status eksekusi perintah, detail, dan riwayat eksekusi perintah.
catatan
Jika perintah telah usang, maka permintaan StartCommandExecution API akan gagal dengan pengecualian validasi. Untuk memperbaiki kesalahan ini, pertama-tama pulihkan perintah menggunakan UpdateCommand API, lalu lakukan StartCommandExecution permintaan.
{ "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542" }
Memperbarui hasil pelaksanaan perintah
Gunakan operasi API UpdateCommandExecution bidang data MQTT untuk memperbarui status atau hasil eksekusi perintah.
catatan
Sebelum Anda menggunakan API ini:
-
Perangkat Anda harus telah membuat koneksi MQTT dan berlangganan permintaan perintah dan topik respons. Untuk informasi selengkapnya, lihat High-level alur kerja perintah.
-
Anda harus sudah menjalankan perintah ini menggunakan operasi
StartCommandExecutionAPI.
Sebelum Anda menggunakan operasi API ini, pastikan kebijakan IAM Anda mengizinkan perangkat Anda untuk melakukan tindakan ini. Berikut ini menunjukkan contoh kebijakan yang mengizinkan perangkat Anda untuk melakukan tindakan. Untuk contoh kebijakan IAM tambahan yang memungkinkan izin pengguna untuk melakukan tindakan UpdateCommandExecution MQTT, lihat. Hubungkan dan publikasikan contoh kebijakan
Dalam contoh ini, ganti:
-
dengan Anda Wilayah AWS, sepertiRegionus-east-1. -
dengan Akun AWS nomor Anda, sepertiAccountID.123456789012 -
dengan nama AWS IoT benda Anda yang Anda targetkan eksekusi perintah, sepertiThingName.myRegisteredThing -
dancommands-request-topicdengan nama-nama permintaan AWS IoT perintah dan topik tanggapan Anda. Untuk informasi selengkapnya, lihat High-level alur kerja perintah.commands-response-topic
Contoh kebijakan IAM untuk ID klien MQTT
Kode berikut menunjukkan contoh kebijakan perangkat saat menggunakan ID klien MQTT.
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Publish", "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/json" ] }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/request", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/accepted", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/rejected", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/request/json", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/accepted/json", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/clients/${iot:ClientId}/executions/*/response/rejected/json" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/request", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/response/accepted", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/response/rejected", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/request/json", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/response/accepted/json", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/clients/${iot:ClientId}/executions/+/response/rejected/json" ] }, { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws:iot:us-east-1:123456789012:client/${iot:ClientId}" } ] }
Contoh kebijakan IAM untuk hal IoT
Kode berikut menunjukkan contoh kebijakan perangkat saat menggunakan AWS IoT sesuatu.
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Publish", "Resource": "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/request", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response/accepted", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response/rejected", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/request/json", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response/accepted/json", "arn:aws:iot:us-east-1:123456789012:topic/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/*/response/rejected/json" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/request", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/response/accepted", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/response/rejected", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/request/json", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/response/accepted/json", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/commands/things/${iot:Connection.Thing.ThingName}/executions/+/response/rejected/json" ] }, { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws:iot:us-east-1:123456789012:client/${iot:ClientId}" } ] }
Setelah eksekusi perintah diterima pada topik permintaan, perangkat memproses perintah. Kemudian menggunakan UpdateCommandExecution API untuk memperbarui status dan hasil eksekusi perintah ke topik respons berikut.
$aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat>
Dalam contoh ini, adalah pengidentifikasi unik perangkat target Anda, dan <DeviceID> merupakan pengidentifikasi eksekusi perintah pada perangkat target. <execution-id><PayloadFormat>Bisa berupa JSON atau CBOR.
catatan
Jika Anda belum mendaftarkan perangkat Anda AWS IoT, Anda dapat menggunakan ID klien sebagai pengidentifikasi, bukan nama benda.
$aws/commands/clients/<ClientID>/executions/<ExecutionId>/response/<PayloadFormat>
Perangkat melaporkan pembaruan ke status eksekusi
Perangkat Anda dapat menggunakan API untuk melaporkan salah satu pembaruan status berikut untuk eksekusi perintah. Untuk informasi selengkapnya tentang status ini, lihatStatus pelaksanaan perintah.
-
IN_PROGRESS: Ketika perangkat mulai menjalankan perintah, ia dapat memperbarui status keIN_PROGRESS. -
SUCCEEDED: Ketika perangkat berhasil memproses perintah dan menyelesaikan eksekusinya, perangkat dapat menerbitkan pesan ke topik respons sebagaiSUCCEEDED. -
FAILED: Jika perangkat gagal menjalankan perintah, perangkat dapat menerbitkan pesan ke topik respons sebagaiFAILED. -
REJECTED: Jika perangkat gagal menerima perintah, perangkat dapat menerbitkan pesan ke topik respons sebagaiREJECTED. -
TIMED_OUT: Status eksekusi perintah dapat berubahTIMED_OUTkarena salah satu alasan berikut.-
Hasil eksekusi perintah tidak diterima. Hal ini dapat terjadi karena eksekusi tidak selesai dalam durasi yang ditentukan, atau jika perangkat gagal mempublikasikan informasi status ke topik respons.
-
Perangkat melaporkan bahwa waktu habis terjadi ketika mencoba menjalankan perintah.
-
Untuk informasi selengkapnya tentang TIMED_OUT status, lihatNilai batas waktu dan status eksekusi TIMED_OUT.
Pertimbangan saat menggunakan UpdateCommandExecution API
Berikut ini adalah beberapa pertimbangan penting saat menggunakan UpdateCommandExecution API.
-
Perangkat Anda dapat menggunakan
statusReasonobjek opsional untuk memberikan informasi tambahan tentang eksekusi. Jika perangkat Anda menyediakan objek ini,reasonCodebidang objek diperlukan, tetapireasonDescriptionbidang tersebut opsional. -
Ketika perangkat Anda menggunakan
statusReasonobjek,reasonCodeharus menggunakan pola[A-Z0-9_-]+dan panjangnya tidak melebihi 64 karakter. Jika Anda memberikanreasonDescription, pastikan panjangnya tidak melebihi 1.024 karakter. Itu dapat menggunakan karakter apa pun kecuali karakter kontrol seperti baris baru. -
Perangkat Anda dapat menggunakan
resultobjek opsional untuk memberikan informasi tentang hasil eksekusi perintah, seperti nilai pengembalian panggilan fungsi jarak jauh. Jika Anda memberikanresult, itu harus memerlukan setidaknya satu entri. -
Di
resultbidang, Anda menentukan entri sebagai pasangan kunci-nilai. Untuk setiap entri, Anda harus menentukan informasi tipe data sebagai string, boolean, atau biner. Tipe data string harus menggunakan kuncis, tipe data boolean menggunakan kuncib, dan tipe data biner harus menggunakan kunci.binPastikan bahwa kunci ini adalah huruf kecil. -
Jika Anda mengalami kesalahan saat menjalankan
UpdateCommandExecutionAPI, Anda dapat melihat kesalahan di grupAWSIoTLogsV2log di Amazon CloudWatch. Untuk informasi tentang mengaktifkan logging dan melihat log, lihatKonfigurasi AWS IoT pencatatan log.
UpdateCommandExecutionContoh API
Kode berikut menunjukkan contoh bagaimana perangkat Anda dapat menggunakan UpdateCommandExecution API untuk melaporkan status eksekusi, statusReason bidang untuk memberikan informasi tambahan tentang status, dan bidang hasil untuk memberikan informasi tentang hasil eksekusi, seperti persentase baterai mobil dalam kasus ini.
{ "status": "IN_PROGRESS", "statusReason": { "reasonCode": "200", "reasonDescription": "Execution_in_progress" }, "result": { "car_battery": { "s": "car battery at 50 percent" } } }
catatan
Ketika permintaan UpdateCommandExecution MQTT gagal, layanan menerbitkan respons kesalahan untuk /rejected topik. Untuk daftar lengkap kode kesalahan dan panduan pemecahan masalah, lihatAWS IoT Pemecahan Masalah Perintah.
Ambil eksekusi perintah
Setelah menjalankan perintah, Anda dapat mengambil informasi tentang eksekusi perintah dari AWS IoT konsol dan menggunakan AWS CLI. Anda dapat memperoleh informasi berikut.
catatan
Untuk mengambil status eksekusi perintah terbaru, perangkat Anda harus mempublikasikan informasi status ke topik respons menggunakan API UpdateCommandExecution MQTT, seperti yang dijelaskan di bawah ini. Sampai perangkat menerbitkan topik ini, GetCommandExecution API akan melaporkan status sebagai CREATED atauTIMED_OUT.
Setiap pelaksanaan perintah yang Anda buat akan memiliki:
-
ID Pelaksanaan, yang merupakan pengidentifikasi unik pelaksanaan perintah.
-
Status pelaksanaan perintah. Ketika Anda menjalankan perintah di perangkat target, pelaksanaan perintah memasuki status
CREATED. Kemudian perintah dapat beralih ke status pelaksanaan perintah lain seperti yang dijelaskan di bawah ini. -
Hasil dari eksekusi perintah.
-
ID Perintah unik dan perangkat target yang telah dibuatkan pelaksanaan.
-
Tanggal mulai, yang menunjukkan waktu ketika pelaksanaan perintah dibuat.
Anda dapat mengambil eksekusi perintah dari konsol menggunakan salah satu metode berikut.
-
Dari halaman hub Perintah
Buka halaman Com
mand Hub AWS IoT konsol dan lakukan langkah-langkah ini. -
Pilih perintah yang Anda buat eksekusi pada perangkat target.
-
Di halaman detail perintah, pada tab Ri wayat perintah, Anda akan melihat eksekusi yang Anda buat. Pilih eksekusi yang ingin Anda ambil informasi.
-
Jika perangkat Anda menggunakan
UpdateCommandExecutionAPI untuk memberikan informasi hasil, Anda dapat menemukan informasi ini di tab Hasil di halaman ini.
-
-
Dari halaman Thing hub
Jika Anda memilih AWS IoT sesuatu sebagai perangkat target Anda saat menjalankan perintah, Anda dapat melihat detail eksekusi dari halaman Thing hub.
-
Buka halaman
Thing Hub di AWS IoT konsol dan pilih hal yang Anda buat eksekusi perintah. -
Di halaman detail hal, pada riwayat perintah, Anda akan melihat eksekusi yang Anda buat. Pilih eksekusi yang ingin Anda ambil informasi.
-
Jika perangkat Anda menggunakan
UpdateCommandExecutionAPI untuk memberikan informasi hasil, Anda dapat menemukan informasi ini di tab Hasil di halaman ini.
-
Gunakan operasi API HTTP bidang GetCommandExecution AWS IoT Core kontrol untuk mengambil informasi tentang eksekusi perintah. Anda harus sudah menjalankan perintah ini menggunakan operasi StartCommandExecution API.
Contoh kebijakan IAM
Sebelum Anda menggunakan operasi API ini, pastikan kebijakan IAM memberi wewenang kepada Anda untuk melakukan tindakan ini di perangkat. Contoh berikut menunjukkan kebijakan IAM yang memungkinkan izin pengguna untuk melakukan GetCommandExecution tindakan.
Dalam contoh ini, ganti:
-
dengan Anda Wilayah AWS, sepertiregionus-east-1. -
dengan Akun AWS nomor Anda, sepertiaccount-id.123456789012 -
dengan pengenal AWS IoT perintah unik Anda, seperticommand-id.LockDoor -
dengan salahdevicesthingsatu atauclienttergantung pada apakah perangkat Anda telah terdaftar sebagai AWS IoT sesuatu, atau ditentukan sebagai klien MQTT. -
dengan AWS IoTdevice-idthing-nameatau Andaclient-id.
{ "Effect": "Allow", "Action": [ "iot:GetCommandExecution" ], "Resource": [ "arn:aws:iot:region:account-id:command/command-id", "arn:aws:iot:region:account-id:devices/device-id" ] }
Ambil contoh eksekusi perintah
Contoh berikut menunjukkan cara mengambil informasi tentang perintah yang dieksekusi menggunakan start-command-execution AWS CLI perintah. Contoh berikut menunjukkan bagaimana Anda dapat mengambil informasi tentang perintah yang dijalankan untuk mematikan mode roda kemudi.
Dalam contoh ini, ganti:
-
dengan pengenal untuk eksekusi perintah yang ingin Anda ambil informasinya.<execution-id> -
dengan Amazon Resource Number (ARN) perangkat yang Anda targetkan eksekusi. Anda dapat memperoleh informasi ini dari respons perintah<target-arn>start-command-executionCLI. -
Secara opsional, jika perangkat Anda menggunakan
UpdateCommandExectionAPI untuk memberikan hasil eksekusi, Anda dapat menentukan apakah akan menyertakan hasil eksekusi perintah dalam responsGetCommandExecutionAPI menggunakanGetCommandExecutionAPI.
aws iot get-command-execution --execution-id<execution-id>\ --target-arn<target-arn>\ --include-result
Menjalankan perintah ini menghasilkan respons yang berisi informasi tentang ARN eksekusi perintah, status eksekusi, dan waktu ketika mulai dieksekusi, dan kapan selesai. Ini juga menyediakan statusReason objek yang berisi informasi tambahan tentang status. Untuk informasi selengkapnya tentang status yang berbeda dan alasan status, lihatStatus pelaksanaan perintah.
Kode berikut menunjukkan respons sampel dari permintaan API.
catatan
Bid completedAt ang dalam respons eksekusi sesuai dengan waktu ketika perangkat melaporkan status terminal ke cloud. Dalam hal TIMED_OUT status, bidang ini akan disetel hanya ketika perangkat melaporkan waktu habis. Ketika TIMED_OUT status diatur oleh cloud, TIMED_OUT status tidak diperbarui. Untuk informasi lebih lanjut tentang perilaku waktu istirahat, lihatPertimbangan batas waktu eksekusi perintah.
{ "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542", "commandArn": "arn:aws:iot:us-east-1:123456789012:command/LockDoor", "targetArn": "arn:aws:iot:us-east-1:123456789012:thing/myRegisteredThing", "status": "SUCCEEDED", "statusReason": { "reasonCode": "DEVICE_SUCCESSFULLY_EXECUTED", "reasonDescription": "SUCCESS" }, "result": { "sn": { "s": "ABC-001" }, "digital": { "b": true } }, "createdAt": "2024-03-23T00:50:10.095000-07:00", "completedAt": "2024-03-23T00:50:10.095000-07:00" }
Melihat pembaruan perintah menggunakan klien uji MQTT
Anda dapat menggunakan klien uji MQTT untuk melihat pertukaran pesan melalui MQTT saat menggunakan fitur perintah. Setelah perangkat Anda membuat koneksi MQTT dengan AWS IoT, Anda dapat membuat perintah, menentukan payload, dan kemudian menjalankannya di perangkat. Saat Anda menjalankan perintah, jika perangkat Anda berlangganan topik permintaan cadangan MQTT untuk perintah, pesan payload akan ditampilkan ke topik ini.
Perangkat kemudian menerima instruksi payload dan melakukan operasi yang ditentukan pada AWS IoT perangkat. Kemudian menggunakan UpdateCommandExecution API untuk mempublikasikan hasil eksekusi perintah dan informasi status ke topik respons cadangan MQTT untuk perintah. AWS IoT Device Management mendengarkan pembaruan pada topik respons dan menyimpan informasi yang diperbarui dan menerbitkan log ke AWS CloudTrail dan Amazon CloudWatch. Anda kemudian dapat mengambil informasi eksekusi perintah terbaru dari konsol atau dengan menggunakan GetCommandExecution API.
Langkah-langkah berikut menunjukkan cara menggunakan klien uji MQTT untuk mengamati pesan.
-
Buka klien uji MQTT
di AWS IoT konsol. -
Pada tab Berlangganan, masukkan topik berikut dan kemudian pilih Ber langganan, di mana
<thingId>nama perangkat yang telah Anda daftarkan AWS IoT.catatan
Anda dapat menemukan nama benda untuk perangkat Anda dari halaman
Thing Hub di AWS IoT konsol. Jika Anda belum mendaftarkan perangkat Anda sebagai sesuatu, Anda dapat mendaftarkan perangkat saat menghubungkan ke AWS IoT dari halaman Hu bungkan perangkat . $aws/commands/things/<thingId>/executions/+/request -
(Opsional) Pada tab Ber langganan, Anda juga dapat memasukkan topik berikut dan memilih Ber langganan.
$aws/commands/things/+/executions/+/response/accepted/json $aws/commands/things/+/executions/+/response/rejected/json -
Saat Anda memulai eksekusi perintah, payload pesan akan dikirim ke perangkat menggunakan topik permintaan yang telah berlangganan perangkat,
$aws/commands/things/. Di klien uji MQTT, Anda akan melihat perintah payload yang berisi instruksi untuk perangkat untuk memproses perintah.<thingId>/executions/+/request -
Setelah perangkat mulai menjalankan perintah, perangkat dapat menerbitkan pembaruan status ke topik respons cadangan MQTT berikut untuk perintah.
$aws/commands/<devices>/<device-id>/executions/<executionId>/response/jsonMisalnya, pertimbangkan perintah yang Anda jalankan untuk menyalakan AC mobil Anda untuk mengurangi suhu ke nilai yang diinginkan. JSON berikut menunjukkan contoh pesan yang dipublikasikan kendaraan ke topik respons yang menunjukkan bahwa ia gagal menjalankan perintah.
{ "deviceId": "My_Car", "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542", "status": "FAILED", "statusReason": { "reasonCode": "CAR_LOW_ON_BATTERY", "reasonDescription": "Car battery is lower than 5 percent" } }Dalam hal ini, Anda dapat mengisi baterai mobil Anda dan kemudian menjalankan perintah lagi.
Daftar eksekusi perintah di Anda Akun AWS
Setelah menjalankan perintah, Anda dapat mengambil informasi tentang eksekusi perintah dari AWS IoT konsol dan menggunakan AWS CLI. Anda dapat memperoleh informasi berikut.
-
ID Pelaksanaan, yang merupakan pengidentifikasi unik pelaksanaan perintah.
-
Status pelaksanaan perintah. Ketika Anda menjalankan perintah di perangkat target, pelaksanaan perintah memasuki status
CREATED. Kemudian perintah dapat beralih ke status pelaksanaan perintah lain seperti yang dijelaskan di bawah ini. -
ID Perintah unik dan perangkat target yang telah dibuatkan pelaksanaan.
-
Tanggal mulai, yang menunjukkan waktu ketika pelaksanaan perintah dibuat.
Anda dapat melihat semua eksekusi perintah dari konsol menggunakan salah satu metode berikut.
-
Dari halaman hub Perintah
Buka halaman Com
mand Hub AWS IoT konsol dan lakukan langkah-langkah ini. -
Pilih perintah yang Anda buat eksekusi pada perangkat target.
-
Di halaman detail perintah, buka tab Ri wayat perintah, dan Anda akan melihat daftar eksekusi yang Anda buat.
-
-
Dari halaman Thing hub
Jika Anda memilih AWS IoT sesuatu sebagai perangkat target Anda saat menjalankan perintah, dan membuat beberapa eksekusi perintah untuk satu perangkat, Anda dapat melihat eksekusi untuk perangkat dari halaman hub Thing.
-
Buka halaman
Thing Hub di AWS IoT konsol dan pilih hal yang Anda buat eksekusi. -
Di halaman detail hal, pada ri wayat perintah, Anda akan melihat daftar eksekusi yang Anda buat untuk perangkat.
-
Gunakan operasi API HTTP bidang ListCommandExecutions AWS IoT Core kontrol untuk membuat daftar semua eksekusi perintah di akun Anda.
Contoh kebijakan IAM
Sebelum Anda menggunakan operasi API ini, pastikan kebijakan IAM memberi wewenang kepada Anda untuk melakukan tindakan ini di perangkat. Contoh berikut menunjukkan kebijakan IAM yang memungkinkan izin pengguna untuk melakukan ListCommandExecutions tindakan.
Dalam contoh ini, ganti:
-
dengan Anda Wilayah AWS, sepertiregionus-east-1. -
dengan Akun AWS nomor Anda, sepertiaccount-id.123456789012 -
dengan pengenal AWS IoT perintah unik Anda, seperticommand-id.LockDoor
{ "Effect": "Allow", "Action": "iot:ListCommandExecutions", "Resource": * }
Daftar contoh eksekusi perintah
Contoh berikut menunjukkan kepada Anda cara membuat daftar eksekusi perintah di Anda Akun AWS.
Saat menjalankan perintah, Anda harus menentukan apakah akan memfilter daftar untuk menampilkan hanya eksekusi perintah yang dibuat untuk perangkat tertentu menggunakantargetArn, atau eksekusi untuk perintah tertentu yang ditentukan menggunakan. commandArn
Dalam contoh ini, ganti:
-
dengan Nomor Sumber Daya Amazon (ARN) perangkat yang Anda targetkan eksekusi, seperti<target-arn>arn:aws:iot:.us-east-1:123456789012:thing/b8e4157c98f332cffb37627f -
dengan Nomor Sumber Daya Amazon (ARN) perangkat yang Anda targetkan eksekusi, seperti<target-arn>arn:aws:iot:.us-east-1:123456789012:thing/b8e4157c98f332cffb37627f -
dengan waktu setelah itu Anda ingin membuat daftar eksekusi yang dibuat, misalnya,<after>2024-11-01T03:00.
aws iot list-command-executions \ --target-arn\ --started-time-filter '{after=<target-arn>}' \ --sort-order "ASCENDING"<after>
Menjalankan perintah ini menghasilkan respons yang berisi daftar eksekusi perintah yang Anda buat, dan waktu ketika eksekusi mulai dieksekusi, dan kapan selesai. Ini juga menyediakan informasi status, dan statusReason objek yang berisi informasi tambahan tentang status.
{ "commandExecutions": [ { "commandArn": "arn:aws:iot:us-east-1:123456789012:command/TestMe002", "executionId": "b2b654ca-1a71-427f-9669-e74ae9d92d24", "targetArn": "arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f", "status": "TIMED_OUT", "createdAt": "2024-11-24T14:39:25.791000-08:00", "startedAt": "2024-11-24T14:39:25.791000-08:00" }, { "commandArn": "arn:aws:iot:us-east-1:123456789012:command/TestMe002", "executionId": "34bf015f-ef0f-4453-acd0-9cca2d42a48f", "targetArn": "arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f", "status": "IN_PROGRESS", "createdAt": "2024-11-24T14:05:36.021000-08:00", "startedAt": "2024-11-24T14:05:36.021000-08:00" } ] }
Untuk informasi selengkapnya tentang status yang berbeda dan alasan status, lihatStatus pelaksanaan perintah.
Hapus eksekusi perintah
Jika Anda tidak lagi ingin menggunakan eksekusi perintah, Anda dapat menghapusnya secara permanen dari akun Anda.
catatan
-
Eksekusi perintah dapat dihapus hanya jika telah memasuki status terminal, seperti
SUCCEEDED,FAILED, atauREJECTED. -
Operasi ini hanya dapat dilakukan dengan menggunakan AWS IoT Core API atau AWS CLI. Ini tidak tersedia dari konsol.
Sebelum Anda menggunakan operasi API ini, pastikan kebijakan IAM Anda mengizinkan perangkat Anda untuk melakukan tindakan ini. Berikut ini menunjukkan contoh kebijakan yang mengotorisasi perangkat Anda untuk melakukan tindakan tersebut.
Dalam contoh ini, ganti:
-
dengan Anda Wilayah AWS, sepertiRegionus-east-1. -
dengan Akun AWS nomor Anda, sepertiAccountID.123456789012 -
dengan pengenal perintah yang ingin Anda hapus eksekusi.CommandID -
dengan salahdevicesthingsatu atauclienttergantung pada apakah perangkat Anda telah terdaftar sebagai AWS IoT sesuatu, atau ditentukan sebagai klien MQTT. -
dengan AWS IoTdevice-idthing-nameatau Andaclient-id.
{ "Effect": "Allow", "Action": [ "iot:DeleteCommandExecution" ], "Resource": [ "arn:aws:iot:region:account-id:command/command-id", "arn:aws:iot:region:account-id:devices/device-id" ] }
Contoh berikut menunjukkan cara menghapus perintah menggunakan delete-command AWS CLI perintah. Tergantung pada aplikasi Anda, ganti dengan pengenal untuk eksekusi perintah yang Anda hapus, dan <execution-id> dengan ARN perangkat target Anda. <target-arn>
aws iot delete-command-execution \ --execution-id<execution-id>\ --target-arn<target-arn>
Jika permintaan API berhasil, maka eksekusi perintah menghasilkan kode status 200. Anda dapat menggunakan GetCommandExecution API untuk memverifikasi bahwa eksekusi perintah tidak ada lagi di akun Anda.