

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.

# Opérations relatives aux modèles d’état pour la collecte et le traitement des données
<a name="state-template-api-operations"></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 sections suivantes décrivent comment utiliser les modèles d'état pour activer et désactiver la collecte de données, effectuer une opération de récupération et traiter les données d'état de vos véhicules.

**Topics**
+ [Activer et désactiver la collecte de données d'état à l'aide de modèles d'état](start-stop-data-ingestion.md)
+ [Récupérez un instantané de l'état du véhicule à l'aide de modèles d'état](on-demand-operations.md)
+ [Traitez les dernières données connues du véhicule à l'aide de la messagerie MQTT](process-last-known-state-vehicle-data.md)

# Activer et désactiver la collecte de données d'état à l'aide de modèles d'état
<a name="start-stop-data-ingestion"></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 sections suivantes décrivent comment activer et désactiver l'ingestion de données à l'aide de modèles d'état à l'aide du AWS CLI.

**Important**  
Avant de commencer, assurez-vous que vous avez déjà créé un [modèle d'état](state-templates.md) et que vous l'avez associé, ainsi que sa stratégie de mise à jour, à un véhicule.

Vous devez activer un modèle d'état pour que l'agent Edge puisse envoyer des mises à jour des signaux au cloud.

Pour effectuer ces opérations avec des modèles d'état, créez d'abord une ressource de commande, puis lancez l'exécution des commandes sur le véhicule. La section suivante décrit comment utiliser cette API et comment activer et désactiver l'ingestion de données.

**Topics**
+ [Utilisation de l’API `CreateCommand`](#start-stop-ingestion-create-command)
+ [Exemple : activation d'un modèle d'état](#start-stop-ingestion-activate-template)
+ [Exemple : désactiver un modèle d'état](#start-stop-ingestion-deactivate-template)

## Utilisation de l’API `CreateCommand`
<a name="start-stop-ingestion-create-command"></a>

Créez une ressource de commande dans l'espace de noms `AWS-IoTFleetwise` « » et utilisez les paramètres suivants lorsque vous créez ou envoyez une ressource de commande pour un modèle d'état :
+ `$stateTemplate.name`— Nom du modèle d'état sur lequel effectuer l'opération. Le modèle d'état doit être appliqué au véhicule pour que vous puissiez effectuer une opération. Pour de plus amples informations, veuillez consulter [Associer un modèle FleetWise d'état AWS IoT à un véhicule](state-templates.md#apply-state-templates).
+ `$stateTemplate.operation`— Opération à effectuer sur le modèle d'état. Utilisez l'une des valeurs suivantes pour ce paramètre :
  + `activate`— L'agent Edge commence à envoyer des mises à jour des signaux au cloud en fonction de ce `stateTemplateUpdateStrategy` que vous avez spécifié (en cas de modification ou périodique) lorsque vous avez appliqué le modèle d'état au véhicule. Pour de plus amples informations, veuillez consulter [Associer un modèle FleetWise d'état AWS IoT à un véhicule](state-templates.md#apply-state-templates).

    Vous pouvez également définir un délai de désactivation automatique du modèle d'état pour arrêter les mises à jour après une période spécifiée. Si aucune heure de désactivation automatique n'est fournie, les modèles d'état continueront à envoyer des mises à jour jusqu'à ce qu'un appel de désactivation soit émis. 

    Dès réception de la `activate` commande, l'appareil doit envoyer les signaux spécifiés dans le modèle d'état conformément à la stratégie de mise à jour. AWS L'IoT FleetWise recommande que lorsqu'une commande d'activation est reçue par l'appareil, le premier message qu'il envoie contienne un instantané de tous les signaux du modèle d'état. Les messages suivants doivent être envoyés conformément à la stratégie de mise à jour.
  + `deactivate`— L'agent Edge arrête d'envoyer des mises à jour des signaux au cloud.
  + `fetchSnapshot`— L'agent Edge envoie un instantané unique des signaux définis dans le modèle d'état, indépendamment de ceux que `stateTemplateUpdateStrategy` vous avez spécifiés lorsque vous avez appliqué le modèle d'état au véhicule. 
+ (Facultatif) `$stateTemplate.deactivateAfterSeconds` — Le modèle d'état est automatiquement désactivé après le délai spécifié. Ce paramètre ne peut être utilisé que lorsque sa valeur est « activer ». `$stateTemplate.operation` Si ce paramètre n'est pas spécifié, ou si la valeur de ce paramètre est 0, l'agent Edge continue d'envoyer des mises à jour des signaux au cloud jusqu'à ce qu'une opération de « désactivation » soit reçue pour le modèle d'état. Le modèle d'état n'est jamais automatiquement désactivé.

  Valeur minimale : 0, valeur maximale : 4294967295.

**Note**  
L'API indique le succès en réponse à une demande d'activation pour un modèle déjà actif.
L'API indique le succès en réponse à une demande de désactivation pour un modèle déjà en état de désactivation.
La demande la plus récente que vous faites sur un modèle d'état est celle qui prend effet. Par exemple, si vous demandez la désactivation d'un modèle d'état dans une heure, puis que vous faites une deuxième demande pour que ce même modèle soit désactivé dans quatre heures, la désactivation de quatre heures prend effet car il s'agit de la demande la plus récente. 

**Important**  
Une exception de validation peut se produire dans l'un des scénarios suivants :  
Un modèle d'état qui n'est pas fourni `ASSOCIATED` avec un véhicule est fourni.
Une demande est faite pour activer un modèle d'état mais celui-ci ne figurait pas `DEPLOYED` sur un véhicule.
Une demande est envoyée à un modèle d'État mais elle se trouve `DELETED` sur un véhicule.

## Exemple : activation d'un modèle d'état
<a name="start-stop-ingestion-activate-template"></a>

Pour activer un modèle d'état, créez d'abord une ressource de commande. Vous pouvez ensuite envoyer la commande suivante au véhicule sur lequel vous souhaitez activer le modèle d'état. Cet exemple montre comment vous pouvez spécifier des valeurs par défaut pour les paramètres lors de la création d'une commande. Ces paramètres et leurs valeurs sont utilisés lors du démarrage de l'exécution de la commande pour activer le modèle d'état.

1. 

**Création d'une ressource de commande**

   Avant de pouvoir envoyer une commande au véhicule, vous devez créer une ressource de commande. Vous pouvez spécifier des valeurs alternatives pour les paramètres obligatoires lorsque vous envoyez la commande au véhicule. Pour de plus amples informations, veuillez consulter [Création d'une ressource de commande](create-manage-remote-command-cli.md#create-remote-command-cli).
**Important**  
`$stateTemplate.name`et `$stateTemplate.operation` les paramètres doivent être fournis sous forme de chaîne de données. Si un autre type de données est fourni, ou si l'un de ces deux paramètres est absent, l'exécution de la commande échoue avec une exception de validation. Le `$stateTemplate.deactivateAfterSeconds` paramètre doit être fourni sous forme de type de `Long` données.

   ```
   aws iot create-command \
       --description "This command activates a state template on a vehicle"
       --command-id ActivateStateTemplate \
       --display-name "Activate State Template" \
       --namespace AWS-IoTFleetWise \
       --mandatory-parameters '[
       {
           "name": "$stateTemplate.name",
           "defaultValue": {"S": "ST123"}
       },
       {
           "name": "$stateTemplate.operation",
           "defaultValue": {"S": "activate"}
       },
       {
           "name": "$stateTemplate.deactivateAfterSeconds",
           "defaultValue": {"L": "120"}
       } 
   ]'
   ```

1. 

**Lancer l'exécution de la commande sur le véhicule**

   Une fois la commande créée, envoyez-la au véhicule. Si vous n'avez pas spécifié de valeurs pour les paramètres obligatoires lors de la création de la ressource de commande, vous devez les spécifier maintenant. Pour de plus amples informations, veuillez consulter [Envoyer une commande (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli).
**Important**  
Assurez-vous d'utiliser le point de terminaison de l'API du plan de données des AWS IoT tâches spécifique au compte pour le fonctionnement de l'API.

   ```
   aws iot-jobs-data start-command-execution \
       --endpoint-url <endpoint-url> \
       --command-arn arn:aws:iot:region:111122223333:command/ActivateStateTemplate \
       --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME>
   ```

1. 

**Récupère le statut de l'opération du modèle d'état**

   Après avoir lancé l'exécution de la commande, vous pouvez utiliser l'`GetCommandExecution`API pour récupérer le modèle d'état.

   ```
   aws iot get-command-execution --execution-id <EXECUTION_ID> 
   ```

## Exemple : désactiver un modèle d'état
<a name="start-stop-ingestion-deactivate-template"></a>

Pour désactiver un modèle d'état, créez d'abord une ressource de commande. Vous pouvez ensuite envoyer la commande suivante au véhicule sur lequel vous souhaitez désactiver le modèle d'état. Cet exemple montre comment vous pouvez spécifier des valeurs par défaut pour les paramètres lors de la création d'une commande. Ces paramètres et leurs valeurs sont utilisés lors du démarrage de l'exécution de la commande pour désactiver le modèle d'état.

1. 

**Création d'une ressource de commande**

   Avant de pouvoir envoyer une commande au véhicule, vous devez créer une ressource de commande. Vous pouvez spécifier des valeurs alternatives pour les paramètres obligatoires lorsque vous envoyez la commande au véhicule. Pour de plus amples informations, veuillez consulter [Création d'une ressource de commande](create-manage-remote-command-cli.md#create-remote-command-cli).

   ```
   aws iot create-command \
       --description "This command deactivates a state template on a vehicle"
       --command-id DeactivateStateTemplate \
       --display-name "Deactivate State Template" \
       --namespace AWS-IoTFleetWise \
       --mandatory-parameters '[
       {
           "name": "$stateTemplate.name",
           "defaultValue": {"S": "ST123"}
       },
       {
           "name": "$stateTemplate.operation",
           "defaultValue": {"S": "deactivate"}
       }    
   ]'
   ```

1. 

**Lancer l'exécution de la commande sur le véhicule**

   Une fois la commande créée, envoyez-la au véhicule. Si vous n'avez pas spécifié de valeurs pour les paramètres obligatoires lors de la création de la ressource de commande, vous devez les spécifier maintenant. Pour de plus amples informations, veuillez consulter [Envoyer une commande (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli).

   ```
   aws iot-jobs-data start-command-execution \
       --endpoint-url <endpoint-url> \
       --command-arn arn:aws:iot:region:111122223333:command/DeactivateStateTemplate \
       --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME>
   ```

1. 

**Récupère le statut de l'opération du modèle d'état**

   Après avoir lancé l'exécution de la commande, vous pouvez utiliser l'`GetCommandExecution`API pour récupérer le modèle d'état.

   ```
   aws iot get-command-execution  --execution-id <EXECUTION_ID> 
   ```

# Récupérez un instantané de l'état du véhicule à l'aide de modèles d'état
<a name="on-demand-operations"></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 récupérer le dernier état connu d'un véhicule à l'aide 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 de la FleetWise console AWS IoT.

**Important**  
Une exception de validation peut se produire dans l'un des scénarios suivants :  
Un modèle d'état qui n'est pas fourni `ASSOCIATED` avec un véhicule est fourni.
Une demande est faite pour activer un modèle d'état mais celui-ci ne figurait pas `DEPLOYED` sur un véhicule.
Une demande est envoyée à un modèle d'État mais elle se trouve `DELETED` sur un véhicule.

## Récupérer un instantané de l'état du véhicule (console)
<a name="fetch-state-console"></a>

Vous pouvez utiliser la FleetWise console AWS IoT pour récupérer le dernier état connu d'un véhicule. AWS L'IoT FleetWise créera une commande vous permettant de récupérer des données.

**Pour récupérer l'état d'un véhicule**

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

1. Dans le volet de navigation, sélectionnez **Véhicules**.

1. Choisissez un véhicule dans la liste pour ouvrir sa page de détails.

1. Dans l'onglet **Modèles d'état**, choisissez **Fetch data**.

1. Sélectionnez le rôle IAM qui autorise AWS l'IoT à FleetWise envoyer une commande et à récupérer des données. 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 **Fetch state**.

## Récupère un instantané de l'état du véhicule ()AWS CLI
<a name="fetch-state-cli"></a>

Pour récupérer un instantané d'état, créez d'abord une ressource de commande. Vous pouvez ensuite envoyer la commande suivante au véhicule dont vous souhaitez récupérer le cliché d'état. Pour plus d'informations sur l'utilisation de l'`CreateCommand`API et de ses paramètres, consultez[Utilisation de l’API `CreateCommand`](start-stop-data-ingestion.md#start-stop-ingestion-create-command).

1. 

**Création d'une ressource de commande**

   L'exemple suivant montre comment créer la ressource de commande pour effectuer l'opération d'extraction. Vous pouvez spécifier des valeurs alternatives pour les paramètres obligatoires lorsque vous envoyez la commande au véhicule. Pour de plus amples informations, veuillez consulter [Création d'une ressource de commande](create-manage-remote-command-cli.md#create-remote-command-cli).

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

   Réponse :

   ```
   { 
       "commandId": "<COMMAND_ID>",
       "commandArn": "arn:aws:iot:<REGION>:111122223333:command/<COMMAND_ID>"
   }
   ```

1. 

**Lancer l'exécution de la commande pour récupérer un instantané d'état**

   Une fois la commande créée, envoyez-la au véhicule. Si vous n'avez pas spécifié de valeurs pour les paramètres obligatoires lors de la création de la ressource de commande, vous devez les spécifier maintenant. Pour de plus amples informations, veuillez consulter [Envoyer une commande (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli).

   ```
   aws iot-jobs-data start-command-execution \
       --command-arn arn:aws:iot:region:111122223333:command/<COMMAND_ID> \
       --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME>
   ```

   Réponse :

   ```
   {
       "executionId": "<UNIQUE_UUID>"
   }
   ```

1. Récupère le statut de l'opération du modèle d'état

   Après avoir lancé l'exécution de la commande, vous pouvez utiliser l'`GetCommandExecution`API pour récupérer le modèle d'état.

   ```
   aws iot get-command-execution --execution-id <EXECUTION_ID> 
   ```

# Traitez les dernières données connues du véhicule à l'aide de la messagerie MQTT
<a name="process-last-known-state-vehicle-data"></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).

Pour recevoir des mises à jour de votre véhicule et traiter ses données, abonnez-vous à la rubrique MQTT suivante. Pour plus d'informations, consultez les [rubriques relatives au MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-devices.html) dans le *Guide du AWS IoT Core développeur*.

```
$aws/iotfleetwise/vehicles/$vehicle_name/last_known_state/$state_template_name/data
```

Les derniers messages connus de mise à jour du signal d'état peuvent être reçus hors service, car MQTT ne garantit pas la commande. Tous les clients qui utilisent MQTT pour recevoir et traiter les données du véhicule doivent s'en occuper. Les derniers messages de mise à jour du signal d'état connus suivent le protocole de messagerie MQTT 5.

L'en-tête de message de chaque message MQTT possède les propriétés utilisateur suivantes :
+ **VehicleName** [— Identifiant unique des véhicules.](vehicles.md)
+ **stateTemplateName**— Identifiant unique du dernier [modèle d'état](state-templates.md) connu.

En outre, vous pouvez spécifier les [attributs du véhicule](signal-catalogs.md) à inclure dans l'en-tête du message MQTT en spécifiant le paramètre de `metadataExtraDimensions` demande lors de la mise à jour ou de la création d'un modèle d'état. (Voir [Modèles d'états](state-templates.md).)

Les propriétés utilisateur de l'en-tête du message MQTT sont utiles pour acheminer des messages vers différentes destinations sans inspecter la charge utile. 

La charge utile des messages MQTT contient des données collectées auprès des véhicules. Vous pouvez spécifier les attributs du véhicule à inclure dans la charge utile du message MQTT en spécifiant le paramètre de `extraDimensions` demande lors de la création ou de la mise à jour d'un modèle d'état (voir[Création d'un modèle d' FleetWise état de l' AWS IoT](state-templates.md)). Les dimensions supplémentaires enrichissent les données collectées auprès des véhicules en leur associant des dimensions supplémentaires.

La charge utile du message MQTT est codée en mémoire tampon (Protobuf), et l'en-tête du message MQTT contient un indicateur de type de contenu défini comme application/octet-stream. Le schéma de codage Protobuf est le suivant :

```
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

syntax = "proto3";

option java_package = "com.amazonaws.iot.autobahn.schemas.lastknownstate";
package Aws.IoTFleetWise.Schemas.CustomerMessage;

message LastKnownState {

  /*
   * The absolute timestamp in milliseconds since Unix Epoch of when the event was triggered in vehicle.
   */
  uint64 time_ms = 1;

  /*
   * This field is deprecated, use signals instead
   */
  repeated Signal signal = 2 [ deprecated = true ];

  repeated Signal signals = 3;

  repeated ExtraDimension extra_dimensions = 4;
}

message Signal {

  /*
   * The Fully Qualified Name of the signal is the path to the signal plus the signal's name.
   * For example, Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringState
   * The fully qualified name can have up to 150 characters. Valid characters: a-z, A-Z, 0-9, : (colon), and _ (underscore).
   */
  string name = 1;

  /*
   * The FWE reported signal value can be one of the following data types.
   */
  oneof SignalValue {
    double double_value = 2;

    bool boolean_value = 3;

    sint32 int8_value = 4;

    uint32 uint8_value = 5;

    sint32 int16_value = 6;

    uint32 uint16_value = 7;

    sint32 int32_value = 8;

    uint32 uint32_value = 9;

    sint64 int64_value = 10;

    uint64 uint64_value = 11;

    float float_value = 12;
    /*
     * An UTF-8 encoded or 7-bit ASCII string
     */
    string string_value = 13;
  }
}

message ExtraDimension {
  /*
   * The Fully Qualified Name of the attribute is the path to the attribute plus the attribute's name.
   * For example, Vehicle.Model.Color
   * The fully qualified name can have up to 150 characters. Valid characters: a-z, A-Z, 0-9, : (colon), and _ (underscore).
   */
  string name = 1;

  oneof ExtraDimensionValue {
    /*
     * An UTF-8 encoded or 7-bit ASCII string
     */
    string string_value = 2;
  }
}
```

Où :
+ `time_ms`:

  Horodatage absolu (en millisecondes depuis l'époque Unix) du moment où l'événement a été déclenché dans le véhicule. Le logiciel Edge Agent utilise l'horloge du véhicule pour cet horodatage.
+ `signal`:

  Un tableau de `Signal` s qui contient les informations du signal : `name` (chaîne) et `signalValue` qui prend en charge les types de données suivants : `double` `bool``int8`,`uint8`,`int16`,`uint16`,`int32`,`uint32`,`int64`,`uint64`,`float`,`string`.
+ `extra_dimensions`:

  Un tableau `ExtraDimensions` contenant des informations sur les attributs du véhicule : `name` (chaîne) et `extraDimensionValue` qui ne prend actuellement en charge que le type de `string` données.