

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Commands
<a name="remote-commands"></a>

**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](fleetwise-regions.md).  
Dokumentasi ini menjelaskan cara menggunakan [fitur perintah untuk AWS IoT FleetWise](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html#commands-iotfw-namespace). Untuk informasi tentang menggunakan fitur perintah di AWS IoT Device Management, lihat [perintah](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command.html).  
Anda bertanggung jawab penuh untuk menerapkan perintah dengan cara yang aman dan sesuai dengan hukum yang berlaku. Untuk informasi lebih lanjut tentang tanggung jawab Anda, silakan lihat [Ketentuan AWS Layanan untuk AWS IoT Layanan](https://aws.amazon.com/service-terms/).

Gunakan fitur perintah untuk menjalankan perintah pada kendaraan dari cloud. Perintah menargetkan satu perangkat pada satu waktu, dan dapat digunakan untuk aplikasi dengan latensi rendah dan throughput tinggi, seperti untuk mengambil log sisi perangkat, atau untuk memulai perubahan status perangkat.

*Perintah* adalah sumber daya yang dikelola oleh AWS IoT Device Management. Ini berisi konfigurasi yang dapat digunakan kembali yang diterapkan saat mengirim eksekusi perintah ke kendaraan. Anda dapat menentukan serangkaian perintah untuk kasus penggunaan tertentu, atau menggunakannya untuk membuat konfigurasi yang dapat digunakan kembali untuk kasus penggunaan berulang. Misalnya, Anda dapat mengonfigurasi perintah yang dapat digunakan oleh Aplikasi untuk mengunci pintu kendaraan atau mengubah suhu dari jarak jauh.

Dengan menggunakan fitur AWS IoT perintah, Anda dapat:
+ Buat sumber daya perintah dan gunakan kembali konfigurasi untuk mengirim beberapa perintah ke perangkat target Anda dan kemudian jalankan di perangkat.
+ Kontrol granularitas yang Anda inginkan untuk setiap perintah dieksekusi pada perangkat. Misalnya, Anda dapat menyediakan kendaraan sebagai AWS IoT benda, dan kemudian mengirim perintah untuk mengunci atau membuka kunci pintu kendaraan.
+ Jalankan beberapa perintah secara bersamaan pada perangkat target tanpa menunggu perintah sebelumnya selesai.
+ Pilih untuk mengaktifkan notifikasi untuk peristiwa perintah, dan ambil status dan informasi hasil dari perangkat saat menjalankan perintah dan setelah selesai.

Topik berikut menunjukkan cara membuat, mengirim, menerima, dan mengelola perintah.

**Topics**
+ [Konsep perintah](remote-command-concepts-states.md)
+ [Kendaraan dan perintah](remote-command-vehicles.md)
+ [Membuat dan mengelola perintah](create-manage-remote-command-cli.md)
+ [Memulai dan memantau pelaksanaan perintah](send-monitor-remote-command-cli.md)
+ [Contoh: Menggunakan perintah untuk mengontrol mode kemudi kendaraan (AWS CLI)](remote-command-tutorial.md)
+ [Skenario penggunaan perintah](remote-command-use-cases.md)

# Konsep perintah
<a name="remote-command-concepts-states"></a>

**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](fleetwise-regions.md).

Perintah adalah instruksi yang dikirim dari cloud ke perangkat target Anda. Perangkat target dapat berupa kendaraan dan harus terdaftar sebagai *AWS IoT sesuatu* dalam registri benda. Perintah dapat berisi parameter yang menentukan tindakan yang perlu dilakukan aktuator kendaraan. Kendaraan kemudian mem-parsing perintah dan parameternya, dan memprosesnya untuk mengambil tindakan yang sesuai. Kemudian merespons aplikasi cloud dengan status eksekusi perintah.

Untuk alur kerja terperinci, lihat[Kendaraan dan perintah](remote-command-vehicles.md).

**Topics**
+ [Perintah konsep kunci](#remote-command-concepts)
+ [Status pelaksanaan perintah](#remote-command-execution-status-codes)

## Perintah konsep kunci
<a name="remote-command-concepts"></a>

Berikut ini menunjukkan beberapa konsep kunci untuk menggunakan fitur perintah dan cara kerjanya dengan templat status status terakhir yang diketahui (LKS).

**Perintah**  
Perintah adalah entitas yang dapat Anda gunakan untuk mengirim instruksi ke kendaraan fisik agar melakukan tindakan seperti menyalakan mesin atau mengubah posisi jendela. Anda dapat menentukan serangkaian perintah untuk kasus penggunaan tertentu, atau menggunakannya untuk membuat konfigurasi yang dapat digunakan kembali untuk kasus penggunaan berulang. Misalnya, Anda dapat mengonfigurasi perintah yang dapat digunakan oleh Aplikasi untuk mengunci pintu kendaraan atau mengubah suhu dari jarak jauh.

**Namespace**  
Saat Anda menggunakan fitur perintah, Anda harus menentukan namespace untuk perintah tersebut. Saat Anda membuat perintah di AWS IoT FleetWise, Anda harus memilih `AWS-IoT-FleetWise` sebagai namespace Anda. Saat Anda menggunakan namespace ini, Anda harus memberikan parameter yang akan digunakan untuk menjalankan perintah pada kendaraan. Jika Anda ingin membuat perintah sebagai AWS IoT Device Management gantinya, Anda harus menggunakan `AWS-IoT` namespace sebagai gantinya. Untuk informasi selengkapnya, lihat [perintah](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command.html) di *panduan AWS IoT Device Management pengembang*.

**Negara komando**  
Perintah yang Anda buat akan berada dalam keadaan tersedia, yang berarti dapat digunakan untuk memulai eksekusi perintah pada kendaraan. Jika perintah menjadi usang, Anda dapat menghentikan perintah tersebut. Untuk perintah dalam status usang, eksekusi perintah yang ada akan berjalan hingga selesai. Anda tidak dapat memperbarui perintah atau menjalankan eksekusi baru apa pun. Untuk mengirim eksekusi baru, Anda harus mengembalikan perintah agar tersedia.  
Anda juga dapat menghapus perintah jika tidak lagi diperlukan. Ketika Anda menandai perintah untuk penghapusan, jika perintah telah usang untuk durasi yang lebih lama dari batas waktu maksimum 24 jam, perintah akan segera dihapus. 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 24 jam.

**Parameter**  
Saat membuat perintah, Anda dapat secara opsional menentukan parameter yang Anda inginkan untuk dijalankan oleh kendaraan target saat menjalankan perintah. Perintah yang Anda buat adalah konfigurasi yang dapat digunakan kembali dan dapat digunakan untuk mengirim beberapa eksekusi perintah ke kendaraan Anda dan menjalankannya secara bersamaan. Atau, Anda juga dapat menentukan parameter hanya saat runtime dan memilih untuk melakukan operasi satu kali membuat perintah dan mengirimkannya ke kendaraan Anda.

**Target kendaraan**  
Ketika Anda ingin menjalankan perintah, Anda harus menentukan kendaraan target yang akan menerima perintah dan melakukan tindakan tertentu. Kendaraan target pasti sudah terdaftar sebagai *barang* dengan AWS IoT. Setelah Anda mengirim perintah ke kendaraan, itu akan mulai mengeksekusi instance perintah berdasarkan parameter dan nilai yang Anda tentukan.

**Aktuator**  
Saat Anda ingin menjalankan perintah, Anda harus menentukan aktuator pada kendaraan yang akan menerima perintah dan nilainya yang menentukan tindakan yang akan dilakukan. Anda dapat secara opsional mengonfigurasi nilai default untuk aktuator untuk menghindari pengiriman perintah yang tidak akurat. Misalnya, Anda dapat menggunakan nilai default `LockDoor` ke aktuator kunci pintu sehingga perintah tidak membuka kunci pintu secara tidak sengaja. Untuk informasi umum tentang aktuator, lihat. [Konsep utama](how-iotfleetwise-works.md#key-concepts)

**Dukungan tipe data**  
Tipe data berikut didukung untuk aktuator yang digunakan untuk fitur perintah.  
Array tidak didukung untuk data telematika, perintah, atau status terakhir yang diketahui (LKS). Anda hanya dapat menggunakan tipe data array untuk data sistem visi.
+ Jenis titik mengambang. Jenis berikut didukung.
  + Float (32 bit)
  + Ganda (64 bit)
+ Integer (ditandatangani dan tidak ditandatangani). Jenis integer berikut didukung.
  + int8 dan uint8
  + int16 dan uint16
  + int32 dan uint32
+ Panjang. Tipe panjang berikut didukung.
  + Panjang (int64)
  + Panjang tidak ditandatangani (uint64)
+ String
+ Boolean

**Eksekusi perintah**  
Eksekusi perintah adalah instance dari perintah yang berjalan pada perangkat target. Kendaraan menjalankan perintah menggunakan parameter yang Anda tentukan saat Anda membuat perintah atau saat Anda memulai eksekusi perintah. Kendaraan kemudian melakukan operasi yang ditentukan dan mengembalikan status eksekusi.  
Untuk kendaraan tertentu, Anda dapat menjalankan beberapa perintah secara bersamaan. Untuk informasi tentang jumlah maksimum eksekusi bersamaan yang dapat Anda jalankan untuk setiap kendaraan, lihat [AWS IoT Device Management perintah](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#commands-limits) kuota.

**Template status status terakhir yang diketahui (LKS)**  
Templat negara menyediakan mekanisme bagi pemilik kendaraan untuk melacak keadaan kendaraan mereka. Untuk memantau status terakhir yang diketahui (LKS) kendaraan Anda dalam waktu dekat, Anda dapat membuat templat negara dan mengaitkannya dengan kendaraan Anda.  
Dengan menggunakan fitur perintah, Anda dapat melakukan operasi “On Demand” yang dapat digunakan untuk pengumpulan dan pemrosesan data negara. Misalnya, Anda dapat meminta status kendaraan saat ini satu kali (ambil), atau mengaktifkan atau menonaktifkan templat status LKS yang digunakan sebelumnya untuk memulai atau menghentikan pelaporan data kendaraan. Untuk contoh yang menunjukkan cara menggunakan perintah dengan templat status, lihat[Skenario penggunaan perintah](remote-command-use-cases.md).

## Status pelaksanaan perintah
<a name="remote-command-execution-status-codes"></a>

Setelah Anda memulai eksekusi perintah, kendaraan Anda dapat mempublikasikan status eksekusi, dan memberikan alasan status sebagai informasi tambahan tentang eksekusi. Bagian berikut menjelaskan berbagai status eksekusi perintah, dan kode status.

**Topics**
+ [Kode alasan status eksekusi perintah dan deskripsi](#remote-command-execution-status-reason-codes)
+ [Status eksekusi perintah dan kode status](#remote-command-execution-status-codes)
+ [Status batas waktu eksekusi perintah](#remote-command-execution-status-timeout)

### Kode alasan status eksekusi perintah dan deskripsi
<a name="remote-command-execution-status-reason-codes"></a>

Untuk melaporkan pembaruan ke status eksekusi perintah, kendaraan Anda dapat menggunakan `UpdateCommandExecution` API untuk mempublikasikan informasi status yang diperbarui ke cloud, menggunakan [topik yang dicadangkan Perintah](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-commands) yang dijelaskan dalam *panduan AWS IoT Core pengembang*. Saat melaporkan informasi status, perangkat Anda dapat memberikan konteks tambahan tentang status setiap eksekusi perintah menggunakan `StatusReason` objek, dan bidang `reasonCode` dan `reasonDescription` yang terkandung dalam objek.

### Status eksekusi perintah dan kode status
<a name="remote-command-execution-status-codes"></a>

Tabel berikut menunjukkan berbagai kode status eksekusi perintah dan status yang diizinkan yang dapat dialihkan oleh eksekusi perintah. Ini juga menunjukkan apakah eksekusi perintah adalah “terminal” (yaitu, tidak ada pembaruan status lebih lanjut yang akan datang), apakah perubahan dimulai oleh kendaraan atau cloud, dan kode status yang telah ditentukan sebelumnya yang berbeda dan bagaimana mereka memetakan ke status yang dilaporkan oleh cloud.
+ Untuk informasi tentang cara AWS IoT FleetWise menggunakan kode status yang telah ditentukan sebelumnya, dan `statusReason` objek, lihat [Status perintah dalam dokumentasi](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/include/aws/iotfleetwise/ICommandDispatcher.h) perangkat lunak *Agen Edge untuk AWS FleetWise IoT*.
+ *Untuk informasi tambahan tentang eksekusi terminal dan non-terminal, serta transisi antar status, lihat [Status eksekusi perintah](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-concepts.html#iot-command-execution-status) dalam panduan pengembang.AWS IoT Core *


**Status eksekusi perintah dan sumber**  

| Status pelaksanaan perintah | Deskripsi | Diprakarsai oleh perangkat/cloud? | Eksekusi terminal? | Transisi status yang diizinkan | Kode status yang telah ditentukan sebelumnya | 
| --- | --- | --- | --- | --- | --- | 
| CREATED | Ketika permintaan API untuk mulai mengeksekusi perintah (StartCommandExecutionAPI) berhasil, status eksekusi perintah berubah menjadiCREATED. | Cloud | Tidak |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | Tidak ada | 
| IN\$1PROGRESS | Saat kendaraan mulai menjalankan perintah, ia dapat mempublikasikan pesan ke topik respons untuk memperbarui statusnya. IN\$1PROGRESS | Perangkat | Tidak |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | COMMAND\$1STATUS\$1COMMAND\$1IN\$1PROGRESS | 
| SUCCEEDED | Ketika kendaraan telah berhasil memproses perintah dan menyelesaikan eksekusi, kendaraan dapat mempublikasikan pesan ke topik respons untuk memperbarui statusnyaSUCCEEDED. | Perangkat | Ya | Tidak berlaku | COMMAND\$1STATUS\$1SUCCEEDED | 
| FAILED | Ketika kendaraan gagal menjalankan perintah, ia dapat mempublikasikan pesan ke topik respons untuk memperbarui statusnyaFAILED. | Perangkat | Ya | Tidak berlaku | COMMAND\$1STATUS\$1EXECUTION\$1FAILED | 
| REJECTED | Jika kendaraan gagal menerima perintah, ia dapat mempublikasikan pesan ke topik respons untuk memperbarui statusnyaREJECTED. | Perangkat | Ya | Tidak berlaku | Tidak ada | 
| TIMED\$1OUT |  Status eksekusi perintah dapat berubah `TIMED_OUT` karena salah satu alasan berikut. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html) Untuk informasi selengkapnya tentang status ini, lihat[Status batas waktu eksekusi perintah](#remote-command-execution-status-timeout).  | Perangkat dan cloud | Tidak |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | COMMAND\$1STATUS\$1EXECUTION\$1TIMEOUT | 

### Status batas waktu eksekusi perintah
<a name="remote-command-execution-status-timeout"></a>

Batas waktu eksekusi perintah dapat dilaporkan oleh cloud dan perangkat. Setelah perintah dikirim ke perangkat, timer dimulai. Jika tidak ada respons yang diterima dari perangkat dalam durasi yang ditentukan, cloud melaporkan `TIMED_OUT` status. Dalam hal ini, eksekusi perintah dalam `TIMED_OUT` status adalah non-terminal.

Perangkat dapat mengganti status ini ke status terminal, seperti, `SUCCEEDED``FAILED`, atau`REJECTED`. Itu juga dapat melaporkan bahwa batas waktu terjadi saat menjalankan perintah. Dalam hal ini, status eksekusi perintah tetap di `TIMED_OUT` tetapi bidang `StatusReason` objek diperbarui berdasarkan informasi yang dilaporkan oleh perangkat. Eksekusi perintah dalam `TIMED_OUT` status sekarang menjadi terminal.

Untuk informasi tambahan, lihat [Pertimbangan batas waktu eksekusi perintah](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-execution-start-monitor.html#iot-command-execution-timeout) dalam panduan *AWS IoT Core pengembang*.

# Kendaraan dan perintah
<a name="remote-command-vehicles"></a>

**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](fleetwise-regions.md).  
Anda bertanggung jawab penuh untuk menerapkan perintah dengan cara yang aman dan sesuai dengan hukum yang berlaku.

Untuk menggunakan fitur perintah:

1. Pertama, buat sumber daya perintah. Secara opsional, tentukan parameter yang berisi informasi yang diperlukan untuk menjalankan perintah.

1. Tentukan kendaraan target yang akan menerima perintah dan melakukan tindakan yang ditentukan.

1. Sekarang, Anda dapat menjalankan perintah pada perangkat target, dan memeriksa detail eksekusi perintah untuk mengambil status dan menggunakan CloudWatch log untuk memecahkan masalah lebih lanjut.

Bagian berikut menunjukkan alur kerja antara kendaraan dan perintah.

**Topics**
+ [Gambaran Umum Alur Kerja](#remote-command-vehicles-overview)
+ [Alur kerja kendaraan](#iot-remote-command-devices-workflow)
+ [Alur kerja perintah](#iot-remote-command-commands-workflow)
+ [(Opsional) Pemberitahuan perintah](#remote-command-notifications)

## Gambaran Umum Alur Kerja
<a name="remote-command-vehicles-overview"></a>

Langkah-langkah berikut memberikan ikhtisar alur kerja perintah antara kendaraan dan perintah Anda. Bila Anda menggunakan salah satu perintah operasi HTTP API, permintaan ditandatangani menggunakan kredensyal Sigv4.

**catatan**  
Kecuali untuk operasi `StartCommandExecution` API, semua operasi yang dilakukan melalui protokol HTTP menggunakan titik akhir bidang kontrol.

1. 

**Buat koneksi MQTT dan berlangganan topik perintah**

   Untuk mempersiapkan alur kerja perintah, perangkat harus membuat koneksi MQTT dengan `iot:Data-ATS` titik akhir, dan berlangganan topik permintaan perintah yang disebutkan di atas. Secara opsional, perangkat Anda juga dapat berlangganan perintah yang diterima dan ditolak topik respons.

1. 

**Buat model kendaraan dan sumber daya perintah**

   Anda sekarang dapat membuat kendaraan dan sumber daya perintah menggunakan `CreateVehicle` dan `CreateCommand` mengontrol operasi API pesawat. Sumber daya perintah berisi konfigurasi yang akan diterapkan ketika perintah dijalankan pada kendaraan.

1. 

**Mulai eksekusi perintah pada perangkat target**

   Mulai eksekusi perintah pada kendaraan menggunakan API bidang `StartCommandExecution` data dengan titik akhir khusus akun `iot:Jobs` Anda. API menerbitkan pesan payload yang disandikan protobuf ke topik permintaan perintah.

1. 

**Perbarui hasil eksekusi perintah**

   Kendaraan memproses perintah dan muatan yang diterima, dan kemudian menerbitkan hasil eksekusi perintah ke topik respons menggunakan API. `UpdateCommandExecution` Jika kendaraan Anda berlangganan perintah yang diterima dan ditolak topik respons, itu akan menerima pesan yang menunjukkan apakah respons diterima atau ditolak oleh layanan cloud.

1. 

**(Opsional) Ambil hasil eksekusi perintah**

   Untuk mengambil hasil eksekusi perintah, Anda dapat menggunakan operasi API bidang `GetCommandExecution` kontrol. Setelah kendaraan Anda menerbitkan hasil eksekusi perintah ke topik respons, API ini akan mengembalikan informasi yang diperbarui.

1. 

**(Opsional) Berlangganan dan kelola acara perintah**

   Untuk menerima pemberitahuan untuk pembaruan status eksekusi perintah, Anda dapat berlangganan topik peristiwa perintah. Anda kemudian dapat menggunakan API bidang `CreateTopicRule` kontrol untuk merutekan data peristiwa perintah ke aplikasi lain seperti AWS Lambda fungsi atau Amazon SQS dan membangun aplikasi di atasnya.

## Alur kerja kendaraan
<a name="iot-remote-command-devices-workflow"></a>

Langkah-langkah berikut menjelaskan alur kerja kendaraan secara rinci saat menggunakan fitur perintah.

**catatan**  
Operasi yang dijelaskan di bagian ini menggunakan protokol MQTT.

1. 

**Buat koneksi MQTT**

   Untuk mempersiapkan kendaraan Anda menggunakan fitur perintah, itu harus terlebih dahulu terhubung ke broker AWS IoT Core pesan. Kendaraan Anda harus diizinkan untuk melakukan `iot:Connect` tindakan untuk terhubung AWS IoT Core dan membuat koneksi MQTT dengan broker pesan. Untuk menemukan titik akhir bidang data untuk Anda Akun AWS, gunakan `DescribeEndpoint` API atau perintah `describe-endpoint` CLI seperti yang ditunjukkan di bawah ini.

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

   Menjalankan perintah ini mengembalikan titik akhir bidang data khusus akun seperti yang ditunjukkan di bawah ini.

   ```
   account-specific-prefix.iot.region.amazonaws.com
   ```

1. 

**Susbcribe to command request topic**

   Setelah koneksi dibuat, perangkat Anda kemudian dapat berlangganan ke AWS IoT perintah topik permintaan MQTT. Saat Anda membuat perintah dan memulai eksekusi perintah pada perangkat target Anda, pesan payload yang disandikan protobuf akan dipublikasikan ke topik permintaan oleh broker pesan. Perangkat Anda kemudian dapat menerima pesan payload dan memproses perintah. Dalam contoh ini, ganti *`<DeviceID>`* dengan pengenal unik kendaraan target Anda. ID ini dapat menjadi pengenal unik kendaraan Anda atau nama benda
**catatan**  
Pesan payload yang dikirim ke perangkat harus menggunakan format protobuf.

   ```
   $aws/commands/things/<DeviceID>/executions/+/request/protobuf
   ```

1. 

**(Opsional) Berlangganan topik respons perintah**

   Secara opsional, Anda dapat berlangganan topik respons perintah ini untuk menerima pesan yang menunjukkan apakah layanan cloud menerima atau menolak respons dari perangkat.
**catatan**  
Ini opsional bagi kendaraan Anda untuk berlangganan topik `/accepted` dan `/rejected` respons. Kendaraan Anda akan secara otomatis menerima pesan respons ini meskipun mereka belum secara eksplisit berlangganan topik ini.

   ```
   $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/accepted
   $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/rejected
   ```

1. 

**Memperbarui hasil pelaksanaan perintah**

   Kendaraan target kemudian memproses perintah. Kemudian menggunakan `UpdateCommandExecution` API untuk mempublikasikan hasil eksekusi ke topik respons MQTT berikut.
**catatan**  
Untuk eksekusi kendaraan dan perintah tertentu, *<DeviceID>* harus cocok dengan bidang yang sesuai dalam topik permintaan yang dilanggan perangkat.

   ```
   $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf
   ```

   `UpdateCommandExecution`API adalah operasi API bidang data melalui MQTT yang diautentikasi dengan TLS.
   + Jika layanan cloud berhasil memproses hasil eksekusi perintah, pesan dipublikasikan ke topik yang diterima MQTT. Topik yang diterima menggunakan format berikut.

     ```
     $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/accepted
     ```
   + Jika layanan cloud gagal memproses hasil eksekusi perintah, respons dipublikasikan ke topik yang ditolak MQTT. Topik yang ditolak menggunakan format berikut.

     ```
     $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/rejected
     ```

   Untuk informasi selengkapnya tentang API ini dan contohnya, lihat[Perbarui hasil eksekusi perintah](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).

## Alur kerja perintah
<a name="iot-remote-command-commands-workflow"></a>

Langkah-langkah berikut menjelaskan alur kerja perintah secara rinci.

**catatan**  
Operasi yang dijelaskan dalam bagian ini menggunakan protokol HTTP.

1. 

**Daftarkan kendaraan Anda**

   Sekarang Anda telah mempersiapkan kendaraan Anda untuk menggunakan fitur perintah, Anda dapat mempersiapkan aplikasi Anda dengan mendaftarkan kendaraan Anda dan kemudian membuat perintah yang akan dikirim ke kendaraan. Untuk mendaftarkan kendaraan, buat instance model kendaraan (manifes model) menggunakan operasi API bidang [https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_CreateVehicle.html](https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_CreateVehicle.html)kontrol. Untuk informasi dan contoh selengkapnya, lihat [Membuat kendaraan](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/create-vehicle.html).

1. 

**Buat perintah**

   Gunakan operasi API bidang kontrol [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html)HTTP untuk memodelkan perintah yang berlaku untuk kendaraan yang Anda targetkan. Tentukan parameter dan nilai default yang akan digunakan saat menjalankan perintah, dan pastikan bahwa itu menggunakan `AWS-IoT-FleetWise` namespace. Untuk informasi selengkapnya dan contoh penggunaan API ini, lihat[Buat sumber daya perintah](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Mulai eksekusi perintah**

   Anda sekarang dapat menjalankan perintah yang Anda buat di kendaraan menggunakan operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_StartCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_StartCommandExecution.html)data. AWS IoT Device Management mengambil parameter perintah dan perintah, dan memvalidasi permintaan yang masuk. Kemudian memanggil AWS IoT FleetWise API dengan parameter yang diperlukan untuk menghasilkan muatan khusus kendaraan. Payload kemudian dikirim ke perangkat AWS IoT Device Management melalui MQTT ke topik permintaan perintah yang perangkat Anda berlangganan. Untuk informasi selengkapnya dan contoh penggunaan API ini, lihat[Kirim perintah (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli).

   ```
   $aws/commands/things/<DeviceID>/executions/+/request/protobuf
   ```
**catatan**  
Jika perangkat sedang offline saat perintah dikirim dari cloud dan sesi persisten MQTT sedang digunakan, perintah menunggu di broker pesan. Jika perangkat kembali online sebelum durasi waktu habis, dan jika telah berlangganan topik permintaan perintah, perangkat kemudian dapat memproses perintah dan mempublikasikan hasilnya ke topik respons. Jika perangkat tidak kembali online sebelum durasi waktu habis, eksekusi perintah akan habis dan pesan payload akan kedaluwarsa.

1. 

**Ambil eksekusi perintah**

   Setelah Anda menjalankan perintah pada perangkat, gunakan operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html)kontrol untuk mengambil dan memantau hasil eksekusi perintah. Anda juga dapat menggunakan API untuk mendapatkan informasi tambahan tentang data eksekusi, seperti kapan terakhir diperbarui, kapan eksekusi selesai, dan parameter yang ditentukan.
**catatan**  
Untuk mengambil informasi status terbaru, perangkat Anda harus telah memublikasikan hasil pelaksanaan perintah ke topik respons.

   Untuk informasi selengkapnya dan contoh penggunaan API ini, lihat[Dapatkan eksekusi perintah](send-monitor-remote-command-cli.md#get-remote-command-execution-cli).

## (Opsional) Pemberitahuan perintah
<a name="remote-command-notifications"></a>

Anda dapat berlangganan acara perintah untuk menerima pemberitahuan ketika status eksekusi perintah berubah. Langkah-langkah berikut menunjukkan kepada Anda cara berlangganan acara perintah, dan kemudian memprosesnya.

1. 

**Buat aturan topik**

   Anda dapat berlangganan topik peristiwa perintah dan menerima pemberitahuan ketika status eksekusi perintah berubah. Anda juga dapat membuat aturan topik untuk merutekan data yang diproses oleh kendaraan ke aplikasi lain seperti AWS Lambda fungsi. Anda dapat membuat aturan topik baik menggunakan AWS IoT konsol, atau operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html) AWS IoT Core kontrol. Untuk informasi selengkapnya, lihat [Membuat dan AWS IoT memerintah](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-rule.html).

   Dalam contoh ini, ganti `<CommandID>` dengan pengidentifikasi perintah yang ingin Anda terima notifikasi dan `<CommandExecutionStatus>` dengan status eksekusi perintah.

   ```
   $aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>
   ```
**catatan**  
Untuk menerima pemberitahuan untuk semua perintah dan status eksekusi perintah, Anda dapat menggunakan karakter wildcard dan berlangganan topik berikut.

   ```
   $aws/events/commandExecution/+/#
   ```

1. 

**Menerima dan memproses peristiwa perintah**

   Jika Anda membuat aturan topik di langkah sebelumnya untuk berlangganan acara perintah, maka Anda dapat mengelola pemberitahuan push perintah yang Anda terima. Anda juga dapat membuat aplikasi secara opsional di atasnya, seperti with, Amazon SQS AWS Lambda, Amazon SNS, atau Step AWS Functions menggunakan aturan topik yang Anda buat.

Kode berikut menunjukkan payload sampel untuk pemberitahuan peristiwa perintah yang akan Anda terima.

```
{
    "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554",
    "status":"FAILED",
    "statusReason": {
         "reasonCode": "4",
         "reasonDescription": ""
    },
    "eventType": "COMMAND_EXECUTION",
    "commandArn":"arn:aws:iot:us-east-1:123456789012:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086",
    "targetArn":"arn:aws:iot:us-east-1:123456789012:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd",
    "timestamp":1717708862107
}
```

# Membuat dan mengelola perintah
<a name="create-manage-remote-command-cli"></a>

**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](fleetwise-regions.md).

Anda dapat mengonfigurasi tindakan jarak jauh yang dapat digunakan kembali atau mengirim instruksi langsung satu kali ke perangkat Anda. Saat Anda menggunakan fitur ini, Anda dapat menentukan instruksi yang dapat dijalankan perangkat Anda dalam waktu dekat. Perintah memungkinkan Anda mengonfigurasi tindakan jarak jauh yang dapat dilanjutkan untuk kendaraan target Anda. Setelah Anda membuat perintah, Anda dapat memulai eksekusi perintah yang menargetkan kendaraan tertentu.

Topik ini menunjukkan bagaimana Anda dapat membuat dan mengelola sumber daya perintah menggunakan AWS IoT Core API atau AWS CLI. Ini menunjukkan kepada Anda bagaimana melakukan tindakan berikut pada sumber daya perintah.

**Topics**
+ [Buat sumber daya perintah](#create-remote-command-cli)
+ [Mengambil informasi tentang perintah](#get-remote-command-cli)
+ [Daftar perintah di akun Anda](#list-remote-command-cli)
+ [Memperbarui atau menghentikan sumber daya perintah](#update-remote-command-cli)
+ [Hapus sumber daya perintah](#delete-remote-command-cli)

## Buat sumber daya perintah
<a name="create-remote-command-cli"></a>

Anda dapat menggunakan operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html) AWS IoT Core kontrol atau FleetWise konsol AWS IoT untuk membuat perintah.

### Buat perintah (konsol)
<a name="create-command-console"></a>

Anda dapat menggunakan FleetWise konsol AWS IoT untuk membuat perintah.

**Untuk membuat perintah**

1. Buka konsol [AWS IoT FleetWise ](https://console.aws.amazon.com/iotfleetwise).

1. Pada panel navigasi, pilih **Perintah**.

1. Pilih **Buat perintah**.

1. Tentukan ID perintah unik untuk membantu Anda mengidentifikasi perintah yang ingin Anda jalankan di kendaraan.

1. (Opsional) Tentukan nama tampilan opsional dan deskripsi.

1. (Opsional) Pilih aktuator dan nilai parameter default. Parameter menentukan tindakan yang dapat dilakukan kendaraan target setelah menerima perintah. Jika Anda tidak menambahkan parameter, Anda harus menyediakannya saat menjalankan perintah.

1. Pilih peran IAM yang memberikan izin untuk menghasilkan payload untuk perintah. Lihat [Mengontrol akses](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html#generate-command-payload).

1. Pilih **Buat perintah**.

### Buat perintah (AWS CLI)
<a name="create-remote-command-example"></a>

Contoh berikut menunjukkan cara membuat perintah dengan parameter.

#### Pertimbangan saat membuat perintah
<a name="create-remote-command-considerations"></a>

Saat Anda membuat perintah di AWS IoT FleetWise:
+ Anda harus menentukan `roleArn` yang memberikan izin untuk membuat dan menjalankan perintah pada kendaraan Anda. Untuk informasi selengkapnya dan tentang kebijakan sampel termasuk kapan kunci KMS diaktifkan, lihat[Berikan AWS IoT Device Management izin untuk menghasilkan muatan untuk perintah dengan AWS IoT FleetWise](controlling-access.md#generate-command-payload).
+ Anda harus menentukan `AWS-IoT-FleetWise` sebagai namespace.
+ Anda dapat melewati `mandatory-parameters` bidang dan menentukannya pada waktu berjalan sebagai gantinya. Atau, Anda dapat membuat perintah dengan parameter, dan secara opsional menentukan nilai default untuk mereka. Jika Anda menentukan nilai default, maka pada waktu berjalan, Anda dapat menggunakan nilai-nilai ini atau menggantinya dengan menentukan nilai Anda sendiri. Untuk contoh tambahan ini, lihat[Skenario penggunaan perintah](remote-command-use-cases.md).
+ Anda dapat menentukan hingga tiga pasangan nama-nilai untuk bidang tersebut. `mandatory-parameters` Namun, ketika menjalankan perintah pada kendaraan, hanya satu pasangan nama-nilai yang diterima, dan `name` bidang harus menggunakan nama yang sepenuhnya memenuhi syarat dengan awalan. `$actuatorPath.`
+ Ganti *command-id* dengan pengenal unik untuk perintah. Anda dapat menggunakan UUID, karakter alfanumerik, “-”, dan “\$1”.
+ Ganti *role-arn* dengan peran IAM yang memberi Anda izin untuk membuat dan menjalankan perintah, misalnya,. `"arn:aws:iam:accountId:role/FwCommandExecutionRole"`
+ (Opsional) Ganti *display-name* dengan nama yang mudah digunakan untuk perintah, dan *description* dengan deskripsi perintah yang bermakna.
+ Ganti *name* dan *value* `mandatory-parameters` objek dengan informasi yang diperlukan untuk perintah yang sedang dibuat. `name`Bidang adalah nama yang sepenuhnya memenuhi syarat seperti yang didefinisikan dalam katalog sinyal dengan `$actuatorPath.` awalan. Misalnya, `name` bisa *\$1actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode* dan `value` bisa menjadi boolean yang menunjukkan status mode kemudi seperti*\$1"B": false\$1*.

```
aws iot create-command --command-id command-id \ 
    --role-arn role-arn \
    --description description \
    --display-name display-name \     
    --namespace "AWS-IoT-FleetWise" \
    --mandatory-parameters '[
        {
            "name": name, 
            "value": value
        }
   ]'
```

Operasi `CreateCommand` API mengembalikan respons yang berisi ID dan ARN (Amazon Resource Name) dari perintah.

```
{
    "commandId": "HandsOffSteeringMode",
    "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/HandsOffSteeringMode"
}
```

## Mengambil informasi tentang perintah
<a name="get-remote-command-cli"></a>

Anda dapat menggunakan operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommand.html) AWS IoT Core kontrol untuk mengambil informasi tentang sumber daya perintah.

Untuk mendapatkan informasi tentang sumber daya perintah, jalankan perintah berikut. Ganti *command-id* dengan pengenal yang digunakan saat membuat perintah.

```
aws iot get-command --command-id command-id
```

Operasi `GetCommand` API mengembalikan respons yang berisi informasi berikut.
+ ID dan ARN (Nama Sumber Daya Amazon) dari perintah.
+ Tanggal dan waktu ketika perintah dibuat dan terakhir diperbarui.
+ Status perintah yang menunjukkan apakah itu tersedia untuk dijalankan di kendaraan.
+ Parameter apa pun yang Anda tentukan saat membuat perintah.

```
{
    "commandId": "HandsOffSteeringMode",
    "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/HandsOffSteeringMode"",
    "namespace": "AWS-IoT-FleetWise",
    "mandatoryParameters":[
        {
            "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode",
            "value": {"B": false }
        }
    ],
    "createdAt": "2024-03-23T11:24:14.919000-07:00",
    "lastUpdatedAt": "2024-03-23T11:24:14.919000-07:00",
    "deprecated": false,
    "pendingDeletion": false
}
```

## Daftar perintah di akun Anda
<a name="list-remote-command-cli"></a>

Anda dapat menggunakan operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommands.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommands.html) AWS IoT Core kontrol untuk mencantumkan semua perintah di akun yang Anda buat.

Untuk membuat daftar perintah di akun Anda, jalankan perintah berikut. Secara default, API mengembalikan perintah yang dibuat untuk kedua ruang nama. Untuk memfilter daftar agar hanya menampilkan perintah yang dibuat AWS IoT FleetWise, jalankan perintah berikut.

**catatan**  
Anda juga dapat mengurutkan daftar dalam urutan naik atau turun, atau memfilter daftar untuk hanya menampilkan perintah yang memiliki nama parameter perintah tertentu.

```
aws iot list-commands --namespace "AWS-IoT-FleetWise"
```

Operasi `ListCommands` API mengembalikan respons yang berisi informasi berikut.
+ ID dan ARN (Nama Sumber Daya Amazon) dari perintah.
+ Tanggal dan waktu ketika perintah dibuat dan terakhir diperbarui.
+ Status perintah yang menunjukkan apakah perintah tersedia untuk dijalankan pada kendaraan.

## Memperbarui atau menghentikan sumber daya perintah
<a name="update-remote-command-cli"></a>

Anda dapat menggunakan operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCommand.html) AWS IoT Core kontrol atau FleetWise konsol AWS IoT untuk memperbarui sumber daya perintah. Anda dapat memperbarui nama tampilan dan deskripsi perintah. Anda juga dapat menghentikan perintah jika saat ini tidak digunakan.

**catatan**  
Anda tidak dapat mengubah informasi namespace atau parameter yang akan digunakan saat menjalankan perintah.

### Perbarui perintah (konsol)
<a name="update-command-console"></a>

**Perbarui perintah**  
Untuk memperbarui perintah dari konsol, buka halaman [Perintah](https://console.aws.amazon.com/iotfleetwise/home#/commands) FleetWise konsol AWS IoT dan lakukan langkah-langkah berikut.

1. Pilih perintah yang ingin Anda perbarui, lalu pilih **Edit**.

1. Edit detail perintah, lalu pilih **Simpan perubahan**.

**Menghentikan perintah**  
Untuk menghentikan perintah dari konsol, buka halaman [Perintah](https://console.aws.amazon.com/iotfleetwise/home#/commands) FleetWise konsol AWS IoT dan lakukan langkah-langkah berikut.

1. **Pilih perintah yang ingin Anda hentikan, lalu pilih Deprecate.**

1. **Konfirmasikan penghentian, lalu pilih Deprecate.**

### Perbarui perintah (AWS CLI)
<a name="update-command-cli"></a>

**Perbarui perintah**  
Untuk memperbarui sumber daya perintah, jalankan perintah berikut. Ganti *command-id* dengan pengenal perintah yang ingin Anda perbarui, dan berikan yang diperbarui *display-name* dan*description*.

```
aws iot update-command \ 
    --command-id command-id \ 
    --display-name display-name \ 
    --description description
```

Operasi `UpdateCommand` API mengembalikan respons berikut.

```
{
    "commandId": "HandsOffSteeringMode",
    "deprecated": false,
    "lastUpdatedAt": "2024-05-09T23:16:51.370000-07:00"
}
```

**Menghentikan perintah**  
Anda menghentikan perintah ketika Anda bermaksud untuk tidak lagi terus menggunakannya untuk perangkat Anda atau ketika sudah usang. Contoh berikut menunjukkan cara menghentikan perintah.

```
aws iot update-command \ 
    --command-id command-id \ 
    --deprecated
```

Operasi `UpdateCommand` API mengembalikan respons yang berisi ID dan ARN (Amazon Resource Name) dari perintah.

```
{
    "commandId": "HandsOffSteeringMode",
    "deprecated": true,
    "lastUpdatedAt": "2024-05-09T23:16:51.370000-07:00"
}
```

Setelah perintah tidak digunakan lagi, eksekusi perintah yang ada akan terus berjalan di kendaraan sampai menjadi terminal. Untuk menjalankan eksekusi perintah baru, Anda harus menggunakan `UpdateCommand` API untuk memulihkan perintah sehingga menjadi tersedia. *Untuk informasi tambahan tentang menghentikan dan memulihkan perintah dan pertimbangannya, lihat Menghentikan sumber daya perintah di [Panduan Pengembang](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-deprecate).AWS IoT Core *

## Hapus sumber daya perintah
<a name="delete-remote-command-cli"></a>

Anda dapat menggunakan operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteCommand.html) AWS IoT Core kontrol atau FleetWise konsol AWS IoT untuk menghapus sumber daya perintah.

**catatan**  
Tindakan penghapusan bersifat permanen dan tidak dapat dibatalkan. Perintah akan dihapus secara permanen dari akun Anda.

### Hapus perintah (konsol)
<a name="delete-command-console"></a>

Untuk menghapus perintah dari konsol, buka halaman [Perintah](https://console.aws.amazon.com/iotfleetwise/home#/commands) FleetWise konsol AWS IoT dan lakukan langkah-langkah berikut.

1. Pilih perintah yang ingin Anda hapus, lalu pilih **Hapus**.

1. Konfirmasikan bahwa Anda ingin menghapus perintah, lalu pilih **Hapus**.

### Hapus perintah (AWS CLI)
<a name="delete-command-cli"></a>

Untuk menghapus sumber daya perintah, jalankan perintah berikut. Ganti *command-id* dengan pengenal perintah yang ingin Anda hapus. Contoh berikut menunjukkan cara menghapus sumber daya perintah.

```
aws iot delete-command --command-id command-id
```

Jika permintaan penghapusan berhasil:
+ Jika perintah tidak digunakan lagi untuk durasi yang lebih lama dari batas waktu maksimum 24 jam, perintah akan segera dihapus dan Anda akan melihat HTTP 204. `statusCode`
+ Jika perintah tidak digunakan lagi, atau tidak digunakan lagi untuk durasi yang lebih pendek dari batas waktu maksimum, perintah akan berada dalam `pending deletion` status dan Anda akan melihat HTTP 202. `statusCode` Perintah akan dihapus secara otomatis dari akun Anda setelah batas waktu maksimum 24 jam.

# Memulai dan memantau pelaksanaan perintah
<a name="send-monitor-remote-command-cli"></a>

**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](fleetwise-regions.md).

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.

**Topics**
+ [Perbarui hasil eksekusi perintah](#update-remote-command-execution-cli)
+ [Dapatkan eksekusi perintah](#get-remote-command-execution-cli)
+ [Daftar eksekusi perintah di akun Anda](#list-remote-command-execution-cli)
+ [Hapus eksekusi perintah](#delete-remote-command-execution-cli)

## Kirim perintah (konsol)
<a name="send-command-console"></a>

Untuk mengirim perintah dari konsol, buka halaman [Kendaraan](https://console.aws.amazon.com/iotfleetwise/home#/vehicles) FleetWise konsol AWS IoT dan lakukan langkah-langkah berikut.

1. Pilih kendaraan yang ingin Anda kirimi perintah.

1. Pilih **Jalankan perintah**.

1. Pilih ID perintah.

1. Tentukan batas waktu eksekusi perintah, lalu pilih **Jalankan perintah**.

## Kirim perintah (AWS CLI)
<a name="send-remote-command-cli"></a>

Anda dapat menggunakan operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_iot_data_StartCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot_data_StartCommandExecution.html) 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.

**Topics**
+ [Pertimbangan saat mengirim perintah](#send-remote-command-considerations)
+ [Dapatkan titik akhir bidang data khusus akun](#send-remote-command-endpoint)
+ [Kirim contoh perintah](#send-remote-command-example)

### Pertimbangan saat mengirim perintah
<a name="send-remote-command-considerations"></a>

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](provision-vehicles.md).
+ Anda harus sudah membuat perintah dengan `AWS-IoT-FleetWise` sebagai namespace dan memberikan `role-Arn` yang memberi Anda izin untuk membuat dan menjalankan perintah di IoT. AWS FleetWise Untuk informasi selengkapnya, lihat [Buat sumber daya perintah](create-manage-remote-command-cli.md#create-remote-command-cli).
+ Anda dapat melewati `parameters` bidang jika Anda memilih untuk menggunakan nilai default apa pun yang ditentukan untuk parameter saat membuat perintah. Jika `mandatory-parameters` tidak ditentukan pada waktu pembuatan, atau jika Anda ingin mengganti nilai default apa pun dengan menentukan nilai Anda sendiri untuk parameter, Anda harus menentukan bidangnya. `parameters` Untuk contoh tambahan ini, lihat[Skenario penggunaan perintah](remote-command-use-cases.md).
+ Anda dapat menentukan hingga tiga pasangan nama-nilai untuk bidang tersebut. `mandatory-parameters` Namun, ketika menjalankan perintah pada kendaraan, hanya satu pasangan nama-nilai yang diterima, dan `name` bidang harus menggunakan nama yang sepenuhnya memenuhi syarat dengan awalan. `$actuatorPath.`

### Dapatkan titik akhir bidang data khusus akun
<a name="send-remote-command-endpoint"></a>

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
<a name="send-remote-command-example"></a>

Untuk mengirim perintah ke kendaraan, jalankan perintah berikut.
+ Ganti *command-arn* dengan ARN untuk perintah yang ingin Anda jalankan. Anda dapat memperoleh informasi ini dari respons perintah `create-command` CLI.
+ Ganti *target-arn* dengan 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-url* dengan titik akhir khusus akun yang Anda peroleh, diawali dengan[Dapatkan titik akhir bidang data khusus akun](#send-remote-command-endpoint), misalnya`https://`,. `https://123456789012abcd.jobs.iot.ap-south-1.amazonaws.com`
+ Ganti *name* dan *value* dengan `mandatory-parameters` bidang yang Anda tentukan saat Anda membuat perintah menggunakan `create-command` CLI.

  `name`Bidang adalah nama yang sepenuhnya memenuhi syarat seperti yang didefinisikan dalam katalog sinyal dengan `$actuatorPath.` awalan. Misalnya, `name` bisa *\$1actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode* dan `value` bisa menjadi boolean yang menunjukkan status mode kemudi seperti*\$1"B": false\$1*.
+ (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 ke status yang membuatnya terminal, seperti `SUCCEEDED` atau`FAILED`, maka status secara otomatis berubah menjadi`TIMED_OUT`.
**catatan**  
Perangkat juga dapat melaporkan `TIMED_OUT` status, atau mengganti status ini ke status seperti`SUCCEEDED`,, atau `FAILED``REJECTED`, dan eksekusi perintah akan menjadi terminal. Untuk informasi selengkapnya, lihat [Status batas waktu eksekusi perintah](remote-command-concepts-states.md#remote-command-execution-status-timeout).

```
aws iot-jobs-data start-command-execution \ 
    --command-arn command-arn \ 
    --target-arn target-arn \
    --execution-timeout-seconds 30 \
    --endpoint-url endpoint-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_ms`Bidang 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: 9000000
issued_timestamp_ms: 1723847831317
```

## Perbarui hasil eksekusi perintah
<a name="update-remote-command-execution-cli"></a>

Untuk memperbarui status eksekusi perintah, perangkat Anda harus telah membuat koneksi MQTT dan berlangganan topik permintaan perintah berikut.

Dalam contoh ini, ganti *`<device-id>`* dengan pengenal unik perangkat target Anda, yang dapat berupa `VehicleId` atau nama benda, dan *`<execution-id>`* dengan pengenal untuk eksekusi perintah.

**catatan**  
Muatan harus menggunakan format protobuf.
Ini opsional bagi perangkat Anda untuk berlangganan topik `/accepted` dan `/rejected` respons. Perangkat Anda akan menerima pesan respons ini meskipun 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 memublikasikan 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 status`SUCCEEDED`,`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_OUT`Status 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:  
`reasonCode`Menggunakan pola`[A-Z0-9_-]+`, dan panjangnya tidak melebihi 64 karakter.
`reasonDescription`Panjangnya 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 dalam](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-execution-start-monitor.html#iot-remote-command-execution-update-mqtt) panduan pengembang.AWS IoT Core *

## Dapatkan eksekusi perintah
<a name="get-remote-command-execution-cli"></a>

Anda dapat menggunakan operasi API bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html) 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-id* dengan ID perintah. Anda dapat memperoleh informasi ini dari respons perintah `start-command-execution` CLI.
+ Ganti *target-arn* dengan ARN untuk kendaraan target, atau AWS IoT benda, yang ingin Anda jalankan perintahnya.

```
aws iot get-command-execution --execution-id execution-id \ 
    --target-arn target-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` dan`reasonDescription`. 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**  
`completedAt`Bidang 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, lihat[Status batas waktu eksekusi perintah](remote-command-concepts-states.md#remote-command-execution-status-timeout).

```
{
    "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
<a name="list-remote-command-execution-cli"></a>

Gunakan operasi API HTTP bidang [https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommandExecutions.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommandExecutions.html) AWS IoT Core kontrol untuk mencantumkan semua eksekusi perintah di akun Anda. Contoh berikut menggunakan AWS CLI.

**Topics**
+ [Pertimbangan saat mencantumkan eksekusi perintah](#list-remote-command-considerations)
+ [Contoh eksekusi perintah daftar](#list-remote-command-example)

### Pertimbangan saat mencantumkan eksekusi perintah
<a name="list-remote-command-considerations"></a>

Berikut ini adalah beberapa pertimbangan saat menggunakan `ListCommandExecutions` API.
+ Anda harus menentukan setidaknya `targetArn` atau `commandArn` tergantung 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 `startedTimeFilter` atau `completedTimeFilter` informasi. Permintaan API tidak dapat kosong dan tidak dapat berisi kedua bidang dalam permintaan yang sama. Anda dapat menggunakan `before` dan `after` bidang objek untuk mencantumkan eksekusi perintah yang dibuat atau diselesaikan dalam jangka waktu tertentu.
+ Kedua `after` bidang `before` dan bidang tidak boleh lebih besar dari waktu saat ini. Secara default, jika Anda tidak menentukan nilai apa pun, `before` bidang adalah waktu saat ini dan `after` bidang 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-order` parameter 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
<a name="list-remote-command-example"></a>

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 menggunakan`targetArn`, atau eksekusi untuk perintah tertentu yang ditentukan menggunakan perintah. `commandArn`

Dalam contoh ini, ganti:
+ *`<target-arn>`*dengan Amazon Resource Number (ARN) perangkat yang Anda targetkan eksekusi, seperti. `arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f`
+ *`<target-arn>`*dengan Amazon Resource Number (ARN) perangkat yang Anda targetkan eksekusi, seperti. `arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f`
+ *`<after>`*dengan waktu setelah itu Anda ingin membuat daftar eksekusi yang dibuat, misalnya,`2024-11-01T03:00`.

```
aws iot list-command-executions \ 
--target-arn <target-arn> \ 
--started-time-filter '{after=<after>}' \
--sort-order "ASCENDING"
```

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
<a name="delete-remote-command-execution-cli"></a>

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`, atau`REJECTED`.

Contoh berikut menunjukkan cara menghapus eksekusi perintah menggunakan `delete-command-execution` AWS CLI perintah. Ganti *`<execution-id>`* dengan pengenal eksekusi perintah yang Anda hapus. 

```
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.

# Contoh: Menggunakan perintah untuk mengontrol mode kemudi kendaraan (AWS CLI)
<a name="remote-command-tutorial"></a>

**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](fleetwise-regions.md).

Contoh berikut menunjukkan kepada Anda cara menggunakan fitur perintah menggunakan AWS CLI. Contoh ini menggunakan AWS IoT FleetWise kendaraan sebagai perangkat target untuk menunjukkan bagaimana Anda dapat mengirim perintah untuk mengontrol mode kemudi dari jarak jauh.

**Topics**
+ [Ikhtisar contoh mode kemudi kendaraan](#iot-remote-command-tutorial-overview)
+ [Prasyarat](#iot-remote-command-tutorial-prereq)
+ [Kebijakan IAM untuk menggunakan perintah jarak jauh](#remote-command-policy)
+ [Jalankan AWS IoT perintah (AWS CLI)](#iot-remote-command-tutorial-run)
+ [Membersihkan](#remote-command-tutorial-clean)

## Ikhtisar contoh mode kemudi kendaraan
<a name="iot-remote-command-tutorial-overview"></a>

Dalam contoh ini, Anda akan:

1. Buat sumber daya perintah untuk operasi menggunakan `create-command` AWS CLI untuk mengubah mode kemudi kendaraan.

1. Ambil informasi tentang perintah, seperti waktu ketika itu dibuat atau terakhir diperbarui menggunakan. `get-command` AWS CLI

1. Kirim perintah ke kendaraan menggunakan `start-command-execution` AWS CLI dengan mode kemudi sebagai parameter wajib, yang kemudian akan dieksekusi pada perangkat.

1. Dapatkan hasil eksekusi perintah menggunakan file `get-command-execution` AWS CLI. Anda dapat memeriksa kapan eksekusi selesai, dan mengambil detail tambahan seperti hasil eksekusi, dan waktu yang dibutuhkan untuk menyelesaikan eksekusi perintah.

1. Lakukan aktivitas pembersihan dengan menghapus perintah dan eksekusi perintah yang tidak lagi ingin Anda gunakan.

## Prasyarat
<a name="iot-remote-command-tutorial-prereq"></a>

Sebelum Anda menjalankan contoh ini:
+ Menyediakan AWS IoT FleetWise kendaraan Anda sebagai AWS IoT sesuatu dalam AWS IoT registri. Anda juga harus menambahkan sertifikat ke barang Anda dan mengaktifkannya, dan melampirkan kebijakan untuk barang Anda. Perangkat Anda kemudian dapat terhubung ke cloud dan menjalankan perintah. Untuk informasi selengkapnya, lihat [Menyediakan kendaraan](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/provision-vehicles.html).
+ Buat pengguna IAM dan kebijakan IAM yang memberi Anda izin untuk melakukan operasi API untuk menggunakan perintah, seperti yang ditunjukkan dalam. [Kebijakan IAM untuk menggunakan perintah jarak jauh](#remote-command-policy)

## Kebijakan IAM untuk menggunakan perintah jarak jauh
<a name="remote-command-policy"></a>

Tabel berikut menunjukkan contoh kebijakan IAM yang memberikan akses ke semua operasi API bidang kontrol dan bidang data untuk fitur perintah. Pengguna aplikasi akan memiliki izin untuk melakukan semua operasi API perintah jarak jauh, seperti yang ditunjukkan pada tabel.


**Operasi API**  

| Tindakan API | Bidang kontrol/data | Protokol | Deskripsi | Sumber daya | 
| --- | --- | --- | --- | --- | 
| CreateCommand | Bidang kontrol | HTTP | Membuat sumber daya perintah |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommand | Bidang kontrol | HTTP | Mengambil informasi tentang perintah |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommand | Bidang kontrol | HTTP | Memperbarui informasi tentang perintah atau untuk menghentikannya |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommands | Bidang kontrol | HTTP | Daftar perintah di akun Anda |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommand | Bidang kontrol | HTTP | Menghapus perintah |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| StartCommandExecution | Bidang data | HTTP | Mulai mengeksekusi perintah |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommandExecution | Bidang data | MQTT | Perbarui eksekusi perintah |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommandExecution | Bidang kontrol | HTTP | Mengambil informasi tentang eksekusi perintah |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommandExecutions | Bidang kontrol | HTTP | Daftar eksekusi perintah di akun Anda |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommandExecution | Bidang kontrol | HTTP | Menghapus eksekusi perintah |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 

Dalam contoh ini, ganti:
+ `us-east-1`dengan Anda Wilayah AWS, seperti`ap-south-1`.
+ `111122223333`dengan Akun AWS nomor Anda, seperti`57EXAMPLE833`.
+ `command-id`,`command-id1`, dan `command-id2` dengan pengidentifikasi perintah unik Anda, seperti `LockDoor` atau`TurnOffAC`.
+ `thing-name`dengan nama AWS IoT benda Anda, seperti`my_car`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "iot:CreateCommand",
                "iot:GetCommand",
                "iot:ListCommands",
                "iot:UpdateCommand",
                "iot:DeleteCommand"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id1",
                "arn:aws:iot:us-east-1:111122223333:command/command-id2"
            ]
        },
        {
            "Action": [
                "iot:GetCommandExecution",
                "iot:ListCommandExecutions",
                "iot:DeleteCommandExecution"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id",
                "arn:aws:iot:us-east-1:111122223333:thing/thing-name"
            ]
        },
        {
            "Action": "iot:StartCommandExecution",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id",
                "arn:aws:iot:us-east-1:111122223333:thing/thing-name"
            ]
        }
    ]
}
```

------

## Jalankan AWS IoT perintah (AWS CLI)
<a name="iot-remote-command-tutorial-run"></a>

Berikut ini menunjukkan bagaimana Anda dapat menggunakan AWS CLI untuk melakukan operasi perintah dan mengubah mode kemudi kendaraan.

1. 

**Buat sumber daya perintah untuk operasi mode kemudi**

   Buat perintah yang ingin Anda kirim ke perangkat Anda menggunakan `create-command` CLI. Dalam contoh ini, tentukan:
   + `command-id`sebagai *`TurnOffSteeringMode`*
   + `role-arn`sebagai `"arn:aws:iam:accountId:role/FwCommandExecutionRole"` `role-arn` Harus disediakan, karena itu adalah peran IAM yang memberikan izin untuk membuat dan menjalankan perintah pada kendaraan Anda. Untuk informasi selengkapnya, lihat [Berikan AWS IoT Device Management izin untuk menghasilkan muatan untuk perintah dengan AWS IoT FleetWise](controlling-access.md#generate-command-payload).
   + `display-name`sebagai "*`Turn off steering mode`*”
   + `namespace`harus `AWS-IoT-FleetWise`
   + `mandatory-parameters`sebagai pasangan nama-nilai, dengan `name` sebagai "*\$1actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode*" dan defaultValue sebagai `{ "S": "true" }`
**catatan**  
Anda juga dapat membuat perintah tanpa menentukan parameter wajib apa pun. Anda kemudian harus menentukan parameter yang akan digunakan saat menjalankan perintah menggunakan `start-command-execution` CLI. Sebagai contoh, lihat [Skenario penggunaan perintah](remote-command-use-cases.md).
**penting**  
Saat menggunakan `AWS-IoT-FleetWise` namespace, Anda harus memastikan bahwa `Name` bidang yang ditentukan sebagai bagian dari `mandatory-parameters` penggunaan `$actuatorPath.` awalan, dan `Value` bidang harus menggunakan tipe data string.

   ```
   aws iot create-command \ 
       --command-id TurnOffSteeringMode \ 
       --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
       --display-name "Turn off steering mode" \ 
       --namespace AWS-IoT-FleetWise \
       --mandatory-parameters '[
         {
           "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode",
           "defaultValue": { "S": "true" }
         }
       ]'
   ```

   Output berikut menunjukkan respon sampel dari CLI, di mana `ap-south-1` dan `123456789012` merupakan contoh dari Wilayah AWS dan Akun AWS ID.

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode"
   }
   ```

   Untuk contoh tambahan tentang penggunaan perintah ini, lihat[Buat sumber daya perintah](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Ambil informasi tentang perintah**

   Jalankan perintah berikut untuk mengambil informasi tentang perintah, di mana `command-id` ID perintah dalam output `create-command` operasi dari atas.
**catatan**  
Jika Anda membuat lebih dari satu perintah, Anda dapat menggunakan `ListCommands` API untuk mencantumkan semua perintah di akun Anda, lalu menggunakan `GetCommand` API untuk mendapatkan informasi tambahan tentang perintah tertentu. Untuk informasi selengkapnya, lihat [Daftar perintah di akun Anda](create-manage-remote-command-cli.md#list-remote-command-cli).

   ```
   aws iot get-command --command-id TurnOffSteeringMode
   ```

   Menjalankan perintah ini menghasilkan respons berikut. Anda akan melihat waktu ketika perintah dibuat dan kapan terakhir diperbarui, parameter apa pun yang Anda tentukan, dan apakah perintah tersedia untuk dijalankan di perangkat.

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode",
       "namespace": "AWS-IoT-FleetWise",
       "mandatoryParameters":[
           {
               "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode",
               "defaultValue": {"S": "true" }
           }
       ],
       "createdAt": "2024-03-23T00:50:10.095000-07:00",
       "lastUpdatedAt": "2024-03-23T00:50:10.095000-07:00",
       "deprecated": false
   }
   ```

   Untuk contoh tambahan tentang penggunaan perintah ini, lihat[Mengambil informasi tentang perintah](create-manage-remote-command-cli.md#get-remote-command-cli).

1. 

**Mulai eksekusi perintah**

   Jalankan perintah berikut untuk mulai menjalankan perintah, di `command-arn` mana perintah ARN dalam output operasi dari `get-command` atas. `target-arn`Ini adalah ARN dari perangkat target tempat Anda menjalankan perintah, misalnya,. *`myVehicle`*

   Dalam contoh ini, karena Anda memberikan nilai default untuk parameter saat membuat perintah, `start-command-execution` CLI dapat menggunakan nilai-nilai ini saat menjalankan perintah. Anda juga dapat memilih untuk mengganti nilai default dengan menentukan nilai yang berbeda untuk parameter saat menggunakan CLI.

   ```
   aws iot-data start-command-execution \    
       --command-arn arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode \
       --target-arn arn:aws:iot:ap-south-1:123456789012:thing/myVehicle
   ```

   Menjalankan perintah ini 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"
   }
   ```

   Untuk contoh tambahan tentang penggunaan CLI, lihat. [Kirim perintah (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli)

1. 

**Mengambil informasi tentang eksekusi perintah**

   Jalankan perintah berikut untuk mengambil informasi tentang perintah yang Anda jalankan pada perangkat target. Tentukan`execution-id`, yang Anda peroleh sebagai output `start-command-execution` operasi dari atas, dan`target-arn`, yang merupakan ARN perangkat yang Anda targetkan.
**catatan**  
Untuk mendapatkan informasi status terbaru, perangkat Anda harus telah mempublikasikan informasi status yang diperbarui ke topik respons cadangan MQTT untuk perintah menggunakan MQTT API. `UpdateCommandExecution` Untuk informasi selengkapnya, lihat [Perbarui hasil eksekusi perintah](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).
Jika Anda memulai lebih dari satu eksekusi perintah, Anda dapat menggunakan `ListCommandExecutions` API untuk mencantumkan semua eksekusi perintah di akun Anda, dan kemudian menggunakan `GetCommandExecution` API untuk mendapatkan informasi tambahan tentang eksekusi tertentu. Untuk informasi selengkapnya, lihat [Daftar eksekusi perintah di akun Anda](send-monitor-remote-command-cli.md#list-remote-command-execution-cli).

   ```
   aws iot get-command-execution \    
       --execution-id <"07e4b780-7eca-4ffd-b772-b76358da5542"> \ 
       --target-arn arn:aws:iot:us-east-1:<account>:thing/myVehicle
   ```

   Menjalankan perintah ini mengembalikan informasi tentang eksekusi perintah, status eksekusi, waktu ketika mulai mengeksekusi, dan waktu ketika itu selesai. Misalnya, respons berikut menunjukkan bahwa eksekusi perintah berhasil pada perangkat target dan mode kemudi dimatikan.

   ```
   {
       "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode",
       "targetArn": "arn:aws:iot:ap-south-1:123456789012:thing/myVehicle",
       "result": "SUCCEEDED",
        "statusReason": {
           "reasonCode": "65536",
           "reasonDescription": "SUCCESS"
       },
       "result": {
           "KeyName": {
               "S": "",
               "B": true,
               "BIN": null
           }
       },
       "createdAt": "2024-03-23T00:50:10.095000-07:00",
       "completedAt": "2024-03-23T00:50:10.095000-07:00",
       "parameters": '{
            "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode":
            { "S": "true" }
       }' 
   }
   ```

## Membersihkan
<a name="remote-command-tutorial-clean"></a>

Sekarang setelah Anda membuat perintah dan menjalankannya di perangkat Anda, jika Anda tidak lagi berniat menggunakan perintah ini, Anda dapat menghapusnya. Setiap eksekusi perintah yang tertunda yang sedang berlangsung akan terus berjalan tanpa terpengaruh oleh permintaan penghapusan.

**catatan**  
Atau, Anda juga dapat menghentikan perintah jika sudah usang dan Anda mungkin perlu menggunakannya nanti untuk berjalan di perangkat target.

1. 

**(Opsional) Menghentikan sumber daya perintah**

   Jalankan perintah berikut untuk menghentikan perintah, di `command-id` mana ID perintah dalam output `get-command` operasi dari atas.

   ```
   aws iot update-command \    
      --command-id TurnOffSteeringMode \    
      --deprecated
   ```

   Menjalankan perintah ini mengembalikan output yang menunjukkan perintah telah usang. Anda juga dapat menggunakan CLI untuk mengembalikan perintah. 
**catatan**  
Anda juga dapat menggunakan `update-command` CLI untuk memperbarui nama tampilan dan deskripsi perintah. Untuk informasi tambahan, lihat [Memperbarui atau menghentikan sumber daya perintah](create-manage-remote-command-cli.md#update-remote-command-cli).

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "deprecated": true,
       "lastUpdatedAt": "2024-05-09T23:16:51.370000-07:00"
   }
   ```

1. 

**Hapus perintah**

   Jalankan perintah berikut untuk menghapus perintah, yang ditentukan oleh`command-id`.
**catatan**  
Tindakan penghapusan bersifat permanen dan tidak dapat dibatalkan.

   ```
   aws iot delete-command --command-id TurnOffSteeringMode
   ```

   Jika permintaan penghapusan berhasil, Anda akan melihat HTTP `statusCode` 202 atau 204 tergantung pada apakah Anda menandai perintah untuk penghentian dan kapan itu tidak digunakan lagi. Untuk informasi lebih lanjut dan contoh, lihat [Hapus sumber daya perintah](create-manage-remote-command-cli.md#delete-remote-command-cli).

   Anda dapat menggunakan `get-command` CLI untuk memverifikasi bahwa perintah telah dihapus dari akun Anda.

1. 

**(Opsional) Hapus eksekusi perintah**

   Secara default, semua eksekusi perintah akan dihapus dalam enam bulan sejak tanggal Anda membuatnya. Anda dapat melihat informasi ini menggunakan `timeToLive` parameter dari `GetCommandExecution` API.

   Atau, jika eksekusi perintah Anda telah menjadi terminal, seperti ketika status eksekusi Anda adalah salah satu`SUCCEEDED`,`FAILED`, atau`REJECTED`, Anda dapat menghapus eksekusi perintah. Jalankan perintah berikut untuk menghapus eksekusi, di mana `execution-id` ID Eksekusi dalam output `get-command-execution` operasi dari atas.

   ```
   aws iot delete-command-execution \ 
               --execution-id "07e4b780-7eca-4ffd-b772-b76358da5542"
   ```

   Anda dapat menggunakan `get-command-execution` CLI untuk memverifikasi bahwa eksekusi perintah telah dihapus dari akun Anda.

# Skenario penggunaan perintah
<a name="remote-command-use-cases"></a>

**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](fleetwise-regions.md).

Saat menggunakan fitur perintah, Anda dapat membuat dan menjalankan perintah dalam skenario berikut:
+ Anda dapat menghilangkan parameter selama pembuatan dan hanya menentukan ID perintah. Dalam hal ini, Anda perlu menentukan parameter yang akan digunakan saat menjalankan perintah pada perangkat target.
+ Anda dapat menentukan satu atau lebih parameter, dan mengkonfigurasi nilai default untuk mereka saat membuat perintah. Memberikan nilai default akan membantu melindungi Anda dari pengiriman perintah yang tidak akurat.
+ Anda dapat menentukan satu atau lebih parameter, dan mengkonfigurasi nilai untuk mereka saat membuat perintah. Lebih dari satu parameter dapat disediakan tetapi hanya satu dari mereka yang akan dieksekusi, dan `Name` bidang parameter ini harus menggunakan `$actuatorPath` awalan.

Bagian ini menyediakan beberapa skenario penggunaan untuk `CreateCommand` dan `StartCommandExecution` API dan menggunakan parameter. Ini juga menunjukkan beberapa contoh penggunaan perintah dengan template negara.

**Topics**
+ [Membuat perintah tanpa parameter](#remote-command-use-case1)
+ [Membuat perintah dengan nilai default untuk parameter](#remote-command-use-case2)
+ [Membuat perintah dengan nilai parameter](#remote-command-use-case3)
+ [Menggunakan perintah dengan template negara](#remote-command-use-cases-templates)

## Membuat perintah tanpa parameter
<a name="remote-command-use-case1"></a>

Kasus penggunaan berikut menunjukkan bagaimana Anda dapat menggunakan `CreateCommand` API atau `create-command` CLI untuk membuat perintah tanpa parameter. Saat Anda membuat perintah, Anda hanya perlu memberikan ID perintah dan peran ARN.

Kasus penggunaan ini sangat berguna dalam kasus penggunaan berulang, seperti ketika Anda ingin mengirim perintah yang sama beberapa kali ke kendaraan. Dalam hal ini, perintah tidak terikat pada aktuator tertentu dan memberi Anda fleksibilitas untuk menjalankan perintah pada aktuator apa pun. Anda harus menentukan parameter pada waktu berjalan sebagai gantinya ketika menjalankan perintah menggunakan `StartCommandExecution` API atau `start-command-execution` CLI, yang mencakup aktuator dan nilai sinyal fisik.

### Membuat perintah tanpa `mandatory-parameters` input
<a name="remote-command-use-case1-create"></a>

Kasus penggunaan ini menunjukkan cara membuat perintah tanpa input parameter wajib.

```
aws iot create-command \
    --command-id "UserJourney1" \
    --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
    --description "UserJourney1 - No mandatory parameters" \
    --namespace "AWS-IoT-FleetWise"
```

### Menjalankan perintah yang dibuat tanpa `mandatory-parameters` input
<a name="remote-command-use-case1-start"></a>

Dalam contoh pertama ini, perintah yang dibuat di atas memungkinkan Anda untuk menjalankan perintah pada aktuator apa pun tanpa batasan. Untuk mengatur `actuator1` ke nilai 10, jalankan:

```
aws iot-jobs-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney1 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle \
    --parameters '{
        "$actuatorPath.Vehicle.actuator1": {"S": "10"}
    }'
```

Demikian pula, Anda dapat menjalankan perintah `actuator3` yang menetapkan nilai`true`.

```
aws iot-jobs-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney1 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle \
    --parameters '{
        "$actuatorPath.Vehicle.actuator3": {"S": "true"}
    }'
```

## Membuat perintah dengan nilai default untuk parameter
<a name="remote-command-use-case2"></a>

Perintah ini hanya memungkinkan Anda untuk menjalankan perintah pada aktuator yang ditentukan. Memberikan nilai default akan membantu melindungi Anda dari pengiriman perintah yang tidak akurat. Misalnya, `LockDoor` perintah yang mengunci dan membuka kunci pintu dapat dikonfigurasi dengan nilai default untuk menghindari perintah membuka pintu secara tidak sengaja.

Kasus penggunaan ini sangat berguna ketika Anda ingin mengirim perintah yang sama beberapa kali dan melakukan tindakan berbeda pada aktuator yang sama, seperti mengunci dan membuka kunci pintu kendaraan. Jika Anda ingin mengatur aktuator ke nilai default, maka Anda tidak perlu meneruskan qny `parameters` ke CLI. `start-command-execution` Jika Anda menentukan nilai yang berbeda untuk `parameters` di `start-command-execution` CLI, itu akan mengganti nilai default.

### Membuat perintah dengan nilai default untuk `mandatory-parameters`
<a name="remote-command-use-case2-create"></a>

Perintah berikut menunjukkan bagaimana memberikan nilai default untuk actuator1.

```
aws iot create-command \
    --command-id "UserJourney2" \
    --namespace "AWS-IoT-FleetWise" \
    --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
    --mandatory-parameters '[
        {
            "name": "$actuatorPath.Vehicle.actuator1",
            "defaultValue": {"S": "0"}
        }
    ]'
```

### Menjalankan perintah yang dibuat dengan nilai default untuk `mandatory-parameters`
<a name="remote-command-use-case2-start"></a>

Perintah `UserJourney2` ini memungkinkan Anda untuk menjalankan perintah tanpa perlu melewatkan nilai input selama runtime. Dalam hal ini, eksekusi saat runtime akan menggunakan nilai default yang ditentukan selama pembuatan.

```
aws iot-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney3 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle
```

Anda juga dapat meneruskan nilai yang berbeda untuk aktuator yang sama, actuator1, selama runtime, yang akan mengganti nilai default.

```
aws iot-jobs-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney3 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle \
    --parameters '{
        "$actuatorPath.Vehicle.actuator1": {"S": "139"}
    }'
```

## Membuat perintah dengan nilai parameter
<a name="remote-command-use-case3"></a>

Perintah ini hanya memungkinkan Anda untuk menjalankan perintah pada aktuator yang ditentukan. Ini juga memaksa Anda untuk menetapkan nilai untuk aktuator selama runtime.

Kasus penggunaan ini sangat berguna ketika Anda ingin pengguna akhir hanya melakukan tindakan tertentu tertentu pada beberapa aktuator saat menjalankannya di kendaraan.

**catatan**  
Anda dapat memiliki lebih dari pasangan nama-nilai untuk `mandatory-parameters` input, dengan nilai default untuk beberapa atau semuanya. Saat runtime, Anda kemudian dapat menentukan parameter yang ingin Anda gunakan saat menjalankan aktuator, asalkan nama aktuator menggunakan nama yang sepenuhnya memenuhi syarat dengan awalan. `$actuatorPath.`

### Membuat perintah tanpa nilai default untuk `mandatory-parameters`
<a name="remote-command-use-case3-create"></a>

Perintah ini hanya memungkinkan Anda untuk menjalankan perintah pada aktuator yang ditentukan. Ini juga memaksa Anda untuk menetapkan nilai untuk aktuator selama runtime.

```
aws iot create-command \
    --command-id "UserJourney2" \
    --namespace "AWS-IoT-FleetWise" \
    --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
    --mandatory-parameters '[
        {
            "name": "$actuatorPath.Vehicle.actuator1"
        }
    ]'
```

### Menjalankan perintah yang dibuat tanpa nilai default untuk `mandatory-parameters`
<a name="remote-command-use-case3-start"></a>

Saat menjalankan perintah, dalam hal ini, Anda harus menentukan nilai untuk aktuator1. Eksekusi perintah yang ditunjukkan di bawah ini akan berhasil mengatur nilai `actuator1` to`10`.

```
aws iot-data start-command-execution \    
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney2 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle \
    --parameters '{
        "$actuatorPath.Vehicle.actuator1": {"S": "10"}
    }'
```

## Menggunakan perintah dengan template negara
<a name="remote-command-use-cases-templates"></a>

Anda juga dapat menggunakan perintah operasi API untuk pengumpulan dan pemrosesan data status. Misalnya, Anda dapat mengambil snapshot status satu kali atau mengaktifkan atau menonaktifkan templat status untuk memulai atau menghentikan pengumpulan data status kendaraan. Contoh berikut menunjukkan cara menggunakan fitur perintah dengan template negara. Untuk informasi selengkapnya, lihat [Operasi templat status untuk pengumpulan dan pemrosesan data](state-template-api-operations.md)

**catatan**  
Bidang Nama yang ditentukan sebagai bagian dari `mandatory-parameters` input harus menggunakan `$stateTemplate` awalan.

### Contoh 1: Membuat perintah untuk template status dengan nilai default
<a name="remote-command-use-cases-template-ex1"></a>

Contoh ini menunjukkan cara menggunakan `create-command` CLI untuk mengaktifkan template status.

```
aws iot create-command \
    --command-id <COMMAND_ID> \
    --display-name "Activate State Template" \
    --namespace AWS-IoT-FleetWise \    
    --mandatory-parameters '[
      {
          "name": "$stateTemplate.name"
      },
      {
          "name": "$stateTemplate.operation",
          "defaultValue": {"S": "activate"}
      }
    ]'
```

Demikian pula, perintah berikut menunjukkan contoh bagaimana Anda dapat menggunakan `start-command-execution` CLI untuk template negara.

```
aws iot-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/<COMMAND_ID> \
    --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME> \
    --parameters '{
       "$stateTemplate.name": {"S": "ST345"}
    }'
```

### Contoh 2: Membuat perintah untuk template status tanpa nilai default
<a name="remote-command-use-cases-template-ex2"></a>

Perintah berikut membuat beberapa template status tanpa nilai default untuk salah satu parameter. Ini memaksa Anda untuk menjalankan perintah dengan parameter ini dan nilai-nilai untuk mereka.

```
aws iot create-command \
    --command-id <COMMAND_ID> \
    --display-name "Activate State Template" \
    --namespace AWS-IoT-FleetWise \
    --mandatory-parameters '[
      {
          "name": "$stateTemplate.name",
          "defaultValue": {"S": "ST123"}
      },
      {
          "name": "$stateTemplate.operation",
          "defaultValue": {"S": "activate"}
      },
      {
          "name": "$stateTemplate.deactivateAfterSeconds",
          "defaultValue": {"L": "120"}
      } 
    ]'
```

Perintah berikut menunjukkan bagaimana Anda dapat menggunakan `start-command-execution` CLI untuk contoh di atas.

```
aws iot-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/<COMMAND_ID> \
    --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME> \
    --parameters '{
        "$stateTemplate.name": {"S": "ST345"},
        "$stateTemplate.operation": {"S": "activate"},
        "$stateTemplate.deactivateAfterSeconds" : {"L": "120"}
```