

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esempio: utilizzo dei comandi per controllare la modalità di sterzo di un veicolo (AWS CLI)
<a name="remote-command-tutorial"></a>

**Importante**  
L'accesso a determinate FleetWise funzionalità AWS IoT è attualmente limitato. Per ulteriori informazioni, consulta [AWS Disponibilità di aree e funzionalità nell' AWS IoT FleetWise](fleetwise-regions.md).

L'esempio seguente mostra come utilizzare la funzionalità dei comandi utilizzando. AWS CLI Questo esempio utilizza un AWS IoT FleetWise veicolo come dispositivo di destinazione per mostrare come inviare un comando per controllare a distanza la modalità di sterzo.

**Topics**
+ [Panoramica dell'esempio della modalità di sterzo del veicolo](#iot-remote-command-tutorial-overview)
+ [Prerequisiti](#iot-remote-command-tutorial-prereq)
+ [Politica IAM per l'utilizzo dei comandi remoti](#remote-command-policy)
+ [Esegui AWS IoT comandi (AWS CLI)](#iot-remote-command-tutorial-run)
+ [Pulizia](#remote-command-tutorial-clean)

## Panoramica dell'esempio della modalità di sterzo del veicolo
<a name="iot-remote-command-tutorial-overview"></a>

In questo esempio, potrai:

1. Crea una risorsa di comando per l'operazione utilizzando `create-command` AWS CLI per modificare la modalità di sterzo del veicolo.

1. Recupera informazioni sul comando, ad esempio l'ora in cui è stato creato o l'ultimo aggiornamento utilizzando il `get-command` AWS CLI.

1. Invia il comando al veicolo utilizzando la modalità `start-command-execution` AWS CLI con lo sterzo come parametro obbligatorio, che verrà quindi eseguito sul dispositivo.

1. Ottieni il risultato dell'esecuzione del comando utilizzando `get-command-execution` AWS CLI. È possibile verificare quando l'esecuzione è stata completata e recuperare dettagli aggiuntivi come il risultato dell'esecuzione e il tempo impiegato per completare l'esecuzione del comando.

1. Esegui attività di pulizia rimuovendo tutti i comandi e le esecuzioni di comandi che non desideri più utilizzare.

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

Prima di eseguire questo esempio:
+ Inserisci il tuo AWS IoT FleetWise AWS IoT veicolo nel AWS IoT registro. Devi anche aggiungere un certificato al tuo dispositivo, attivarlo e allegare una politica al tuo programma. Il dispositivo può quindi connettersi al cloud ed eseguire i comandi. Per ulteriori informazioni, consulta [Fornitura di veicoli](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/provision-vehicles.html).
+ Crea un utente IAM e una policy IAM che ti conceda l'autorizzazione a eseguire le operazioni API per l'utilizzo dei comandi, come mostrato in[Politica IAM per l'utilizzo dei comandi remoti](#remote-command-policy).

## Politica IAM per l'utilizzo dei comandi remoti
<a name="remote-command-policy"></a>

La tabella seguente mostra un esempio di policy IAM che concede l'accesso a tutte le operazioni API del piano di controllo e del piano dati per la funzionalità dei comandi. L'utente dell'applicazione disporrà delle autorizzazioni per eseguire tutte le operazioni dell'API di comando remoto, come mostrato nella tabella.


**Operazione API**  

| Azione API | Piano di controllo/dati | Protocollo | Description | Risorsa | 
| --- | --- | --- | --- | --- | 
| CreateCommand | Piano di controllo | HTTP | Crea una risorsa di comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommand | Piano di controllo | HTTP | Recupera informazioni su un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommand | Piano di controllo | HTTP | Aggiorna le informazioni su un comando o lo rende obsoleto |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommands | Piano di controllo | HTTP | Elenca i comandi presenti nel tuo account |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommand | Piano di controllo | HTTP | Elimina un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| StartCommandExecution | Piano dati | HTTP | Inizia l'esecuzione di un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommandExecution | Piano dati | MQTT | Aggiorna l'esecuzione di un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommandExecution | Piano di controllo | HTTP | Recupera informazioni sull'esecuzione di un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommandExecutions | Piano di controllo | HTTP | Elenca le esecuzioni di comandi nel tuo account |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommandExecution | Piano di controllo | HTTP | Elimina l'esecuzione di un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 

In questo esempio, sostituisci:
+ `us-east-1`con il tuo Regione AWS, ad esempio`ap-south-1`.
+ `111122223333`con il tuo Account AWS numero, ad esempio`57EXAMPLE833`.
+ `command-id``command-id1`, e `command-id2` con il tuo identificatore di comando univoco, ad esempio `LockDoor` o`TurnOffAC`.
+ `thing-name`con il nome dell' AWS IoT oggetto, ad esempio`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"
            ]
        }
    ]
}
```

------

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

Di seguito viene illustrato come utilizzare i comandi AWS CLI per eseguire operazioni e modificare la modalità di sterzo del veicolo.

1. 

**Crea una risorsa di comando per il funzionamento in modalità sterzo**

   Crea il comando che desideri inviare al tuo dispositivo utilizzando la `create-command` CLI. In questo esempio, specifica:
   + `command-id` come *`TurnOffSteeringMode`*
   + `role-arn`as `"arn:aws:iam:accountId:role/FwCommandExecutionRole"` `role-arn` Deve essere fornito, in quanto è il ruolo IAM che concede le autorizzazioni per creare ed eseguire comandi sul veicolo. Per ulteriori informazioni, consulta [Concedi AWS IoT Device Management l'autorizzazione a generare il payload per i comandi con AWS IoT FleetWise](controlling-access.md#generate-command-payload).
   + `display-name`come "» *`Turn off steering mode`*
   + `namespace`deve essere `AWS-IoT-FleetWise`
   + `mandatory-parameters`come coppia nome-valore, con "*\$1actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode*" e defaultValue `name` come `{ "S": "true" }`
**Nota**  
È inoltre possibile creare un comando senza specificare alcun parametro obbligatorio. È quindi necessario specificare i parametri da utilizzare durante l'esecuzione del comando utilizzando la `start-command-execution` CLI. Per vedere un esempio, consulta [Scenari di utilizzo dei comandi](remote-command-use-cases.md).
**Importante**  
Quando si utilizza lo spazio dei `AWS-IoT-FleetWise` nomi, è necessario assicurarsi che il `Name` campo specificato come parte del prefisso `mandatory-parameters` utilizzi il `$actuatorPath.` prefisso e che il `Value` campo utilizzi il tipo di dati stringa.

   ```
   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" }
         }
       ]'
   ```

   L'output seguente mostra una risposta di esempio dalla CLI, dove `ap-south-1` e `123456789012` sono esempi di Regione AWS and Account AWS ID.

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

   Per ulteriori esempi sull'utilizzo di questo comando, vedere[Crea una risorsa di comando](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Recuperare informazioni sul comando**

   Esegui il comando seguente per recuperare informazioni sul comando, `command-id` dov'è l'ID del comando nell'output dell'`create-command`operazione dall'alto.
**Nota**  
Se crei più di un comando, puoi utilizzare l'`ListCommands`API per elencare tutti i comandi del tuo account e quindi utilizzare l'`GetCommand`API per ottenere informazioni aggiuntive su un comando specifico. Per ulteriori informazioni, consulta [Elenca i comandi nel tuo account](create-manage-remote-command-cli.md#list-remote-command-cli).

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

   L'esecuzione di questo comando genera la seguente risposta. Vedrai l'ora in cui il comando è stato creato e quando è stato aggiornato l'ultima volta, i parametri specificati e se il comando è disponibile per l'esecuzione sul dispositivo.

   ```
   {
       "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
   }
   ```

   Per ulteriori esempi sull'utilizzo di questo comando, vedere[Recupera informazioni su un comando](create-manage-remote-command-cli.md#get-remote-command-cli).

1. 

**Avviare l'esecuzione del comando**

   Esegui il comando seguente per iniziare l'esecuzione del comando, dove `command-arn` è il comando ARN nell'output dell'`get-command`operazione dall'alto. `target-arn`È l'ARN del dispositivo di destinazione per il quale si sta eseguendo il comando, ad esempio,. *`myVehicle`*

   In questo esempio, poiché hai fornito valori predefiniti per i parametri durante la creazione del comando, la `start-command-execution` CLI può utilizzare questi valori durante l'esecuzione del comando. Puoi anche scegliere di sovrascrivere il valore predefinito specificando un valore diverso per i parametri quando usi la 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
   ```

   L'esecuzione di questo comando restituisce un ID di esecuzione del comando. È possibile utilizzare questo ID per interrogare lo stato di esecuzione del comando, i dettagli e la cronologia di esecuzione dei comandi.

   ```
   {
       "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542"
   }
   ```

   Per ulteriori esempi sull'utilizzo della CLI, vedere. [Invia un comando ()AWS CLI](send-monitor-remote-command-cli.md#send-remote-command-cli)

