

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

# Memulai dan memantau pelaksanaan perintah
<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.