

AWS L'IoT ne FleetWise sera plus ouvert aux nouveaux clients à compter du 30 avril 2026. FleetWise Les clients AWS IoT existants peuvent continuer à utiliser le service. Le [guide pour la mobilité connectée AWS fournit des conseils sur](https://aws.amazon.com/solutions/guidance/connected-mobility-on-aws/) la manière de développer et de déployer des services modulaires pour les solutions de mobilité connectée qui peuvent être utilisées pour atteindre des capacités équivalentes à celles de AWS l'IoT FleetWise.

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.

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