Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mulai dan pantau eksekusi perintah
penting
Akses ke FleetWise fitur AWS IoT tertentu saat ini terjaga keamanannya. Untuk informasi selengkapnya, lihat AWS Ketersediaan wilayah dan fitur di AWS IoT FleetWise.
Setelah Anda membuat sumber daya perintah, Anda dapat memulai eksekusi perintah pada kendaraan target. Setelah kendaraan mulai menjalankan perintah, ia dapat mulai memperbarui hasil eksekusi perintah dan mempublikasikan pembaruan status dan informasi hasil ke topik yang dicadangkan MQTT. Anda kemudian dapat mengambil status eksekusi perintah dan memantau status eksekusi di akun Anda.
Topik ini menunjukkan bagaimana Anda dapat mengirim perintah ke kendaraan Anda menggunakan konsol AWS IoT AWS CLI FleetWise atau. Ini juga menunjukkan kepada Anda cara memantau dan memperbarui status eksekusi perintah.
Topik
Untuk mengirim perintah dari konsol, buka halaman Kendaraan
-
Pilih kendaraan yang ingin Anda kirimi perintah.
Pilih Jalankan perintah.
Pilih ID perintah.
Tentukan batas waktu eksekusi perintah, lalu pilih Jalankan perintah.
Anda dapat menggunakan operasi API bidang StartCommandExecution AWS IoT data untuk mengirim perintah ke kendaraan. Kendaraan kemudian meneruskan perintah ke layanan middleware otomotif (seperti SOME/IP (Scalable Service-Oriented Middleware over IP)) atau menerbitkannya di jaringan kendaraan (seperti antarmuka perangkat controller area network (CAN)). Contoh berikut menggunakan AWS CLI.
Topik
Pertimbangan saat mengirim perintah
Saat Anda memulai eksekusi perintah di AWS IoT FleetWise:
-
Anda harus menyediakan AWS IoT sesuatu untuk kendaraan. Untuk informasi selengkapnya, lihat Penyediaan AWS kendaraan IoT FleetWise .
-
Anda harus sudah membuat perintah dengan
AWS-IoT-FleetWisesebagai namespace dan memberikanrole-Arnyang memberi Anda izin untuk membuat dan menjalankan perintah di IoT. AWS FleetWise Untuk informasi selengkapnya, lihat Buat sumber daya perintah. -
Anda dapat melewati
parametersbidang jika Anda memilih untuk menggunakan nilai default apa pun yang ditentukan untuk parameter saat membuat perintah. Jikamandatory-parameterstidak ditentukan pada waktu pembuatan, atau jika Anda ingin mengganti nilai default apa pun dengan menentukan nilai Anda sendiri untuk parameter, Anda harus menentukan bidangnya.parametersUntuk contoh tambahan ini, lihatSkenario penggunaan perintah. -
Anda dapat menentukan hingga tiga pasangan nama-nilai untuk bidang tersebut.
mandatory-parametersNamun, ketika menjalankan perintah pada kendaraan, hanya satu pasangan nama-nilai yang diterima, dannamebidang harus menggunakan nama yang sepenuhnya memenuhi syarat dengan awalan.$actuatorPath.
Dapatkan titik akhir bidang data khusus akun
Sebelum menjalankan perintah API, Anda harus mendapatkan URL endpoint khusus akun untuk endpoint. iot:Jobs Misalnya, jika Anda menjalankan perintah ini:
aws iot describe-endpoint --endpoint-type iot:Jobs
Ini akan mengembalikan URL titik akhir khusus akun seperti yang ditunjukkan pada respons sampel di bawah ini.
{ "endpointAddress": "<account-specific-prefix>.jobs.iot.<region>.amazonaws.com" }
Kirim contoh perintah
Untuk mengirim perintah ke kendaraan, jalankan perintah berikut.
-
Ganti
command-arndengan ARN untuk perintah yang ingin Anda jalankan. Anda dapat memperoleh informasi ini dari respons perintahcreate-commandCLI. -
Ganti
target-arndengan ARN untuk perangkat target, atau AWS IoT hal, yang ingin Anda jalankan perintahnya.catatan
Anda dapat menentukan ARN target suatu AWS IoT benda (AWS FleetWise IoT vehicle). Grup dan armada benda saat ini tidak didukung.
-
Ganti
endpoint-urldengan titik akhir khusus akun yang Anda peroleh, diawali denganDapatkan titik akhir bidang data khusus akun, misalnyahttps://,.https://123456789012abcd.jobs.iot.ap-south-1.amazonaws.com -
Ganti
namedanvaluedenganmandatory-parametersbidang yang Anda tentukan saat Anda membuat perintah menggunakancreate-commandCLI.nameBidang adalah nama yang sepenuhnya memenuhi syarat seperti yang didefinisikan dalam katalog sinyal dengan$actuatorPath.awalan. Misalnya,namebisa$actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringModedanvaluebisa menjadi boolean yang menunjukkan status mode kemudi seperti{"B": false}. -
(Opsional) Anda juga dapat menentukan parameter tambahan,
executionTimeoutSeconds. Bidang opsional ini menentukan waktu dalam detik di mana perangkat harus merespons dengan hasil eksekusi. Anda dapat mengonfigurasi batas waktu hingga nilai maksimum 24 jam.Ketika eksekusi perintah telah dibuat, timer dimulai. Sebelum timer kedaluwarsa, jika status eksekusi perintah tidak berubah menjadi status yang menjadikannya terminal, seperti
SUCCEEDEDatauFAILED, maka status secara otomatis berubah menjadiTIMED_OUT.catatan
Perangkat juga dapat melaporkan
TIMED_OUTstatus, atau mengganti status ini ke status sepertiSUCCEEDED,, atauFAILEDREJECTED, dan eksekusi perintah akan menjadi terminal. Untuk informasi selengkapnya, lihat Status batas waktu eksekusi perintah.
aws iot-jobs-data start-command-execution \ --command-arncommand-arn\ --target-arntarget-arn\ --execution-timeout-seconds30\ --endpoint-urlendpoint-url\ --parameters '[ { "name":name, "value":value} ]'
Operasi StartCommandExecution API mengembalikan ID eksekusi perintah. Anda dapat menggunakan ID ini untuk menanyakan status eksekusi perintah, detail, dan riwayat eksekusi perintah.
{ "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542" }
Setelah Anda menjalankan perintah, perangkat Anda akan menerima pemberitahuan yang berisi informasi berikut. issued_timestamp_msBidang sesuai dengan waktu StartCommandExecution API dipanggil. Ini timeout_ms sesuai dengan nilai waktu habis yang dikonfigurasi menggunakan executionTimeoutSeconds parameter saat menjalankan StartCommandExecution API.
timeout_ms:9000000issued_timestamp_ms:1723847831317
Perbarui hasil eksekusi perintah
Untuk memperbarui status eksekusi perintah, perangkat Anda harus telah membuat koneksi MQTT dan berlangganan topik permintaan perintah berikut.
Dalam contoh ini, ganti dengan pengenal unik perangkat target Anda, yang dapat berupa <device-id>VehicleId atau nama benda, dan dengan pengenal untuk eksekusi perintah.<execution-id>
catatan
-
Muatan harus menggunakan format protobuf.
-
Ini opsional bagi perangkat Anda untuk berlangganan topik
/accepteddan/rejectedrespons. Perangkat Anda akan menerima pesan respons ini bahkan jika mereka belum berlangganan secara eksplisit.
// Request topic $aws/devices/<DeviceID>/command_executions/+/request/protobuf // Response topics (Optional) $aws/devices/<DeviceID>/command_executions/<ExecutionId>/response/accepted/protobuf $aws/devices/<DeviceID>/command_executions/<ExecutionId>/response/rejected/protobuf
Perangkat Anda dapat mempublikasikan pesan ke topik respons perintah. Setelah memproses perintah, ia mengirimkan respons yang dikodekan protobuf ke topik ini. <DeviceID>Bidang harus cocok dengan bidang yang sesuai dalam topik permintaan.
$aws/devices/<DeviceID>/command_executions/<ExecutionId>/response/<PayloadFormat>
Setelah perangkat memublikasikan respons terhadap topik ini, Anda dapat mengambil informasi status yang diperbarui menggunakan API. GetCommandExecution Status eksekusi perintah dapat berupa salah satu dari yang tercantum di sini.
-
IN_PROGRESS -
SUCCEEDED -
FAILED -
REJECTED -
TIMED_OUT
Perhatikan bahwa eksekusi perintah di salah satu statusSUCCEEDED,FAILED, dan REJECTED terminal, dan status dilaporkan oleh perangkat. Ketika eksekusi perintah adalah terminal, ini berarti bahwa tidak ada pembaruan lebih lanjut yang akan dilakukan untuk status atau bidang terkait. TIMED_OUTStatus dapat dilaporkan oleh perangkat atau cloud. Jika dilaporkan oleh cloud, pembaruan bidang alasan status nantinya dapat dilakukan oleh perangkat.
Misalnya, berikut ini menunjukkan contoh pesan MQTT yang diterbitkan oleh perangkat.
catatan
Untuk status eksekusi perintah, jika perangkat Anda menggunakan statusReason objek untuk mempublikasikan informasi status, Anda harus memastikan bahwa:
-
reasonCodeMenggunakan pola[A-Z0-9_-]+, dan panjangnya tidak melebihi 64 karakter. -
reasonDescriptionPanjangnya tidak melebihi 1.024 karakter. Itu dapat menggunakan karakter apa pun kecuali karakter kontrol seperti baris baru.
{ "deviceId": "", "executionId": "", "status": "CREATED", "statusReason": { "reasonCode": "", "reasonDescription": "" } }
Untuk contoh yang menunjukkan bagaimana Anda dapat menggunakan klien pengujian AWS IoT Core MQTT untuk berlangganan topik dan melihat pesan eksekusi perintah, lihat Melihat pembaruan perintah menggunakan klien pengujian MQTT di panduan pengembang.AWS IoT Core
Dapatkan eksekusi perintah
Anda dapat menggunakan operasi API bidang GetCommandExecution AWS IoT kontrol untuk mengambil informasi tentang eksekusi perintah. Anda harus sudah menjalankan perintah ini menggunakan operasi StartCommandExecution API.
Untuk mengambil metadata dari perintah yang dijalankan, jalankan perintah berikut.
-
Ganti
execution-iddengan ID perintah. Anda dapat memperoleh informasi ini dari respons perintahstart-command-executionCLI. -
Ganti
target-arndengan ARN untuk kendaraan target, atau AWS IoT benda, yang ingin Anda jalankan perintahnya.
aws iot get-command-execution --execution-idexecution-id\ --target-arntarget-arn
Operasi GetCommandExecution API mengembalikan respons yang berisi informasi tentang ARN eksekusi perintah, status eksekusi, dan waktu ketika perintah mulai mengeksekusi dan kapan selesai. Kode berikut menunjukkan respons sampel dari permintaan API.
Untuk memberikan konteks tambahan tentang status setiap eksekusi perintah, fitur perintah menyediakan statusReason objek. Objek berisi dua bidang, reasonCode danreasonDescription. Dengan menggunakan bidang ini, perangkat Anda dapat memberikan informasi tambahan tentang status eksekusi perintah. Informasi ini akan mengesampingkan default apa pun reasonCode dan reasonDescription itu dilaporkan dari cloud.
Untuk melaporkan informasi ini, perangkat Anda dapat mempublikasikan informasi status yang diperbarui ke cloud. Kemudian, ketika Anda mengambil status eksekusi perintah menggunakan GetCommandExecution API, Anda akan melihat kode status terbaru.
catatan
completedAtBidang 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 batas waktu. Ketika TIMED_OUT status diatur oleh cloud, TIMED_OUT status tidak diperbarui. Untuk informasi lebih lanjut tentang perilaku time out, lihatStatus batas waktu eksekusi perintah.
{ "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542", "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/LockDoor", "targetArn": "arn:aws:iot:ap-south-1:123456789012:thing/myFrontDoor", "status": "SUCCEEDED", "statusReason": { "reasonCode": "65536", "reasonDescription": "SUCCESS" }, "createdAt": "2024-03-23T00:50:10.095000-07:00", "completedAt": "2024-03-23T00:50:10.095000-07:00", "Parameters": '{ "$actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode": { "B": true } }' }
Daftar eksekusi perintah di akun Anda
Gunakan operasi API HTTP bidang ListCommandExecutions AWS IoT Core kontrol untuk mencantumkan semua eksekusi perintah di akun Anda. Contoh berikut menggunakan AWS CLI.
Pertimbangan saat mencantumkan eksekusi perintah
Berikut ini adalah beberapa pertimbangan saat menggunakan ListCommandExecutions API.
-
Anda harus menentukan setidaknya
targetArnataucommandArntergantung pada apakah Anda ingin membuat daftar eksekusi untuk perintah tertentu atau kendaraan target. Permintaan API tidak dapat kosong dan tidak dapat berisi kedua bidang dalam permintaan yang sama. -
Anda hanya harus memberikan informasi
startedTimeFilterataucompletedTimeFilterinformasi. Permintaan API tidak dapat kosong dan tidak dapat berisi kedua bidang dalam permintaan yang sama. Anda dapat menggunakanbeforedanafterbidang objek untuk mencantumkan eksekusi perintah yang dibuat atau diselesaikan dalam jangka waktu tertentu. -
Kedua
afterbidangbeforedan bidang tidak boleh lebih besar dari waktu saat ini. Secara default, jika Anda tidak menentukan nilai apa pun,beforebidang adalah waktu saat ini danafterbidang adalah waktu saat ini - 6 bulan. Artinya, tergantung pada filter yang Anda gunakan, API akan mencantumkan semua eksekusi yang dibuat atau diselesaikan dalam enam bulan terakhir. -
Anda dapat menggunakan
sort-orderparameter untuk menentukan apakah Anda ingin membuat daftar eksekusi dalam urutan menaik. Secara default, eksekusi akan dicantumkan dalam urutan menurun jika Anda tidak menentukan bidang ini. -
Anda tidak dapat memfilter eksekusi perintah berdasarkan statusnya saat mencantumkan eksekusi perintah untuk perintah ARN.
Contoh eksekusi perintah daftar
Contoh berikut menunjukkan kepada Anda cara membuat daftar eksekusi perintah di file 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 perintah. commandArn
Dalam contoh ini, ganti:
-
dengan Amazon Resource Number (ARN) perangkat yang Anda targetkan eksekusi, seperti.<target-arn>arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f -
dengan Amazon Resource Number (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 dijalankan, dan ketika 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" } ] }
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, sepertiSUCCEEDED,FAILED, atauREJECTED.
Contoh berikut menunjukkan kepada Anda cara menghapus eksekusi perintah menggunakan delete-command-execution AWS CLI perintah. Ganti dengan pengenal eksekusi perintah yang Anda hapus. <execution-id>
aws iot delete-command-execution --execution-id<execution-id>
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.