

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

**Important**  
L'accès à certaines FleetWise fonctionnalités de AWS l'IoT est actuellement restreint. Pour de plus amples informations, veuillez consulter [AWS Disponibilité des régions et des fonctionnalités dans AWS l'IoT FleetWise](fleetwise-regions.md).  
Cette documentation décrit comment utiliser la [fonctionnalité de commandes pour AWS l'IoT FleetWise](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html#commands-iotfw-namespace). Pour plus d'informations sur l'utilisation de la fonctionnalité de commandes dans AWS IoT Device Management, consultez la section [commandes](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command.html).  
Vous êtes seul responsable du déploiement des commandes d'une manière sûre et conforme aux lois applicables. Pour plus d'informations sur vos responsabilités, veuillez consulter les [conditions AWS de service relatives AWS IoT aux services](https://aws.amazon.com/service-terms/).

Utilisez la fonction de commandes pour exécuter des commandes sur un véhicule depuis le cloud. Les commandes ciblent un appareil à la fois et peuvent être utilisées pour des applications à faible latence et à haut débit, par exemple pour récupérer les journaux côté appareil ou pour initier un changement d'état de l'appareil.

La *commande* est une ressource gérée par AWS IoT Device Management. Il contient des configurations réutilisables qui sont appliquées lors de l'envoi d'une exécution de commande au véhicule. Vous pouvez prédéfinir un ensemble de commandes pour des cas d'utilisation spécifiques ou les utiliser pour créer des configurations réutilisables pour des cas d'utilisation récurrents. Par exemple, vous pouvez configurer des commandes qui peuvent être utilisées par une application pour verrouiller la portière d'un véhicule ou pour modifier la température à distance.

À l'aide de la fonction de AWS IoT commandes, vous pouvez :
+ Créez une ressource de commande et réutilisez la configuration pour envoyer plusieurs commandes à votre appareil cible, puis exécutez-les sur le périphérique.
+ Contrôlez la granularité avec laquelle vous souhaitez que chaque commande soit exécutée sur l'appareil. Par exemple, vous pouvez approvisionner un véhicule en tant qu' AWS IoT objet, puis envoyer une commande pour verrouiller ou déverrouiller les portières du véhicule.
+ Exécutez plusieurs commandes simultanément sur l'appareil cible sans attendre que la précédente soit terminée.
+ Choisissez d'activer les notifications pour les événements liés aux commandes et de récupérer les informations d'état et de résultat sur l'appareil lors de l'exécution de la commande et une fois celle-ci terminée.

Les rubriques suivantes expliquent comment créer, envoyer, recevoir et gérer des commandes.

**Topics**
+ [Concepts de commandes](remote-command-concepts-states.md)
+ [Véhicules et commandes](remote-command-vehicles.md)
+ [Création et gestion de commandes](create-manage-remote-command-cli.md)
+ [Démarrage et surveillance des exécutions de commandes](send-monitor-remote-command-cli.md)
+ [Exemple : utilisation de commandes pour contrôler le mode de direction d'un véhicule (AWS CLI)](remote-command-tutorial.md)
+ [Scénarios d'utilisation des commandes](remote-command-use-cases.md)

# Concepts de commandes
<a name="remote-command-concepts-states"></a>

**Important**  
L'accès à certaines FleetWise fonctionnalités de AWS l'IoT est actuellement restreint. Pour de plus amples informations, veuillez consulter [AWS Disponibilité des régions et des fonctionnalités dans AWS l'IoT FleetWise](fleetwise-regions.md).

Les commandes sont des instructions envoyées depuis le cloud à votre appareil cible. L'équipement cible peut être un véhicule et il doit être enregistré en tant qu'*AWS IoT objet* dans le registre des objets. La commande peut contenir des paramètres qui définissent une action que les actionneurs du véhicule doivent effectuer. Le véhicule analyse ensuite la commande et ses paramètres, puis les traite pour effectuer l'action correspondante. Il répond ensuite à l'application cloud avec l'état de l'exécution de la commande.

Pour le flux de travail détaillé, voir[Véhicules et commandes](remote-command-vehicles.md).

**Topics**
+ [Concepts clés des commandes](#remote-command-concepts)
+ [Statut d’exécution de la commande](#remote-command-execution-status-codes)

## Concepts clés des commandes
<a name="remote-command-concepts"></a>

Vous trouverez ci-dessous quelques concepts clés relatifs à l'utilisation de la fonctionnalité de commandes et son fonctionnement avec les modèles d'état du dernier état connu (LKS).

**Commande**  
Une commande est une entité que vous pouvez utiliser pour envoyer des instructions à un véhicule physique afin qu'il exécute des actions telles que la mise en marche du moteur ou la modification de la position des vitres. Vous pouvez prédéfinir un ensemble de commandes pour des cas d'utilisation spécifiques ou les utiliser pour créer des configurations réutilisables pour des cas d'utilisation récurrents. Par exemple, vous pouvez configurer des commandes qui peuvent être utilisées par une application pour verrouiller la portière d'un véhicule ou pour modifier la température à distance.

**Namespace**  
Lorsque vous utilisez la fonctionnalité des commandes, vous devez spécifier l'espace de noms de la commande. Lorsque vous créez une commande dans AWS l'IoT FleetWise, vous devez la choisir `AWS-IoT-FleetWise` comme espace de noms. Lorsque vous utilisez cet espace de noms, vous devez fournir les paramètres qui seront utilisés pour exécuter la commande sur le véhicule. Si vous souhaitez créer une commande à la AWS IoT Device Management place, vous devez utiliser l'espace de `AWS-IoT` noms à la place. Pour plus d'informations, consultez [les commandes](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command.html) du *guide du AWS IoT Device Management développeur*.

**États de commande**  
Les commandes que vous créez seront disponibles, ce qui signifie qu'elles peuvent être utilisées pour démarrer une exécution de commande sur le véhicule. Si une commande devient obsolète, vous pouvez la déprécier. Pour une commande à l'état obsolète, les exécutions de commandes existantes seront exécutées jusqu'à la fin. Vous ne pouvez pas mettre à jour la commande ni exécuter de nouvelles exécutions. Pour envoyer de nouvelles exécutions, vous devez restaurer la commande afin qu'elle soit disponible.  
Vous pouvez également supprimer une commande si elle n'est plus nécessaire. Lorsque vous marquez une commande pour suppression, si la commande est devenue obsolète pendant une durée supérieure au délai maximum de 24 heures, elle est immédiatement supprimée. Si la commande n'est pas obsolète, ou si elle l'a été pendant une durée inférieure au délai maximum, elle sera en attente de suppression. La commande sera automatiquement supprimée de votre compte au bout de 24 heures.

**Paramètres**  
Lorsque vous créez une commande, vous pouvez éventuellement spécifier les paramètres que vous souhaitez que le véhicule cible exécute lors de l'exécution de la commande. La commande que vous créez est une configuration réutilisable qui peut être utilisée pour envoyer plusieurs exécutions de commandes à votre véhicule et les exécuter simultanément. Vous pouvez également spécifier les paramètres uniquement lors de l'exécution et choisir d'effectuer une opération unique consistant à créer une commande et à l'envoyer à votre véhicule.

**Véhicule cible**  
Lorsque vous souhaitez exécuter la commande, vous devez spécifier un véhicule cible qui recevra la commande et exécutera des actions spécifiques. Le véhicule cible doit déjà avoir été enregistré en tant qu'*objet* auprès de AWS IoT. Une fois que vous avez envoyé la commande au véhicule, celui-ci commence à exécuter une instance de la commande en fonction des paramètres et des valeurs que vous avez spécifiés.

**Actionneurs**  
Lorsque vous souhaitez exécuter la commande, vous devez spécifier les actionneurs du véhicule qui recevront la commande et leurs valeurs qui détermineront les actions à effectuer. Vous pouvez éventuellement configurer des valeurs par défaut pour les actionneurs afin d'éviter d'envoyer des commandes inexactes. Par exemple, vous pouvez utiliser la valeur par défaut d'`LockDoor`un actionneur de verrouillage de porte afin que la commande ne déverrouille pas accidentellement les portes. Pour des informations générales sur les actionneurs, voir[Concepts clés](how-iotfleetwise-works.md#key-concepts).

**Support des types de données**  
Les types de données suivants sont pris en charge pour les actionneurs utilisés pour la fonction de commandes.  
Les tableaux ne sont pas pris en charge pour les données télématiques, les commandes ou le dernier état connu (LKS). Vous ne pouvez utiliser le type de données matriciel que pour les données des systèmes de vision.
+ Types à virgule flottante. Les types suivants sont pris en charge.
  + Float (32 bits)
  + Double (64 bits)
+ Entier (signé et non signé). Les types d'entiers suivants sont pris en charge.
  + int8 et uint8
  + int16 et uint16
  + int32 et uint32
+ Longue. Les types longs suivants sont pris en charge.
  + Longue (int64)
  + Long non signé (uint64)
+ String
+ Booléen

**Exécution de commandes**  
Une exécution de commande est une instance d'une commande exécutée sur un équipement cible. Le véhicule exécute la commande en utilisant les paramètres que vous avez spécifiés lorsque vous avez créé la commande ou lorsque vous l'avez lancée. Le véhicule exécute ensuite les opérations spécifiées et renvoie le statut de l'exécution.  
Pour un véhicule donné, vous pouvez exécuter plusieurs commandes simultanément. Pour plus d'informations sur le nombre maximal d'exécutions simultanées que vous pouvez exécuter pour chaque véhicule, consultez la section [quotas de AWS IoT Device Management commandes](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#commands-limits).

**Modèles d'état du dernier état connu (LKS)**  
Les modèles d'état fournissent un mécanisme permettant aux propriétaires de véhicules de suivre l'état de leur véhicule. Pour surveiller le dernier état connu (LKS) de vos véhicules en temps quasi réel, vous pouvez créer des modèles d'état et les associer à vos véhicules.  
À l'aide de la fonction de commandes, vous pouvez effectuer des opérations « à la demande » qui peuvent être utilisées pour la collecte et le traitement des données d'État. Par exemple, vous pouvez demander l'état actuel du véhicule une seule fois (récupérer), ou activer ou désactiver les modèles d'état LKS précédemment déployés pour commencer ou arrêter de communiquer les données du véhicule. Pour des exemples illustrant l'utilisation de commandes avec des modèles d'état, consultez[Scénarios d'utilisation des commandes](remote-command-use-cases.md).

## Statut d’exécution de la commande
<a name="remote-command-execution-status-codes"></a>

Une fois que vous avez commencé l'exécution de la commande, votre véhicule peut publier le statut de l'exécution et fournir les raisons de ce statut sous forme d'informations supplémentaires sur l'exécution. Les sections suivantes décrivent les différents statuts d'exécution des commandes, ainsi que les codes d'état.

**Topics**
+ [État d'exécution de la commande, code de raison et description](#remote-command-execution-status-reason-codes)
+ [État d'exécution des commandes et codes d'état](#remote-command-execution-status-codes)
+ [État du délai d'exécution des commandes](#remote-command-execution-status-timeout)

### État d'exécution de la commande, code de raison et description
<a name="remote-command-execution-status-reason-codes"></a>

Pour signaler les mises à jour de l'état d'exécution des commandes, vos véhicules peuvent utiliser l'`UpdateCommandExecution`API pour publier les informations d'état mises à jour dans le cloud, en utilisant les [rubriques réservées aux commandes](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-commands) décrites dans le *guide du AWS IoT Core développeur*. Lorsque vous signalez les informations d'état, vos appareils peuvent fournir un contexte supplémentaire sur l'état de chaque exécution de commande à l'aide de l'`StatusReason`objet, `reasonCode` ainsi `reasonDescription` que sur les champs contenus dans l'objet.

### État d'exécution des commandes et codes d'état
<a name="remote-command-execution-status-codes"></a>

Le tableau suivant indique les différents codes d'état d'exécution de commandes et les statuts autorisés vers lesquels une exécution de commande peut passer. Il indique également si l'exécution d'une commande est « terminale » (c'est-à-dire qu'aucune autre mise à jour de statut n'est prévue), si le changement est initié par le véhicule ou par le cloud, ainsi que les différents codes d'état prédéfinis et leur correspondance avec les statuts signalés par le cloud.
+ Pour plus d'informations sur l' AWS IoT FleetWise utilisation des codes d'état prédéfinis et de l'`statusReason`objet, consultez la section [État des commandes](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/include/aws/iotfleetwise/ICommandDispatcher.h) dans la *documentation du FleetWise logiciel Edge Agent for AWS IoT*.
+ Pour plus d'informations sur les exécutions terminales et non terminales, ainsi que sur les transitions entre les statuts, consultez la section État [d'exécution des commandes](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-concepts.html#iot-command-execution-status) dans le guide du *AWS IoT Core développeur*.


**État et source de l'exécution des commandes**  

| Statut d’exécution de la commande | Description | Initié par un appareil/le cloud ? | Exécution du terminal ? | Transitions de statut autorisées | Codes d'état prédéfinis | 
| --- | --- | --- | --- | --- | --- | 
| CREATED | Lorsque la demande d'API pour démarrer l'exécution de la commande (StartCommandExecutionAPI) aboutit, le statut d'exécution de la commande passe àCREATED. | Cloud | Non |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | Aucune | 
| IN\$1PROGRESS | Lorsque le véhicule commence à exécuter la commande, il peut publier un message dans le sujet de réponse pour mettre à jour le statutIN\$1PROGRESS. | Appareil | Non |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | COMMAND\$1STATUS\$1COMMAND\$1IN\$1PROGRESS | 
| SUCCEEDED | Lorsque le véhicule a traité avec succès la commande et terminé son exécution, il peut publier un message dans le sujet de réponse pour mettre à jour le statutSUCCEEDED. | Appareil | Oui | Non applicable | COMMAND\$1STATUS\$1SUCCEEDED | 
| FAILED | Lorsque le véhicule n'exécute pas la commande, il peut publier un message dans le sujet de réponse pour mettre à jour le statutFAILED. | Appareil | Oui | Non applicable | COMMAND\$1STATUS\$1EXECUTION\$1FAILED | 
| REJECTED | Si le véhicule n'accepte pas la commande, il peut publier un message dans le sujet de réponse pour mettre à jour le statutREJECTED. | Appareil | Oui | Non applicable | Aucune | 
| TIMED\$1OUT |  L'état d'exécution de la commande peut changer `TIMED_OUT` pour l'une des raisons suivantes. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html) Pour plus d'informations sur ce statut, consultez[État du délai d'exécution des commandes](#remote-command-execution-status-timeout).  | Appareil et cloud | Non |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | COMMAND\$1STATUS\$1EXECUTION\$1TIMEOUT | 

### État du délai d'exécution des commandes
<a name="remote-command-execution-status-timeout"></a>

Un délai d'exécution d'une commande peut être signalé à la fois par le cloud et par l'appareil. Une fois la commande envoyée à l'appareil, une minuterie démarre. Si aucune réponse n'a été reçue de l'appareil dans le délai spécifié, le cloud signale un `TIMED_OUT` état. Dans ce cas, l'exécution de la commande dans le `TIMED_OUT` statut n'est pas terminale.

L'appareil peut remplacer cet état par un statut de terminal, tel que `SUCCEEDED``FAILED`, ou`REJECTED`. Il peut également signaler qu'un délai d'attente s'est produit lors de l'exécution de la commande. Dans ce cas, l'état d'exécution de la commande reste `TIMED_OUT` inchangé, mais les champs de l'`StatusReason`objet sont mis à jour en fonction des informations communiquées par l'appareil. L'exécution de la commande dans le `TIMED_OUT` statut devient désormais terminale.

Pour plus d'informations, consultez la section [Considérations relatives au délai d'exécution des commandes](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-execution-start-monitor.html#iot-command-execution-timeout) dans le *guide du AWS IoT Core développeur*.

# Véhicules et commandes
<a name="remote-command-vehicles"></a>

**Important**  
L'accès à certaines FleetWise fonctionnalités de AWS l'IoT est actuellement restreint. Pour de plus amples informations, veuillez consulter [AWS Disponibilité des régions et des fonctionnalités dans AWS l'IoT FleetWise](fleetwise-regions.md).  
Vous êtes seul responsable du déploiement des commandes d'une manière sûre et conforme aux lois applicables.

Pour utiliser la fonction de commandes :

1. Créez d'abord une ressource de commande. Spécifiez éventuellement les paramètres contenant les informations requises pour exécuter la commande.

1. Spécifiez le véhicule cible qui recevra la commande et exécutera les actions spécifiées.

1. Vous pouvez désormais exécuter la commande sur le périphérique cible et vérifier les détails de l'exécution de la commande pour récupérer l'état et utiliser CloudWatch les journaux pour résoudre les problèmes éventuels.

Les sections suivantes présentent le flux de travail entre les véhicules et les commandes.

**Topics**
+ [Présentation du flux de travail](#remote-command-vehicles-overview)
+ [Flux de travail du véhicule](#iot-remote-command-devices-workflow)
+ [Flux de travail des commandes](#iot-remote-command-commands-workflow)
+ [(Facultatif) Notifications de commandes](#remote-command-notifications)

## Présentation du flux de travail
<a name="remote-command-vehicles-overview"></a>

Les étapes suivantes fournissent une vue d'ensemble du flux de travail des commandes entre vos véhicules et les commandes. Lorsque vous utilisez l'une des commandes des opérations de l'API HTTP, la demande est signée à l'aide des informations d'identification Sigv4.

**Note**  
À l'exception de l'opération `StartCommandExecution` API, toutes les opérations effectuées via le protocole HTTP utilisent le point de terminaison du plan de contrôle.

1. 

**Établissez une connexion MQTT et abonnez-vous aux rubriques de commandes**

   Pour préparer le flux de travail des commandes, les appareils doivent établir une connexion MQTT avec le `iot:Data-ATS` point de terminaison et s'abonner à la rubrique de demande de commandes mentionnée ci-dessus. En option, vos appareils peuvent également s'abonner aux sujets de réponse acceptés et rejetés pour les commandes.

1. 

**Création d'un modèle de véhicule et d'une ressource de commande**

   Vous pouvez désormais créer un véhicule et une ressource de commande à l'aide des opérations de l'API `CreateVehicle` et du plan de `CreateCommand` contrôle. La ressource de commande contient les configurations à appliquer lorsque la commande est exécutée sur le véhicule.

1. 

**Lancer l'exécution de la commande sur le périphérique cible**

   Démarrez l'exécution de la commande sur le véhicule à l'aide de l'API du plan de `StartCommandExecution` données avec le point de terminaison spécifique à votre compte`iot:Jobs`. L'API publie un message de charge utile codé en protobuf dans la rubrique de demande de commandes.

1. 

**Mettre à jour le résultat de l'exécution de la commande**

   Le véhicule traite la commande et la charge utile reçues, puis publie le résultat de l'exécution de la commande dans le sujet de réponse à l'aide de l'`UpdateCommandExecution`API. Si votre véhicule a souscrit aux commandes « sujets de réponse acceptés » et « rejetés », il recevra un message indiquant si la réponse a été acceptée ou rejetée par le service cloud.

1. 

**(Facultatif) Récupère le résultat de l'exécution de la commande**

   Pour récupérer le résultat de l'exécution de la commande, vous pouvez utiliser l'opération API du plan de `GetCommandExecution` contrôle. Une fois que votre véhicule a publié le résultat de l'exécution de la commande dans le sujet de réponse, cette API renvoie les informations mises à jour.

1. 

**(Facultatif) Abonnement et gestion des événements liés aux commandes**

   Pour recevoir des notifications concernant les mises à jour du statut d'exécution des commandes, vous pouvez vous abonner à la rubrique des événements relatifs aux commandes. Vous pouvez ensuite utiliser l'API du plan de `CreateTopicRule` contrôle pour acheminer les données des commandes et des événements vers d'autres applications, telles que AWS Lambda Functions ou Amazon SQS, et créer des applications à partir de cette API.

## Flux de travail du véhicule
<a name="iot-remote-command-devices-workflow"></a>

Les étapes suivantes décrivent en détail le flux de travail du véhicule lors de l'utilisation de la fonction de commandes.

**Note**  
Les opérations décrites dans cette section utilisent le protocole MQTT.

1. 

**Établir une connexion MQTT**

   Pour préparer vos véhicules à utiliser la fonction de commandes, ils doivent d'abord se connecter au courtier de AWS IoT Core messages. Votre véhicule doit être autorisé à effectuer l'`iot:Connect`action de connexion AWS IoT Core et d'établissement d'une connexion MQTT avec le courtier de messages. Pour trouver le point de terminaison du plan de données qui vous convient Compte AWS, utilisez l'`DescribeEndpoint`API ou la commande `describe-endpoint` CLI, comme indiqué ci-dessous.

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

   L'exécution de cette commande renvoie le point de terminaison du plan de données spécifique au compte, comme indiqué ci-dessous.

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

1. 

**S'abonner à la rubrique de demande de commandes**

   Une fois la connexion établie, vos appareils peuvent s'abonner à la rubrique de demande MQTT des AWS IoT commandes. Lorsque vous créez une commande et que vous lancez son exécution sur votre appareil cible, un message de charge utile codé en protobuf est publié dans le sujet de la demande par le courtier de messages. Votre appareil peut ensuite recevoir le message de charge utile et traiter la commande. Dans cet exemple, remplacez-le *`<DeviceID>`* par l'identifiant unique de votre véhicule cible. Cet identifiant peut être l'identifiant unique de votre véhicule ou un nom d'objet
**Note**  
Le message de charge utile envoyé à l'appareil doit utiliser le format protobuf.

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

1. 

**(Facultatif) Abonnez-vous aux rubriques de réponse aux commandes**

   Vous pouvez éventuellement vous abonner à ces rubriques de réponse aux commandes pour recevoir un message indiquant si le service cloud a accepté ou rejeté la réponse de l'appareil.
**Note**  
Il est facultatif pour vos véhicules de s'abonner aux rubriques `/accepted` et `/rejected` aux réponses. Vos véhicules recevront automatiquement ces messages de réponse même s'ils ne se sont pas explicitement abonnés à ces sujets.

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

1. 

**Mise à jour du résultat de l’exécution d’une commande**

   Le véhicule cible traite ensuite la commande. Il utilise ensuite l'`UpdateCommandExecution`API pour publier le résultat de l'exécution dans la rubrique de réponse MQTT suivante.
**Note**  
Pour un véhicule et une exécution de commande donnés, le champ *<DeviceID>* doit correspondre au champ correspondant dans le sujet de demande auquel l'appareil s'est abonné.

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

   L'`UpdateCommandExecution`API est une opération d'API de plan de données sur MQTT authentifiée par TLS.
   + Si le service cloud a traité avec succès le résultat de l'exécution de la commande, un message est publié dans la rubrique MQTT acceptée. Le sujet accepté utilise le format suivant.

     ```
     $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/accepted
     ```
   + Si le service cloud ne parvient pas à traiter le résultat de l'exécution de la commande, une réponse est publiée dans le sujet MQTT rejeté. Le sujet rejeté utilise le format suivant.

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

   Pour plus d'informations sur cette API et un exemple, consultez[Mettre à jour le résultat d'exécution des commandes](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).

## Flux de travail des commandes
<a name="iot-remote-command-commands-workflow"></a>

Les étapes suivantes décrivent le flux de travail des commandes en détail.

**Note**  
Les opérations décrites dans cette section utilisent le protocole HTTP.

1. 

**Enregistrez votre véhicule**

   Maintenant que vous avez préparé votre véhicule pour utiliser la fonction de commandes, vous pouvez préparer votre demande en enregistrant votre véhicule, puis en créant une commande qui sera envoyée au véhicule. Pour enregistrer le véhicule, créez une instance d'un modèle de véhicule (manifeste du modèle) à l'aide de l'opération API du plan de [https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_CreateVehicle.html](https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_CreateVehicle.html)contrôle. Pour plus d'informations et des exemples, voir [Création d'un véhicule](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/create-vehicle.html).

1. 

**Création d'une commande**

   Utilisez l'opération de l'API du plan de contrôle [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html)HTTP pour modéliser les commandes applicables au véhicule que vous ciblez. Spécifiez les paramètres et les valeurs par défaut à utiliser lors de l'exécution de la commande, et assurez-vous qu'elle utilise l'espace de `AWS-IoT-FleetWise` noms. Pour plus d'informations et des exemples d'utilisation de cette API, consultez[Création d'une ressource de commande](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Lancer l'exécution de la commande**

   Vous pouvez désormais exécuter la commande que vous avez créée sur le véhicule à l'aide de l'opération API du plan de [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_StartCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_StartCommandExecution.html)données. AWS IoT Device Management récupère la commande et les paramètres de commande, et valide la demande entrante. Il invoque ensuite AWS IoT FleetWise l'API avec les paramètres requis pour générer la charge utile spécifique au véhicule. La charge utile est ensuite envoyée à l'appareil via MQTT AWS IoT Device Management sur le sujet de demande de commande auquel votre appareil s'est abonné. Pour plus d'informations et des exemples d'utilisation de cette API, consultez[Envoyer une commande (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli).

   ```
   $aws/commands/things/<DeviceID>/executions/+/request/protobuf
   ```
**Note**  
Si l'appareil était hors ligne lorsque la commande a été envoyée depuis le cloud et que des sessions persistantes MQTT sont en cours d'utilisation, la commande attend le courtier de messages. Si l'appareil revient en ligne avant la fin du délai imparti et s'il s'est abonné à la rubrique de demande de commandes, il peut alors traiter la commande et publier le résultat dans la rubrique de réponse. Si l'appareil ne revient pas en ligne avant la fin du délai imparti, l'exécution de la commande expirera et le message de charge utile expirera.

1. 

**Récupérez l'exécution de la commande**

   Après avoir exécuté la commande sur l'appareil, utilisez l'opération API du plan de [https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html)contrôle pour récupérer et surveiller le résultat de l'exécution de la commande. Vous pouvez également utiliser l'API pour obtenir des informations supplémentaires sur les données d'exécution, telles que la date de dernière mise à jour, la date de fin de l'exécution et les paramètres spécifiés.
**Note**  
Pour extraire les dernières informations relatives au statut, votre appareil doit avoir publié le résultat de l’exécution de la commande dans la rubrique de réponse.

   Pour plus d'informations et des exemples d'utilisation de cette API, consultez[Obtenir l'exécution d'une commande](send-monitor-remote-command-cli.md#get-remote-command-execution-cli).

## (Facultatif) Notifications de commandes
<a name="remote-command-notifications"></a>

Vous pouvez vous abonner aux événements de commandes pour recevoir des notifications lorsque le statut de l'exécution d'une commande change. Les étapes suivantes vous montrent comment vous abonner à des événements de commandes, puis comment les traiter.

1. 

**Créer une règle de rubrique**

   Vous pouvez vous abonner à la rubrique des événements relatifs aux commandes et recevoir des notifications lorsque le statut de l'exécution d'une commande change. Vous pouvez également créer une règle thématique pour acheminer les données traitées par le véhicule vers d'autres applications, telles que des AWS Lambda fonctions. Vous pouvez créer une règle de sujet à l'aide de la AWS IoT console ou à l'aide de l'API du plan de [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 contrôle. Pour plus d'informations, consultez [la section Création et AWS IoT règle](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-rule.html).

   Dans cet exemple, remplacez-le `<CommandID>` par l'identifiant de la commande pour laquelle vous souhaitez recevoir des notifications et `<CommandExecutionStatus>` par le statut de l'exécution de la commande.

   ```
   $aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>
   ```
**Note**  
Pour recevoir des notifications concernant toutes les commandes et les statuts d'exécution des commandes, vous pouvez utiliser des caractères génériques et vous abonner à la rubrique suivante.

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

1. 

**Réception et traitement des événements liés aux commandes**

   Si vous avez créé une règle de sujet à l'étape précédente pour vous abonner aux événements liés aux commandes, vous pouvez gérer les notifications push de commandes que vous recevez. Vous pouvez également éventuellement créer des applications dessus, telles que with, Amazon SQS AWS Lambda, Amazon SNS ou Step AWS Functions en utilisant la règle de rubrique que vous avez créée.

Le code suivant montre un exemple de charge utile pour les notifications d'événements de commande que vous recevrez.

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

# Création et gestion de commandes
<a name="create-manage-remote-command-cli"></a>

**Important**  
L'accès à certaines FleetWise fonctionnalités de AWS l'IoT est actuellement restreint. Pour de plus amples informations, veuillez consulter [AWS Disponibilité des régions et des fonctionnalités dans AWS l'IoT FleetWise](fleetwise-regions.md).

Vous pouvez configurer des actions à distance réutilisables ou envoyer des instructions immédiates et ponctuelles à vos appareils. Lorsque vous utilisez cette fonctionnalité, vous pouvez spécifier les instructions que vos appareils peuvent exécuter quasiment en temps réel. Une commande vous permet de configurer des actions à distance réutilisables pour votre véhicule cible. Après avoir créé une commande, vous pouvez lancer une exécution de commande qui cible un véhicule spécifique.

Cette rubrique explique comment créer et gérer une ressource de commande à l'aide de l' AWS IoT Core API ou du AWS CLI. Il explique comment effectuer les actions suivantes sur une ressource de commande.

**Topics**
+ [Création d'une ressource de commande](#create-remote-command-cli)
+ [Récupérer les informations relatives à une commande](#get-remote-command-cli)
+ [Répertorier les commandes de votre compte](#list-remote-command-cli)
+ [Mettre à jour ou rendre obsolète une ressource de commande](#update-remote-command-cli)
+ [Supprimer une ressource de commande](#delete-remote-command-cli)

## Création d'une ressource de commande
<a name="create-remote-command-cli"></a>

Vous pouvez utiliser le fonctionnement de l'API du plan de [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 contrôle ou la FleetWise console AWS IoT pour créer une commande.

### Création d'une commande (console)
<a name="create-command-console"></a>

Vous pouvez utiliser la FleetWise console AWS IoT pour créer une commande.

**Pour créer une commande**

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

1. Dans le volet de navigation, choisissez **Commands**.

1. Choisissez **Créer une commande**.

1. Spécifiez un identifiant de commande unique pour vous aider à identifier la commande que vous souhaitez exécuter sur le véhicule.

1. (Facultatif) Spécifiez un nom d'affichage et une description facultatifs.

1. (Facultatif) Sélectionnez l'actionneur et la valeur du paramètre par défaut. Les paramètres spécifient les actions que le véhicule cible peut effectuer lors de la réception de la commande. Si vous n’ajoutez aucun paramètre, vous devrez les fournir lors de l’exécution de la commande.

1. Choisissez un rôle IAM qui accorde les autorisations nécessaires pour générer la charge utile des commandes. Consultez la section [Contrôle de l'accès](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html#generate-command-payload).

1. Choisissez **Créer une commande**.

### Création d'une commande (AWS CLI)
<a name="create-remote-command-example"></a>

L'exemple suivant montre comment créer une commande avec un paramètre.

#### Considérations relatives à la création d'une commande
<a name="create-remote-command-considerations"></a>

Lorsque vous créez une commande dans AWS IoT FleetWise :
+ Vous devez spécifier celui `roleArn` qui autorise la création et l'exécution de commandes sur votre véhicule. Pour plus d'informations et sur les exemples de politiques, notamment lorsque les clés KMS sont activées, consultez[Accorder AWS IoT Device Management l'autorisation de générer la charge utile pour les commandes avec AWS IoT FleetWise](controlling-access.md#generate-command-payload).
+ Vous devez le spécifier `AWS-IoT-FleetWise` comme espace de noms.
+ Vous pouvez ignorer le `mandatory-parameters` champ et les spécifier au moment de l'exécution à la place. Vous pouvez également créer une commande avec des paramètres et éventuellement spécifier des valeurs par défaut pour ceux-ci. Si vous avez spécifié des valeurs par défaut, vous pouvez utiliser ces valeurs lors de l'exécution ou les remplacer en spécifiant vos propres valeurs. Pour ces exemples supplémentaires, voir[Scénarios d'utilisation des commandes](remote-command-use-cases.md).
+ Vous pouvez spécifier jusqu'à trois paires nom-valeur pour le `mandatory-parameters` champ. Toutefois, lors de l'exécution de la commande sur le véhicule, une seule paire nom-valeur est acceptée, et le `name` champ doit utiliser le nom complet avec le `$actuatorPath.` préfixe.
+ *command-id*Remplacez-le par un identifiant unique pour la commande. Vous pouvez utiliser l'UUID, les caractères alphanumériques, « - » et « \$1 ».
+ *role-arn*Remplacez-le par le rôle IAM qui vous autorise à créer et à exécuter des commandes, par exemple,`"arn:aws:iam:accountId:role/FwCommandExecutionRole"`.
+ (Facultatif) *display-name* Remplacez-le par un nom convivial pour la commande et *description* par une description significative de la commande.
+ Remplacez *name* et *value* de l'`mandatory-parameters`objet par les informations requises pour la commande en cours de création. Le `name` champ est le nom complet tel que défini dans le catalogue de signaux avec `$actuatorPath.` comme préfixe. Par exemple, il `name` peut être *\$1actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode* et `value` peut être un booléen indiquant un état du mode de direction tel que. *\$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
        }
   ]'
```

L'opération d'`CreateCommand`API renvoie une réponse contenant l'ID et l'ARN (Amazon Resource Name) de la commande.

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

## Récupérer les informations relatives à une commande
<a name="get-remote-command-cli"></a>

Vous pouvez utiliser l'opération API du plan de [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 contrôle pour récupérer des informations sur une ressource de commande.

Pour obtenir des informations sur une ressource de commande, exécutez la commande suivante. Remplacez *command-id* par l'identifiant utilisé lors de la création de la commande.

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

L'opération `GetCommand` API renvoie une réponse contenant les informations suivantes.
+ L'ID et l'ARN (Amazon Resource Name) de la commande.
+ Date et heure de création et de dernière mise à jour de la commande.
+ État de la commande qui indique si elle est disponible pour fonctionner sur le véhicule.
+ Tous les paramètres que vous avez spécifiés lors de la création de la commande.

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

## Répertorier les commandes de votre compte
<a name="list-remote-command-cli"></a>

Vous pouvez utiliser l'opération API du plan de [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 contrôle pour répertorier toutes les commandes que vous avez créées dans votre compte.

Pour répertorier les commandes de votre compte, exécutez la commande suivante. Par défaut, l'API renvoie les commandes créées pour les deux espaces de noms. Pour filtrer la liste afin d'afficher uniquement les commandes créées pour AWS IoT FleetWise, exécutez la commande suivante.

**Note**  
Vous pouvez également trier la liste par ordre croissant ou décroissant, ou filtrer la liste pour n'afficher que les commandes ayant un nom de paramètre de commande spécifique.

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

L'opération `ListCommands` API renvoie une réponse contenant les informations suivantes.
+ L'ID et l'ARN (Amazon Resource Name) des commandes.
+ Date et heure de création et de dernière mise à jour de la commande.
+ État des commandes qui indique si les commandes sont disponibles pour être exécutées sur le véhicule.

## Mettre à jour ou rendre obsolète une ressource de commande
<a name="update-remote-command-cli"></a>

Vous pouvez utiliser le fonctionnement de l'API du plan de [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 contrôle ou FleetWise la console AWS IoT pour mettre à jour une ressource de commande. Vous pouvez mettre à jour le nom d'affichage et la description d'une commande. Vous pouvez également déprécier une commande si elle n'est pas actuellement utilisée.

**Note**  
Vous ne pouvez pas modifier les informations de l'espace de noms ou les paramètres à utiliser lors de l'exécution de la commande.

### Mettre à jour une commande (console)
<a name="update-command-console"></a>

**Mettre à jour une commande**  
Pour mettre à jour une commande depuis la console, rendez-vous sur la page [Commandes](https://console.aws.amazon.com/iotfleetwise/home#/commands) de la FleetWise console AWS IoT et effectuez les étapes suivantes.

1. Choisissez la commande que vous souhaitez mettre à jour, puis sélectionnez **Modifier**.

1. Modifiez les détails de la commande, puis choisissez **Enregistrer les modifications**.

**Déprécier une commande**  
Pour désactiver une commande depuis la console, rendez-vous sur la page [Commandes](https://console.aws.amazon.com/iotfleetwise/home#/commands) de la FleetWise console AWS IoT et effectuez les étapes suivantes.

1. **Choisissez la commande que vous souhaitez déprécier, puis choisissez Déprécier.**

1. **Confirmez la dépréciation, puis choisissez Déprécier.**

### Mettre à jour une commande (AWS CLI)
<a name="update-command-cli"></a>

**Mettre à jour une commande**  
Pour mettre à jour une ressource de commande, exécutez la commande suivante. *command-id*Remplacez-le par l'identifiant de la commande que vous souhaitez mettre à jour et fournissez le *display-name* et mis à jour*description*.

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

L'opération `UpdateCommand` API renvoie la réponse suivante.

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

**Déprécier une commande**  
Vous désapprouvez une commande lorsque vous avez l'intention de ne plus l'utiliser sur votre appareil ou lorsqu'elle est obsolète. L'exemple suivant montre comment déprécier une commande.

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

L'opération d'`UpdateCommand`API renvoie une réponse contenant l'ID et l'ARN (Amazon Resource Name) de la commande.

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

Une fois qu'une commande est devenue obsolète, les exécutions de commandes existantes continuent de s'exécuter sur le véhicule jusqu'à ce qu'elles deviennent un terminal. Pour exécuter de nouvelles commandes, vous devez utiliser l'`UpdateCommand`API pour restaurer la commande afin qu'elle soit disponible. *Pour plus d'informations sur la dépréciation et la restauration d'une commande, ainsi que sur les considérations associées, consultez la section [Dépréciation d'une ressource de commande](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-deprecate) dans le guide du développeur.AWS IoT Core *

## Supprimer une ressource de commande
<a name="delete-remote-command-cli"></a>

Vous pouvez utiliser le fonctionnement de l'API du plan de [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 contrôle ou FleetWise la console AWS IoT pour supprimer une ressource de commande.

**Note**  
Les actions de suppression sont permanentes et ne peuvent être annulées. La commande sera définitivement supprimée de votre compte.

### Supprimer une commande (console)
<a name="delete-command-console"></a>

Pour supprimer une commande de la console, rendez-vous sur la page [Commandes](https://console.aws.amazon.com/iotfleetwise/home#/commands) de la FleetWise console AWS IoT et effectuez les étapes suivantes.

1. Choisissez la commande que vous souhaitez supprimer, puis sélectionnez **Supprimer**.

1. Confirmez que vous souhaitez supprimer la commande, puis choisissez **Supprimer**.

### Supprimer une commande (AWS CLI)
<a name="delete-command-cli"></a>

Pour supprimer une ressource de commande, exécutez la commande suivante. Remplacez *command-id* par l'identifiant de la commande que vous souhaitez supprimer. L'exemple suivant montre comment supprimer une ressource de commande.

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

Si la demande de suppression aboutit :
+ Si la commande est devenue obsolète pendant une durée supérieure au délai maximum de 24 heures, elle sera immédiatement supprimée et vous verrez un HTTP `statusCode` de 204.
+ Si la commande n'est pas obsolète, ou si elle l'a été pendant une durée inférieure au délai maximum, la commande sera dans un `pending deletion` état et vous verrez un HTTP de 202. `statusCode` La commande sera automatiquement supprimée de votre compte après le délai maximum de 24 heures.

# Démarrage et surveillance des exécutions de commandes
<a name="send-monitor-remote-command-cli"></a>

**Important**  
L'accès à certaines FleetWise fonctionnalités de AWS l'IoT est actuellement restreint. Pour de plus amples informations, veuillez consulter [AWS Disponibilité des régions et des fonctionnalités dans AWS l'IoT FleetWise](fleetwise-regions.md).

Après avoir créé une ressource de commande, vous pouvez démarrer une exécution de commande sur le véhicule cible. Une fois que le véhicule commence à exécuter la commande, il peut commencer à mettre à jour le résultat de l'exécution de la commande et publier des mises à jour de statut et des informations sur les résultats dans les rubriques réservées au MQTT. Vous pouvez ensuite récupérer le statut de l'exécution de la commande et surveiller le statut des exécutions dans votre compte.

Cette rubrique explique comment envoyer une commande à votre véhicule à l'aide de la FleetWise console AWS CLI ou AWS IoT. Il vous montre également comment surveiller et mettre à jour le statut de l'exécution de la commande.

**Topics**
+ [Mettre à jour le résultat d'exécution des commandes](#update-remote-command-execution-cli)
+ [Obtenir l'exécution d'une commande](#get-remote-command-execution-cli)
+ [Répertorier les exécutions de commandes dans votre compte](#list-remote-command-execution-cli)
+ [Supprimer l'exécution d'une commande](#delete-remote-command-execution-cli)

## Envoyer une commande (console)
<a name="send-command-console"></a>

Pour envoyer une commande depuis la console, rendez-vous sur la page [Véhicules](https://console.aws.amazon.com/iotfleetwise/home#/vehicles) de la FleetWise console AWS IoT et effectuez les étapes suivantes.

1. Choisissez le véhicule auquel vous souhaitez envoyer une commande.

1. Sélectionnez **Run Command (Exécuter la commande)**.

1. Sélectionnez l'ID de commande.

1. Spécifiez le délai d'exécution de la commande, puis choisissez **Exécuter la commande**.

## Envoyer une commande (AWS CLI)
<a name="send-remote-command-cli"></a>

Vous pouvez utiliser le fonctionnement de l'API du plan de [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 données pour envoyer une commande à un véhicule. Le véhicule transmet ensuite la commande à un service intergiciel automobile (tel que SOME/IP (Scalable Service-Oriented Middleware over IP)) ou la publie sur un réseau du véhicule (comme une interface de périphérique CAN). L'exemple suivant repose sur AWS CLI.

**Topics**
+ [Considérations relatives à l'envoi d'une commande](#send-remote-command-considerations)
+ [Obtenir le point de terminaison du plan de données spécifique au compte](#send-remote-command-endpoint)
+ [Envoyer un exemple de commande](#send-remote-command-example)

### Considérations relatives à l'envoi d'une commande
<a name="send-remote-command-considerations"></a>

Lorsque vous lancez l'exécution d'une commande dans AWS IoT FleetWise :
+ Vous devez prévoir AWS IoT quoi que ce soit pour le véhicule. Pour de plus amples informations, veuillez consulter [Fournir AWS des FleetWise véhicules IoT](provision-vehicles.md).
+ Vous devez déjà avoir créé une commande avec `AWS-IoT-FleetWise` comme espace de noms et en avoir fourni un `role-Arn` qui vous autorise à créer et exécuter des commandes dans AWS l'IoT FleetWise. Pour de plus amples informations, veuillez consulter [Création d'une ressource de commande](create-manage-remote-command-cli.md#create-remote-command-cli).
+ Vous pouvez ignorer le `parameters` champ si vous choisissez d'utiliser les valeurs par défaut spécifiées pour les paramètres lors de la création de la commande. Si aucune valeur `mandatory-parameters` n'a été spécifiée au moment de la création, ou si vous souhaitez remplacer les valeurs par défaut en spécifiant vos propres valeurs pour les paramètres, vous devez spécifier le `parameters` champ. Pour ces exemples supplémentaires, voir[Scénarios d'utilisation des commandes](remote-command-use-cases.md).
+ Vous pouvez spécifier jusqu'à trois paires nom-valeur pour le `mandatory-parameters` champ. Toutefois, lors de l'exécution de la commande sur le véhicule, une seule paire nom-valeur est acceptée, et le `name` champ doit utiliser le nom complet avec le `$actuatorPath.` préfixe.

### Obtenir le point de terminaison du plan de données spécifique au compte
<a name="send-remote-command-endpoint"></a>

Avant d'exécuter la commande API, vous devez obtenir l'URL du point de terminaison spécifique au compte pour le `iot:Jobs` point de terminaison. Par exemple, si vous exécutez la commande suivante :

```
aws iot describe-endpoint --endpoint-type iot:Jobs
```

Il renverra l'URL du point de terminaison spécifique au compte, comme indiqué dans l'exemple de réponse ci-dessous.

```
{
    "endpointAddress": "<account-specific-prefix>.jobs.iot.<region>.amazonaws.com"
}
```

### Envoyer un exemple de commande
<a name="send-remote-command-example"></a>

Pour envoyer une commande à un véhicule, exécutez la commande suivante.
+ *command-arn*Remplacez-le par l'ARN de la commande que vous souhaitez exécuter. Vous pouvez obtenir ces informations à partir de la réponse de la commande `create-command` CLI.
+ *target-arn*Remplacez-le par l'ARN de l'appareil cible, ou de l' AWS IoT objet, pour lequel vous souhaitez exécuter la commande.
**Note**  
Vous pouvez spécifier l'ARN cible d'un AWS IoT objet ( FleetWise véhicule AWS IoT). Les groupes d'objets et les flottes ne sont actuellement pas pris en charge.
+ *endpoint-url*Remplacez-le par le point de terminaison spécifique au compte dans lequel vous l'avez obtenu[Obtenir le point de terminaison du plan de données spécifique au compte](#send-remote-command-endpoint), préfixé par`https://`, par exemple,. `https://123456789012abcd.jobs.iot.ap-south-1.amazonaws.com`
+ Remplacez *name* et *value* par le `mandatory-parameters` champ que vous avez spécifié lorsque vous avez créé la commande à l'aide de la `create-command` CLI.

  Le `name` champ est le nom complet tel que défini dans le catalogue de signaux avec `$actuatorPath.` comme préfixe. Par exemple, il `name` peut être *\$1actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode* et `value` peut être un booléen indiquant un état du mode de direction tel que. *\$1"B": false\$1*
+ (Facultatif) Vous pouvez également spécifier un paramètre supplémentaire,`executionTimeoutSeconds`. Ce champ facultatif indique le délai en secondes pendant lequel le périphérique doit répondre avec le résultat de l'exécution. Vous pouvez configurer le délai d'attente à une valeur maximale de 24 heures.

  Lorsque l'exécution de la commande a été créée, un temporisateur démarre. Avant l'expiration du délai, si l'état d'exécution de la commande ne passe pas à un état qui la rend terminale, tel que `SUCCEEDED` ou`FAILED`, alors le statut passe automatiquement à`TIMED_OUT`.
**Note**  
L'appareil peut également signaler un `TIMED_OUT` état ou remplacer cet état par un état tel que`SUCCEEDED`, ou `FAILED``REJECTED`, et l'exécution de la commande deviendra terminale. Pour de plus amples informations, veuillez consulter [État du délai d'exécution des commandes](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
        }
   ]'
```

L'opération `StartCommandExecution` API renvoie un ID d'exécution de commande. Vous pouvez utiliser cet ID pour demander le statut, les détails et l'historique de l'exécution des commandes.

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

Après avoir exécuté la commande, vos appareils recevront une notification contenant les informations suivantes. Le `issued_timestamp_ms` champ correspond à l'heure à laquelle l'`StartCommandExecution`API a été appelée. Le `timeout_ms` correspond à la valeur du délai d'expiration configurée à l'aide du `executionTimeoutSeconds` paramètre lors de l'appel de l'`StartCommandExecution`API.

```
timeout_ms: 9000000
issued_timestamp_ms: 1723847831317
```

## Mettre à jour le résultat d'exécution des commandes
<a name="update-remote-command-execution-cli"></a>

Pour mettre à jour le statut de l'exécution de la commande, votre appareil doit avoir établi une connexion MQTT et s'être abonné à la rubrique de demande de commandes suivante.

Dans cet exemple, remplacez-le *`<device-id>`* par l'identifiant unique de votre équipement cible, qui peut être le `VehicleId` nom de l'objet, et *`<execution-id>`* par l'identifiant de l'exécution de la commande.

**Note**  
La charge utile doit utiliser le format protobuf.
Il est facultatif pour vos appareils de s'abonner aux rubriques `/accepted` et `/rejected` aux réponses. Vos appareils recevront ces messages de réponse même s'ils ne s'y sont pas explicitement abonnés.

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

Votre appareil peut publier un message dans la rubrique de réponse aux commandes. Après avoir traité la commande, elle envoie une réponse codée en protobuf à cette rubrique. Le *<DeviceID>* champ doit correspondre au champ correspondant dans le sujet de la demande.

```
$aws/devices/<DeviceID>/command_executions/<ExecutionId>/response/<PayloadFormat>
```

Une fois que votre appareil a publié une réponse à cette rubrique, vous pouvez récupérer les informations d'état mises à jour à l'aide de l'`GetCommandExecution`API. Le statut de l'exécution d'une commande peut être l'un de ceux listés ici. 
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`
+ `REJECTED`
+ `TIMED_OUT`

Notez qu'une exécution de commande dans l'un des statuts `SUCCEEDED``FAILED`, et `REJECTED` est terminale, et que l'état est signalé par le périphérique. Lorsqu'une commande est exécutée en mode terminal, cela signifie qu'aucune autre mise à jour ne sera apportée à son statut ou aux champs associés. Un `TIMED_OUT` état peut être signalé par l'appareil ou par le cloud. En cas de signalement par le cloud, une mise à jour du champ de motif du statut peut être effectuée ultérieurement par l'appareil.

Par exemple, ce qui suit montre un exemple de message MQTT publié par le périphérique.

**Note**  
En ce qui concerne l'état d'exécution de la commande, si vos appareils utilisent l'`statusReason`objet pour publier les informations d'état, vous devez vous assurer que :  
`reasonCode`Utilise le modèle`[A-Z0-9_-]+`, et sa longueur ne dépasse pas 64 caractères.
La longueur `reasonDescription` ne dépasse pas 1 024 caractères. Il peut utiliser n'importe quel caractère à l'exception des caractères de contrôle tels que les nouvelles lignes.

```
{
    "deviceId": "",
    "executionId": "",
    "status": "CREATED",
    "statusReason": {
        "reasonCode": "",
        "reasonDescription": ""
    }
}
```

Pour un exemple montrant comment vous pouvez utiliser le client de test AWS IoT Core MQTT pour vous abonner aux rubriques et voir les messages d'exécution des commandes, consultez la section [Affichage des mises à jour des commandes à l'aide du client de test MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-execution-start-monitor.html#iot-remote-command-execution-update-mqtt) dans le guide du *AWS IoT Core développeur*.

## Obtenir l'exécution d'une commande
<a name="get-remote-command-execution-cli"></a>

Vous pouvez utiliser l'opération API du plan de [https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html) AWS IoT contrôle pour récupérer des informations sur l'exécution d'une commande. Vous devez déjà avoir exécuté cette commande à l'aide de l'opération `StartCommandExecution` API.

Pour récupérer les métadonnées d'une commande exécutée, exécutez la commande suivante.
+ Remplacez *execution-id* par l'ID de la commande. Vous pouvez obtenir ces informations à partir de la réponse de la commande `start-command-execution` CLI.
+ *target-arn*Remplacez-le par l'ARN du véhicule ou de l' AWS IoT objet cible pour lequel vous souhaitez exécuter la commande.

```
aws iot get-command-execution --execution-id execution-id \ 
    --target-arn target-arn
```

L'opération `GetCommandExecution` API renvoie une réponse contenant des informations sur l'ARN de l'exécution de la commande, le statut de l'exécution, ainsi que l'heure à laquelle la commande a commencé à s'exécuter et à laquelle elle s'est terminée. Le code suivant montre un exemple de réponse à la demande d'API.

Pour fournir un contexte supplémentaire sur l'état de chaque exécution de commande, la fonctionnalité des commandes fournit un `statusReason` objet. L'objet contient deux champs, `reasonCode` et`reasonDescription`. À l'aide de ces champs, vos appareils peuvent fournir des informations supplémentaires sur le statut de l'exécution d'une commande. Ces informations remplaceront toute valeur par défaut `reasonCode` `reasonDescription` signalée depuis le cloud.

Pour signaler ces informations, vos appareils peuvent publier les informations d'état mises à jour sur le cloud. Ensuite, lorsque vous récupérerez l'état d'exécution de la commande à l'aide de l'`GetCommandExecution`API, vous verrez les derniers codes d'état.

**Note**  
Le `completedAt` champ de la réponse d'exécution correspond au moment où l'appareil signale l'état du terminal au cloud. Dans le cas d'un `TIMED_OUT` état, ce champ ne sera défini que lorsque l'appareil signalera un délai d'expiration. Lorsque le `TIMED_OUT` statut est défini par le cloud, il n'est pas mis à jour. `TIMED_OUT` Pour plus d'informations sur le comportement en cas de temporisation, consultez[État du délai d'exécution des commandes](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 }
    }' 
}
```

## Répertorier les exécutions de commandes dans votre compte
<a name="list-remote-command-execution-cli"></a>

Utilisez l'opération d'API HTTP du plan de [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 contrôle pour répertorier toutes les exécutions de commandes dans votre compte. L'exemple utilise le AWS CLI.

**Topics**
+ [Considérations relatives à la liste des exécutions de commandes](#list-remote-command-considerations)
+ [Exemple d'exécution de commandes de liste](#list-remote-command-example)

### Considérations relatives à la liste des exécutions de commandes
<a name="list-remote-command-considerations"></a>

Voici quelques points à prendre en compte lors de l'utilisation de l'`ListCommandExecutions`API.
+ Vous devez spécifier au moins le `targetArn` ou le `commandArn` selon que vous souhaitez répertorier les exécutions pour une commande particulière ou pour un véhicule cible. La demande d'API ne peut pas être vide et ne peut pas contenir les deux champs dans la même demande.
+ Vous ne devez fournir que les informations `startedTimeFilter` ou les `completedTimeFilter` informations. La demande d'API ne peut pas être vide et ne peut pas contenir les deux champs dans la même demande. Vous pouvez utiliser les `after` champs `before` et de l'objet pour répertorier les exécutions de commandes créées ou achevées au cours d'une période donnée.
+ Les `after` champs `before` et ne doivent pas être supérieurs à l'heure actuelle. Par défaut, si vous ne spécifiez aucune valeur, le `before` champ correspond à l'heure actuelle et le `after` champ à l'heure actuelle, soit 6 mois. En d'autres termes, en fonction du filtre que vous utilisez, l'API répertorie toutes les exécutions créées ou achevées au cours des six derniers mois.
+ Vous pouvez utiliser le `sort-order` paramètre pour indiquer si vous souhaitez répertorier les exécutions dans l'ordre croissant. Par défaut, les exécutions seront répertoriées par ordre décroissant si vous ne spécifiez pas ce champ.
+ Vous ne pouvez pas filtrer les exécutions de commandes en fonction de leur statut lorsque vous listez les exécutions de commandes pour un ARN de commande.

### Exemple d'exécution de commandes de liste
<a name="list-remote-command-example"></a>

L'exemple suivant vous montre comment répertorier les exécutions de commandes dans votre Compte AWS.

Lorsque vous exécutez la commande, vous devez spécifier s'il faut filtrer la liste pour afficher uniquement les exécutions de commandes créées pour un appareil particulier à l'aide du`targetArn`, ou les exécutions pour une commande spécifique spécifiée à l'aide du`commandArn`.

Dans cet exemple, remplacez :
+ *`<target-arn>`*avec le numéro de ressource Amazon (ARN) de l'appareil pour lequel vous ciblez l'exécution, tel que`arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f`.
+ *`<target-arn>`*avec le numéro de ressource Amazon (ARN) de l'appareil pour lequel vous ciblez l'exécution, tel que`arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f`.
+ *`<after>`*avec le délai après lequel vous souhaitez répertorier les exécutions créées, par exemple,`2024-11-01T03:00`.

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

L'exécution de cette commande génère une réponse qui contient une liste des exécutions de commandes que vous avez créées, ainsi que l'heure à laquelle les exécutions ont commencé à s'exécuter et à laquelle elles se sont terminées. Il fournit également des informations sur le statut, ainsi que l'`statusReason`objet qui contient des informations supplémentaires sur le statut.

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

## Supprimer l'exécution d'une commande
<a name="delete-remote-command-execution-cli"></a>

Si vous ne souhaitez plus utiliser l'exécution d'une commande, vous pouvez la supprimer définitivement de votre compte.

**Note**  
L'exécution d'une commande ne peut être supprimée que si elle est entrée dans un statut de terminal`SUCCEEDED`, tel que`FAILED`, ou`REJECTED`.

L'exemple suivant montre comment supprimer une exécution de commande à l'aide de cette `delete-command-execution` AWS CLI commande. *`<execution-id>`*Remplacez-le par l'identifiant de l'exécution de la commande que vous supprimez. 

```
aws iot delete-command-execution --execution-id <execution-id>
```

Si la demande d'API aboutit, l'exécution de la commande génère un code d'état de 200. Vous pouvez utiliser l'`GetCommandExecution`API pour vérifier que l'exécution de la commande n'existe plus dans votre compte.

# Exemple : utilisation de commandes pour contrôler le mode de direction d'un véhicule (AWS CLI)
<a name="remote-command-tutorial"></a>

**Important**  
L'accès à certaines FleetWise fonctionnalités de AWS l'IoT est actuellement restreint. Pour de plus amples informations, veuillez consulter [AWS Disponibilité des régions et des fonctionnalités dans AWS l'IoT FleetWise](fleetwise-regions.md).

L'exemple suivant montre comment utiliser la fonctionnalité de commandes à l'aide du AWS CLI. Cet exemple utilise un AWS IoT FleetWise véhicule comme équipement cible pour montrer comment envoyer une commande pour contrôler à distance le mode de direction.

**Topics**
+ [Vue d'ensemble de l'exemple du mode de direction du véhicule](#iot-remote-command-tutorial-overview)
+ [Conditions préalables](#iot-remote-command-tutorial-prereq)
+ [Politique IAM pour l'utilisation des commandes à distance](#remote-command-policy)
+ [Exécuter AWS IoT des commandes (AWS CLI)](#iot-remote-command-tutorial-run)
+ [Nettoyage](#remote-command-tutorial-clean)

## Vue d'ensemble de l'exemple du mode de direction du véhicule
<a name="iot-remote-command-tutorial-overview"></a>

Dans cet exemple, vous allez :

1. Créez une ressource de commande pour l'opération en utilisant le `create-command` AWS CLI pour modifier le mode de direction du véhicule.

1. Récupérez des informations sur la commande, telles que l'heure à laquelle elle a été créée ou mise à jour pour la dernière fois à l'aide du `get-command` AWS CLI.

1. Envoyez la commande au véhicule en utilisant le `start-command-execution` AWS CLI mode de direction comme paramètre obligatoire, qui sera ensuite exécutée sur l'appareil.

1. Obtenez le résultat de l'exécution de la commande à l'aide du `get-command-execution` AWS CLI. Vous pouvez vérifier quand l'exécution est terminée et récupérer des détails supplémentaires tels que le résultat de l'exécution et le temps nécessaire pour terminer l'exécution de la commande.

1. Effectuez des activités de nettoyage en supprimant les commandes et les exécutions de commandes que vous ne souhaitez plus utiliser.

## Conditions préalables
<a name="iot-remote-command-tutorial-prereq"></a>

Avant d'exécuter cet exemple :
+ Provisionnez votre AWS IoT FleetWise véhicule en tant qu' AWS IoT objet inscrit dans le AWS IoT registre. Vous devez également ajouter un certificat à votre objet, l'activer et associer une politique à votre objet. Votre appareil peut ensuite se connecter au cloud et exécuter les commandes. Pour plus d'informations, voir [Provisionner des véhicules](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/provision-vehicles.html).
+ Créez un utilisateur IAM et une politique IAM qui vous autorise à effectuer les opérations d'API pour utiliser des commandes, comme indiqué dans. [Politique IAM pour l'utilisation des commandes à distance](#remote-command-policy)

## Politique IAM pour l'utilisation des commandes à distance
<a name="remote-command-policy"></a>

Le tableau suivant présente un exemple de politique IAM qui accorde l'accès à toutes les opérations d'API du plan de contrôle et du plan de données pour la fonctionnalité de commandes. L'utilisateur de l'application sera autorisé à effectuer toutes les opérations de l'API de commande à distance, comme indiqué dans le tableau.


**Opération API**  

| Action d’API | Plan de contrôle/de données |  Protocole | Description | Ressource | 
| --- | --- | --- | --- | --- | 
| CreateCommand | Plan de contrôle | HTTP | Crée une ressource de commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommand | Plan de contrôle | HTTP | Récupère les informations relatives à une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommand | Plan de contrôle | HTTP | Met à jour les informations relatives à une commande ou pour la rendre obsolète |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommands | Plan de contrôle | HTTP | Répertorie les commandes de votre compte |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommand | Plan de contrôle | HTTP | Supprime une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| StartCommandExecution | Plan de données | HTTP | Lance l'exécution d'une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommandExecution | Plan de données | MQTT | Mettre à jour l'exécution d'une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommandExecution | Plan de contrôle | HTTP | Récupère les informations relatives à l'exécution d'une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommandExecutions | Plan de contrôle | HTTP | Répertorie les exécutions de commandes dans votre compte |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommandExecution | Plan de contrôle | HTTP | Supprime l'exécution d'une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 

Dans cet exemple, remplacez :
+ `us-east-1`avec votre Région AWS, par exemple`ap-south-1`.
+ `111122223333`avec votre Compte AWS numéro, par exemple`57EXAMPLE833`.
+ `command-id``command-id1`, et `command-id2` avec votre identifiant de commande unique, tel que `LockDoor` ou`TurnOffAC`.
+ `thing-name`avec le nom de votre AWS IoT objet, tel que`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"
            ]
        }
    ]
}
```

------

## Exécuter AWS IoT des commandes (AWS CLI)
<a name="iot-remote-command-tutorial-run"></a>

Ce qui suit montre comment vous pouvez utiliser le AWS CLI pour exécuter des commandes et modifier le mode de direction du véhicule.

1. 

**Création d'une ressource de commande pour le fonctionnement du mode de direction**

   Créez la commande que vous souhaitez envoyer à votre appareil à l'aide de la `create-command` CLI. Dans cet exemple, spécifiez :
   + `command-id` comme *`TurnOffSteeringMode`*
   + `role-arn`car `"arn:aws:iam:accountId:role/FwCommandExecutionRole"` le rôle IAM `role-arn` doit être fourni, car c'est le rôle IAM qui accorde les autorisations nécessaires pour créer et exécuter des commandes sur votre véhicule. Pour de plus amples informations, veuillez consulter [Accorder AWS IoT Device Management l'autorisation de générer la charge utile pour les commandes avec AWS IoT FleetWise](controlling-access.md#generate-command-payload).
   + `display-name`sous la forme de « *`Turn off steering mode`* »
   + `namespace`doit être `AWS-IoT-FleetWise`
   + `mandatory-parameters`sous forme de paire nom-valeur, avec « *\$1actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode* » et DefaultValue `name` comme `{ "S": "true" }`
**Note**  
Vous pouvez également créer une commande sans spécifier de paramètres obligatoires. Vous devez ensuite spécifier les paramètres à utiliser lors de l'exécution de la commande à l'aide de la `start-command-execution` CLI. Pour obtenir un exemple, consultez [Scénarios d'utilisation des commandes](remote-command-use-cases.md).
**Important**  
Lorsque vous utilisez l'`AWS-IoT-FleetWise`espace de noms, vous devez vous assurer que le `Name` champ spécifié dans le cadre de celui-ci `mandatory-parameters` utilise le `$actuatorPath.` préfixe et que le `Value` champ doit utiliser le type de données chaîne.

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

   La sortie suivante montre un exemple de réponse de la CLI, où `ap-south-1` et `123456789012` sont des exemples de l' Compte AWS ID Région AWS and.

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

   Pour d'autres exemples d'utilisation de cette commande, consultez[Création d'une ressource de commande](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Récupérez les informations relatives à la commande**

   Exécutez la commande suivante pour récupérer des informations sur la commande, où se `command-id` trouve l'ID de commande dans le résultat de l'`create-command`opération ci-dessus.
**Note**  
Si vous créez plusieurs commandes, vous pouvez utiliser l'`ListCommands`API pour répertorier toutes les commandes de votre compte, puis utiliser l'`GetCommand`API pour obtenir des informations supplémentaires sur une commande spécifique. Pour de plus amples informations, veuillez consulter [Répertorier les commandes de votre compte](create-manage-remote-command-cli.md#list-remote-command-cli).

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

   L'exécution de cette commande génère la réponse suivante. Vous verrez l'heure à laquelle la commande a été créée et quand elle a été mise à jour pour la dernière fois, les paramètres que vous avez spécifiés et si la commande est disponible pour être exécutée sur l'appareil.

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

   Pour d'autres exemples d'utilisation de cette commande, consultez[Récupérer les informations relatives à une commande](create-manage-remote-command-cli.md#get-remote-command-cli).

1. 

**Lancer l'exécution de la commande**

   Exécutez la commande suivante pour commencer à exécuter la commande, où se `command-arn` trouve l'ARN de la commande dans le résultat de l'`get-command`opération ci-dessus. `target-arn`Il s'agit de l'ARN de l'appareil cible pour lequel vous exécutez la commande, par exemple*`myVehicle`*.

   Dans cet exemple, puisque vous avez fourni des valeurs par défaut pour les paramètres lors de la création de la commande, la `start-command-execution` CLI peut utiliser ces valeurs lors de l'exécution de la commande. Vous pouvez également choisir de remplacer la valeur par défaut en spécifiant une valeur différente pour les paramètres lorsque vous utilisez 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'exécution de cette commande renvoie un ID d'exécution de commande. Vous pouvez utiliser cet ID pour demander le statut, les détails et l'historique de l'exécution des commandes.

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

   Pour des exemples supplémentaires d'utilisation de la CLI, consultez[Envoyer une commande (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli).

1. 

**Récupère les informations relatives à l'exécution de la commande**

   Exécutez la commande suivante pour récupérer les informations relatives à la commande que vous avez exécutée sur le périphérique cible. Spécifiez le`execution-id`, que vous avez obtenu comme résultat de l'`start-command-execution`opération ci-dessus, et le`target-arn`, qui est l'ARN de l'appareil que vous ciblez.
**Note**  
Pour obtenir les dernières informations d'état, vos appareils doivent avoir publié les informations d'état mises à jour dans la rubrique de réponse réservée MQTT pour les commandes utilisant l'API `UpdateCommandExecution` MQTT. Pour de plus amples informations, veuillez consulter [Mettre à jour le résultat d'exécution des commandes](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).
Si vous lancez plusieurs exécutions de commandes, vous pouvez utiliser l'`ListCommandExecutions`API pour répertorier toutes les exécutions de commandes de votre compte, puis utiliser l'`GetCommandExecution`API pour obtenir des informations supplémentaires sur une exécution spécifique. Pour de plus amples informations, veuillez consulter [Répertorier les exécutions de commandes dans votre compte](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'exécution de cette commande renvoie des informations sur l'exécution de la commande, son état d'exécution, l'heure à laquelle elle a commencé à s'exécuter et l'heure à laquelle elle s'est terminée. Par exemple, la réponse suivante indique que l'exécution de la commande a réussi sur l'équipement cible et que le mode de direction a été désactivé.

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

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

Maintenant que vous avez créé une commande et que vous l'avez exécutée sur votre appareil, vous pouvez la supprimer si vous n'avez plus l'intention de l'utiliser. Toutes les exécutions de commandes en cours continueront de s'exécuter sans être affectées par la demande de suppression.

**Note**  
Vous pouvez également déprécier une commande si elle est obsolète et vous devrez peut-être l'utiliser ultérieurement pour l'exécuter sur le périphérique cible.

1. 

**(Facultatif) Déprécier la ressource de commande**

   Exécutez la commande suivante pour la rendre obsolète, où se `command-id` trouve l'ID de commande dans le résultat de l'`get-command`opération ci-dessus.

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

   L'exécution de cette commande renvoie un résultat indiquant que la commande est obsolète. Vous pouvez également utiliser la CLI pour restaurer la commande. 
**Note**  
Vous pouvez également utiliser la `update-command` CLI pour mettre à jour le nom d'affichage et la description d'une commande. Pour plus d’informations, consultez [Mettre à jour ou rendre obsolète une ressource de commande](create-manage-remote-command-cli.md#update-remote-command-cli).

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

1. 

**Supprimer la commande**

   Exécutez la commande suivante pour supprimer la commande, spécifiée par le`command-id`.
**Note**  
L'action de suppression est permanente et ne peut pas être annulée.

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

   Si la demande de suppression aboutit, vous verrez un HTTP `statusCode` de 202 ou 204 selon que vous avez marqué la commande comme obsolète ou non et selon la date à laquelle elle a été abandonnée. Pour plus d'informations et pour voir un exemple, consultez [Supprimer une ressource de commande](create-manage-remote-command-cli.md#delete-remote-command-cli).

   Vous pouvez utiliser la `get-command` CLI pour vérifier que la commande a été supprimée de votre compte.

1. 

**(Facultatif) Supprimez les exécutions de commandes**

   Par défaut, toutes les exécutions de commandes seront supprimées dans les six mois suivant leur création. Vous pouvez consulter ces informations à l'aide du `timeToLive` paramètre de l'`GetCommandExecution`API.

   Sinon, si l'exécution de votre commande est devenue terminale, par exemple si votre statut d'exécution est l'un des `SUCCEEDED` suivants :`FAILED`, ou`REJECTED`, vous pouvez supprimer l'exécution de la commande. Exécutez la commande suivante pour supprimer l'exécution, où se `execution-id` trouve l'ID d'exécution dans le résultat de l'`get-command-execution`opération ci-dessus.

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

   Vous pouvez utiliser la `get-command-execution` CLI pour vérifier que l'exécution de la commande a été supprimée de votre compte.

# Scénarios d'utilisation des commandes
<a name="remote-command-use-cases"></a>

**Important**  
L'accès à certaines FleetWise fonctionnalités de AWS l'IoT est actuellement restreint. Pour de plus amples informations, veuillez consulter [AWS Disponibilité des régions et des fonctionnalités dans AWS l'IoT FleetWise](fleetwise-regions.md).

Lorsque vous utilisez la fonctionnalité de commandes, vous pouvez créer et exécuter des commandes dans les scénarios suivants :
+ Vous pouvez omettre les paramètres lors de la création et spécifier uniquement l'ID de commande. Dans ce cas, vous devez spécifier les paramètres à utiliser lors de l'exécution de la commande sur le périphérique cible.
+ Vous pouvez spécifier un ou plusieurs paramètres et configurer leurs valeurs par défaut lors de la création de la commande. En fournissant des valeurs par défaut, vous éviterez d'envoyer des commandes inexactes.
+ Vous pouvez spécifier un ou plusieurs paramètres et configurer leurs valeurs lors de la création de la commande. Plusieurs paramètres peuvent être fournis, mais un seul d'entre eux sera exécuté, et le `Name` champ de ce paramètre doit utiliser le `$actuatorPath` préfixe.

Cette section fournit des scénarios d'utilisation pour l'`CreateCommand``StartCommandExecution`API et l'utilisation des paramètres. Il présente également quelques exemples d'utilisation de commandes avec des modèles d'état.

**Topics**
+ [Création d'une commande sans paramètres](#remote-command-use-case1)
+ [Création d'une commande avec des valeurs par défaut pour les paramètres](#remote-command-use-case2)
+ [Création d'une commande avec des valeurs de paramètres](#remote-command-use-case3)
+ [Utilisation de commandes avec des modèles d'état](#remote-command-use-cases-templates)

## Création d'une commande sans paramètres
<a name="remote-command-use-case1"></a>

Le cas d'utilisation suivant montre comment vous pouvez utiliser l'`CreateCommand`API ou la `create-command` CLI pour créer une commande sans paramètres. Lorsque vous créez une commande, il vous suffit de fournir un ID de commande et un ARN de rôle.

Ce cas d'utilisation est particulièrement utile dans les cas d'utilisation récurrents, par exemple lorsque vous souhaitez envoyer la même commande plusieurs fois à un véhicule. Dans ce cas, la commande n'est pas liée à un actionneur spécifique et vous donne la flexibilité d'exécuter la commande sur n'importe quel actionneur. Vous devez plutôt spécifier les paramètres au moment de l'exécution lorsque vous exécutez la commande à l'aide de l'`StartCommandExecution`API ou de la `start-command-execution` CLI, qui inclut les actionneurs et les valeurs des signaux physiques.

### Création d'une commande sans `mandatory-parameters` saisie
<a name="remote-command-use-case1-create"></a>

Ce cas d'utilisation montre comment créer une commande sans saisie de paramètres obligatoires.

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

### Exécution d'une commande créée sans `mandatory-parameters` saisie
<a name="remote-command-use-case1-start"></a>

Dans ce premier exemple, la commande créée ci-dessus vous permet d'exécuter une commande sur n'importe quel actionneur sans restrictions. Pour `actuator1` définir une valeur de 10, exécutez :

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

De même, vous pouvez exécuter une commande dont `actuator3` la valeur est définie sur`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"}
    }'
```

## Création d'une commande avec des valeurs par défaut pour les paramètres
<a name="remote-command-use-case2"></a>

Cette commande vous permet uniquement d'exécuter une commande sur l'actionneur spécifié. En fournissant des valeurs par défaut, vous éviterez d'envoyer des commandes inexactes. Par exemple, une `LockDoor` commande qui verrouille et déverrouille des portes peut être configurée avec une valeur par défaut afin d'éviter que la commande ne déverrouille accidentellement des portes.

Ce cas d'utilisation est particulièrement utile lorsque vous souhaitez envoyer la même commande plusieurs fois et effectuer différentes actions sur le même actionneur, telles que le verrouillage et le déverrouillage des portières d'un véhicule. Si vous souhaitez régler l'actionneur sur la valeur par défaut, vous n'avez pas besoin d'en transmettre `parameters` à la `start-command-execution` CLI. Si vous spécifiez une valeur différente pour le `parameters` dans la `start-command-execution` CLI, elle remplacera la valeur par défaut.

### Création d'une commande avec des valeurs par défaut pour `mandatory-parameters`
<a name="remote-command-use-case2-create"></a>

La commande suivante montre comment fournir une valeur par défaut pour 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"}
        }
    ]'
```

### Exécution d'une commande créée avec des valeurs par défaut pour `mandatory-parameters`
<a name="remote-command-use-case2-start"></a>

La commande vous `UserJourney2` permet d'exécuter une commande sans avoir à transmettre de valeur d'entrée pendant l'exécution. Dans ce cas, l'exécution au moment de l'exécution utilisera les valeurs par défaut spécifiées lors de la création.

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

Vous pouvez également transmettre une valeur différente pour le même actionneur, actuator1, pendant l'exécution, qui remplacera la valeur par défaut.

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

## Création d'une commande avec des valeurs de paramètres
<a name="remote-command-use-case3"></a>

Cette commande vous permet uniquement d'exécuter une commande sur l'actionneur spécifié. Cela vous oblige également à définir une valeur pour l'actionneur pendant l'exécution.

Ce cas d'utilisation est particulièrement utile lorsque vous souhaitez que l'utilisateur final n'effectue que certaines actions spécifiées sur certains actionneurs lorsqu'il les fait fonctionner sur le véhicule.

**Note**  
Vous pouvez avoir plus que des paires nom-valeur pour l'`mandatory-parameters`entrée, avec des valeurs par défaut pour certaines d'entre elles ou pour toutes. Au moment de l'exécution, vous pouvez ensuite déterminer le paramètre que vous souhaitez utiliser lors de l'exécution de l'actionneur, à condition que le nom de l'actionneur utilise le nom complet avec le `$actuatorPath.` préfixe.

### Création d'une commande sans valeurs par défaut pour `mandatory-parameters`
<a name="remote-command-use-case3-create"></a>

Cette commande vous permet uniquement d'exécuter une commande sur l'actionneur spécifié. Cela vous oblige également à définir une valeur pour l'actionneur pendant l'exécution.

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

### Exécution d'une commande créée sans valeurs par défaut pour `mandatory-parameters`
<a name="remote-command-use-case3-start"></a>

Lors de l'exécution de la commande, dans ce cas, vous devez spécifier une valeur pour actionneur1. L'exécution de la commande illustrée ci-dessous définira avec succès la valeur de `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"}
    }'
```

## Utilisation de commandes avec des modèles d'état
<a name="remote-command-use-cases-templates"></a>

Vous pouvez également utiliser les opérations de l'API de commandes pour la collecte et le traitement des données d'état. Par exemple, vous pouvez récupérer un instantané d'état unique ou activer ou désactiver des modèles d'état pour démarrer ou arrêter la collecte de données sur l'état du véhicule. Les exemples suivants montrent comment utiliser la fonctionnalité de commandes avec des modèles d'état. Pour de plus amples informations, consultez [Opérations relatives aux modèles d’état pour la collecte et le traitement des données](state-template-api-operations.md).

**Note**  
Le champ Nom spécifié dans le cadre de la `mandatory-parameters` saisie doit utiliser le `$stateTemplate` préfixe.

### Exemple 1 : création de commandes pour des modèles d'état avec des valeurs par défaut
<a name="remote-command-use-cases-template-ex1"></a>

Cet exemple montre comment utiliser la `create-command` CLI pour activer des modèles d'état.

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

De même, la commande suivante montre un exemple de la manière dont vous pouvez utiliser la `start-command-execution` CLI pour les modèles d'état.

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

### Exemple 2 : Création de commandes pour des modèles d'états sans valeurs par défaut
<a name="remote-command-use-cases-template-ex2"></a>

La commande suivante crée plusieurs modèles d'états sans valeurs par défaut pour aucun des paramètres. Cela vous oblige à exécuter la commande avec ces paramètres et leurs valeurs.

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

La commande suivante montre comment utiliser la `start-command-execution` CLI dans l'exemple ci-dessus.

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