1. 

**Recuperare informazioni sull'esecuzione del comando**

   Esegui il comando seguente per recuperare informazioni sul comando che hai eseguito sul dispositivo di destinazione. Specificate il`execution-id`, che avete ottenuto come output dell'`start-command-execution`operazione dall'alto, e il`target-arn`, che è l'ARN del dispositivo a cui state puntando.
**Nota**  
Per ottenere le informazioni più recenti sullo stato, i dispositivi devono aver pubblicato le informazioni di stato aggiornate nell'argomento di risposta riservato MQTT per i comandi che utilizzano l'`UpdateCommandExecution`API MQTT. Per ulteriori informazioni, consulta [Aggiorna il risultato dell'esecuzione del comando](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).
Se si avvia più di un'esecuzione di comandi, è possibile utilizzare l'`ListCommandExecutions`API per elencare tutte le esecuzioni di comandi nell'account e quindi utilizzare l'`GetCommandExecution`API per ottenere informazioni aggiuntive su un'esecuzione specifica. Per ulteriori informazioni, consulta [Elenca le esecuzioni dei comandi nel tuo account](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
   ```

   L'esecuzione di questo comando restituisce informazioni sull'esecuzione del comando, sullo stato dell'esecuzione, sull'ora in cui ha iniziato l'esecuzione e l'ora in cui è stata completata. Ad esempio, la risposta seguente mostra che l'esecuzione del comando è riuscita sul dispositivo di destinazione e la modalità di guida è stata disattivata.

   ```
   {
       "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" }
       }' 
   }
   ```

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

Ora che avete creato un comando e lo avete eseguito sul dispositivo, se non intendete più utilizzare questo comando, potete eliminarlo. Tutte le esecuzioni di comandi in sospeso in corso continueranno a essere eseguite senza essere influenzate dalla richiesta di eliminazione.

**Nota**  
In alternativa, puoi anche rendere obsoleto un comando se è obsoleto e potresti doverlo utilizzare in un secondo momento per eseguirlo sul dispositivo di destinazione.

1. 

**(Facoltativo) Deprecate la risorsa del comando**

   Eseguite il comando seguente per rendere obsoleto il comando, `command-id` dov'è l'ID del comando nell'output dell'`get-command`operazione riportata sopra.

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

   L'esecuzione di questo comando restituisce un output che indica che il comando è obsoleto. È inoltre possibile utilizzare la CLI per ripristinare il comando. 
**Nota**  
È inoltre possibile utilizzare la `update-command` CLI per aggiornare il nome visualizzato e la descrizione di un comando. Per ulteriori informazioni, consulta [Aggiorna o depreca una risorsa di comando](create-manage-remote-command-cli.md#update-remote-command-cli).

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

1. 

**Eliminare il comando**

   Esegui il comando seguente per eliminare il comando, specificato da`command-id`.
**Nota**  
L'azione di eliminazione è permanente e non può essere annullata.

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

   Se la richiesta di eliminazione ha esito positivo, verrà visualizzato un HTTP `statusCode` pari a 202 o 204 a seconda che il comando sia stato contrassegnato come obsoleto e quando è diventato obsoleto. Per ulteriori informazioni e un esempio, consulta [Eliminare una risorsa di comando](create-manage-remote-command-cli.md#delete-remote-command-cli).

   Puoi utilizzare la `get-command` CLI per verificare che il comando sia stato rimosso dal tuo account.

1. 

**(Facoltativo) Eliminare le esecuzioni dei comandi**

   Per impostazione predefinita, tutte le esecuzioni di comandi verranno eliminate entro sei mesi dalla data di creazione. È possibile visualizzare queste informazioni utilizzando il `timeToLive` parametro dell'`GetCommandExecution`API.

   In alternativa, se l'esecuzione del comando è diventata terminale, ad esempio quando lo stato di esecuzione è uno di `SUCCEEDED``FAILED`, oppure`REJECTED`, è possibile eliminare l'esecuzione del comando. Esegui il comando seguente per eliminare l'esecuzione, `execution-id` dov'è l'ID di esecuzione nell'output dell'`get-command-execution`operazione dall'alto.

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

   Puoi utilizzare la `get-command-execution` CLI per verificare che l'esecuzione del comando sia stata rimossa dal tuo account.