

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.

# Modéliser des actifs industriels
<a name="industrial-asset-models"></a>

## Vue d'ensemble des actifs
<a name="assets-overview"></a>

Vous pouvez créer des représentations virtuelles de votre activité industrielle à l'aide d' AWS IoT SiteWise actifs. Un **actif** représente un appareil, un équipement ou un processus qui télécharge un ou plusieurs flux de données vers le AWS Cloud. Par exemple, un appareil ressource peut être une éolienne qui envoie des mesures en séries chronologiques de la température de l'air, de la vitesse de rotation de l'hélice et de la puissance de sortie vers les propriétés des ressources dans AWS IoT SiteWise.

![\[AWS IoT SiteWise actifs représentant les appareils utilisés dans le cadre d'une opération industrielle.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/sitewise-asset.png)


## Les alias de propriété identifient les flux de données des équipements
<a name="property-aliases"></a>

Chaque flux de données correspond à un alias de propriété unique. Par exemple, l'alias `/company/windfarm/3/turbine/7/temperature` identifie de manière unique le flux de données de température provenant de la turbine n° 7 dans le parc éolien n° 3. Vous pouvez configurer AWS IoT SiteWise des actifs pour transformer les données de mesure entrantes à l'aide d'expressions mathématiques, par exemple pour convertir les données de température de degrés Celsius en degrés Fahrenheit.

## Les hiérarchies des actifs représentent les relations entre les équipements
<a name="asset-hierarchies"></a>

Une ressource peut également représenter un regroupement logique de dispositifs, par exemple un parc éolien entier. Vous pouvez associer des actifs à d'autres actifs pour créer des hiérarchies d'actifs représentant des opérations industrielles complexes. Les actifs peuvent accéder aux données contenues dans leurs actifs enfants associés. Ce faisant, vous pouvez utiliser des AWS IoT SiteWise expressions pour calculer des mesures agrégées, telles que la puissance de production nette d'un parc éolien.

![\[AWS IoT SiteWise hiérarchies d'actifs représentant les relations entre les appareils.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/sitewise-asset-hierarchy.png)


## Les modèles d'actifs normalisent la représentation des équipements
<a name="asset-models-overview"></a>

Vous devez créer chaque actif à partir d'un **modèle d'actif**. Les modèles de ressources sont des structures déclaratives qui normalisent le format de vos ressources. Les modèles d'actifs appliquent des informations cohérentes sur plusieurs actifs du même type afin que vous puissiez traiter les données dans des actifs qui représentent des groupes d'appareils. Par exemple, une usine de fabrication peut disposer d'un modèle d'actifs pour les machines CNC qui définit des propriétés telles que la température, les temps d'arrêt et le taux de production. Dans le schéma précédent, vous utilisez le même modèle d'actif pour les trois turbines, car elles partagent un ensemble de propriétés communes.

## Options de modélisation pour les équipements industriels
<a name="modeling-options"></a>

Lorsque vous concevez la représentation de vos actifs industriels, considérez les options suivantes :
+ **Les modèles d'actifs** représentent des types spécifiques d'équipements ou de processus. Vous devez créer chaque actif physique à partir d'un modèle d'actif. Par exemple, une usine de traitement chimique peut avoir des modèles d'actifs distincts pour les réacteurs, les mélangeurs et les réservoirs de stockage.
+ **Les modèles de composants définissent des** sous-assemblages réutilisables que vous pouvez inclure dans des modèles d'actifs ou d'autres modèles de composants. Par exemple, vous pouvez inclure un modèle de composant de capteur de température dans plusieurs modèles d'équipements d'une usine.
+ **Les interfaces de modèles d'actifs** appliquent des normes à différents modèles d'actifs. Par exemple, une interface « équipement rotatif » peut définir des propriétés standard pour les vibrations, la température et le régime qui s'appliquent aux pompes, aux turbines et aux moteurs, même si chacun possède son propre modèle d'actif unique.

## Création et gestion d'actifs
<a name="creating-assets"></a>

Après avoir défini vos modèles de ressources, vous pouvez créer vos ressources industrielles. Pour créer une ressource, sélectionnez un modèle de ressources `ACTIVE` afin de créer une ressource à partir de ce modèle. Ensuite, vous pouvez remplir des informations spécifiques aux ressources, telles que les alias de flux de données et les attributs. Dans le diagramme précédent, vous créez trois ressources de turbine à partir d'un modèle de ressource, puis vous associez des alias de flux de données comme `/company/windfarm/3/turbine/7/temperature` pour chaque turbine.

Vous pouvez également mettre à jour et supprimer des actifs, des modèles d'actifs et des modèles de composants existants. Lorsque vous mettez à jour un modèle de ressource, chaque ressource basée sur ce modèle de ressource reflète toutes les modifications que vous apportez au modèle sous-jacent. Lorsque vous mettez à jour un modèle de composant, cela s'applique à chaque actif en fonction de chaque modèle d'actif qui fait référence au modèle de composant.

## Gestion de modèles d'actifs complexes
<a name="complex-models"></a>

Vos modèles d'actifs peuvent être très complexes, par exemple lorsque vous modélisez un équipement complexe comportant de nombreux sous-composants. Pour que ces modèles d'actifs restent organisés et maintenables, vous pouvez utiliser des modèles composites personnalisés pour regrouper les propriétés associées ou pour réutiliser des composants partagés. Pour de plus amples informations, veuillez consulter [Modèles composites personnalisés (composants)](custom-composite-models.md).

**Topics**

# État des ressources et des modèles
<a name="asset-and-model-states"></a>

Lorsque vous créez, mettez à jour ou supprimez une ressource, un modèle de ressource ou un modèle de composant, les modifications mettent du temps à se propager. AWS IoT SiteWise résout ces opérations de manière asynchrone et met à jour le statut de chaque ressource. Chaque actif, modèle d'actif et modèle de composant possède un champ d'état qui contient l'état de la ressource et tout message d'erreur, le cas échéant. L'état peut prendre l'une des valeurs suivantes :
+ `ACTIVE`— La ressource est active. Il s'agit du seul état dans lequel vous pouvez interroger et interagir avec les actifs, les modèles d'actifs et les modèles de composants.
+ `CREATING`— La ressource est en cours de création.
+ `UPDATING`— La ressource est en cours de mise à jour.
+ `DELETING`— La ressource est en cours de suppression.
+ `PROPAGATING`— (Modèles d'actifs et modèles de composants uniquement) Les modifications se propagent à toutes les ressources dépendantes (du modèle d'actif aux actifs, ou du modèle de composant aux modèles d'actifs).
+ `FAILED`— La ressource n'a pas pu être validée lors d'une opération de création ou de mise à jour, probablement en raison d'une référence circulaire dans une expression. Vous pouvez supprimer les ressources présentes dans `FAILED` cet état.

Certaines des opérations de création, de mise à jour et de suppression mettent en AWS IoT SiteWise place un actif, un modèle d'actif ou un modèle de composant dans un état autre que celui `ACTIVE` pendant la résolution de l'opération. Pour interroger ou interagir avec une ressource après avoir effectué l'une de ces opérations, vous devez attendre que son état passe à`ACTIVE`. Sinon, vos demandes échouent.

**Topics**
+ [Vérifier l'état d'un actif](check-asset-status.md)
+ [Vérifier l'état d'un modèle d'actif ou de composant](check-model-status.md)

# Vérifier l'état d'un actif
<a name="check-asset-status"></a>

Vous pouvez utiliser la AWS IoT SiteWise console ou l'API pour vérifier l'état d'un actif.

**Topics**
+ [Vérifier l'état d'un actif (console)](#check-asset-status-console)
+ [Vérifier l'état d'un actif (AWS CLI)](#check-asset-status-cli)

## Vérifier l'état d'un actif (console)
<a name="check-asset-status-console"></a>

Utilisez la procédure suivante pour vérifier l'état d'une ressource dans la console AWS IoT SiteWise .

**Pour vérifier l'état d'une ressource (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Dans le panneau de navigation, choisissez **Ressources**.

1. Choisissez la ressource à vérifier.
**Astuce**  <a name="sitewise-expand-asset-hierarchy"></a>
Vous pouvez cliquer sur l'icône en forme de flèche pour développer une hiérarchie de ressources afin de trouver votre ressource.

1. Recherchez l’**état** dans le volet **Informations relatives à la ressource**.  
![\[AWS IoT SiteWise Panneau de détails des actifs avec le statut actif.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/sitewise-view-asset-status-console.png)

## Vérifier l'état d'un actif (AWS CLI)
<a name="check-asset-status-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour vérifier l'état d'un actif.

Pour vérifier l'état d'un actif, utilisez l'[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)opération avec le `assetId` paramètre.

**Pour vérifier l'état d'un actif (AWS CLI)**
+ Exécutez la commande suivante pour décrire la ressource. Remplacez *asset-id* par l'ID de la ressource ou par l'ID externe. L'identifiant externe est un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

  ```
  aws iotsitewise describe-asset --asset-id asset-id
  ```

  L'opération renvoie une réponse qui contient les détails de la ressource. La réponse contient un `assetStatus` objet dont la structure est la suivante :

  ```
  {
      ...
      "assetStatus": {
        "state": "String",
        "error": {
           "code": "String",
           "message": "String"
        }
      }
    }
  ```

  L'état de la ressource est dans `assetStatus.state` dans l'objet JSON.

# Vérifier l'état d'un modèle d'actif ou de composant
<a name="check-model-status"></a>

Vous pouvez utiliser la AWS IoT SiteWise console ou l'API pour vérifier l'état d'un modèle d'actif ou d'un modèle de composant.

**Topics**
+ [Vérifier l'état d'un modèle d'actif ou d'un modèle de composant (console)](#check-model-status-console)
+ [Vérifier l'état d'un modèle d'actif ou d'un modèle de composant (AWS CLI)](#check-model-status-cli)

## Vérifier l'état d'un modèle d'actif ou d'un modèle de composant (console)
<a name="check-model-status-console"></a>

Utilisez la procédure suivante pour vérifier l'état d'un modèle de ressource ou d'un modèle de composant dans la AWS IoT SiteWise console.

**Astuce**  
Les modèles d'actifs et les modèles de composants sont tous deux répertoriés sous **Modèles** dans le volet de navigation. Le panneau **Détails** du modèle d'actif ou du modèle de composant sélectionné indique de quel type il s'agit.

**Pour vérifier l'état d'un modèle d'actif ou d'un modèle de composant (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle à vérifier.

1. Recherchez **État** dans le volet **Détails**.  
![\[AWS IoT SiteWise Capture d'écran de la page « Modèle d'actif » avec l'état du modèle d'actif surligné.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/sitewise-view-model-status-console.png)

## Vérifier l'état d'un modèle d'actif ou d'un modèle de composant (AWS CLI)
<a name="check-model-status-cli"></a>

Vous pouvez utiliser le AWS CLI pour vérifier l'état d'un modèle d'actif ou d'un modèle de composant.

Pour vérifier l'état d'un modèle d'actif ou d'un modèle de composant, utilisez l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération avec le `assetModelId` paramètre.

**Astuce**  
 AWS CLI définit les modèles de composants comme un type de modèle d'actif. Par conséquent, vous utilisez la même [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération pour les deux types de modèles. Le `assetModelType` champ de la réponse indique s'il s'agit d'un `ASSET_MODEL` ou d'un`COMPONENT_MODEL`. 

**Pour vérifier l'état d'un modèle d'actif ou d'un modèle de composant (AWS CLI)**
+ Exécutez la commande suivante pour décrire le modèle. Remplacez *asset-model-id* par l'ID ou l'ID externe du modèle d'actif ou du modèle de composant. L'identifiant externe est un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

  ```
  aws iotsitewise describe-asset-model --asset-model-id asset-model-id
  ```

  L'opération renvoie une réponse contenant les détails du modèle. La réponse contient un objet `assetModelStatus` qui présente la structure suivante.

  ```
  {
      ...
      "assetModelStatus": {
        "state": "String",
        "error": {
           "code": "String",
           "message": "String"
        }
      }
    }
  ```

  L'état du modèle se trouve `assetModelStatus.state` dans l'objet JSON.

# Versions du modèle d'actifs
<a name="model-active-version"></a>

 AWS IoT SiteWise prend en charge le traitement asynchrone des opérations de création et de mise à jour sur les modèles d'actifs et les modèles de composants. Il met également à jour le statut du modèle. 

 AWS IoT SiteWise propage les modifications d'un modèle valide dans les demandes de création et de mise à jour à ses ressources dépendantes (du modèle d'actif aux actifs, ou du modèle de composant aux modèles d'actifs). Il place ensuite le modèle en `ACTIVE` état. 

 Si la définition de modèle fournie n'est pas valide, AWS IoT SiteWise place le modèle dans un `FAILED` état. Les modifications ne sont pas répercutées sur les ressources dépendantes. Les ressources dépendantes font référence à la dernière définition du modèle propagée lorsque le modèle était dans un `ACTIVE` état. 

 Sur la base des informations ci-dessus, les définitions de modèles comportent deux types de versions de modèle : 

1. **Dernière version :** dernière définition acceptée dans le cadre d'une demande de création ou de mise à jour.

1. **Version active :** la dernière définition a été traitée avec succès et l'état du modèle est`ACTIVE`.

 Par défaut, les détails de la dernière version du modèle APIs sont renvoyés lorsque describe est appelé sur un modèle d'actif ou un modèle de composant. Dans certains scénarios, la version active du modèle d'actif ou du modèle de composant est requise. Consultez les exemples de scénarios ci-dessous : 
+  Une opération de mise à jour dont la définition n'est pas valide place votre modèle d'actif dans un `FAILED` état. Vous devez annuler vos modifications en récupérant la version active du modèle d'actif et en créant une autre demande de mise à jour faisant référence à cette définition valide. 
+  AWS IoT SiteWise Il existe une application permettant aux clients de consulter les actifs et leurs modèles d'actifs correspondants. Lorsqu'un utilisateur fait référence à la définition du modèle d'actif correspondant à un actif particulier et que le modèle d'actif est dans un `FAILED` état transitoire `UPDATING``PROPAGATING`, la dernière version renvoie la définition du modèle d'actif qui n'est pas encore propagée à ses actifs. Dans ce cas, vous devez récupérer la version active du modèle d'actifs auprès des clients. 

**Topics**
+ [Récupérer la version active d'un modèle d'actif ou d'un modèle de composant (console)](#active-console)
+ [Récupérez la version active d'un modèle d'actif ou d'un modèle de composant (AWS CLI)](#active-cli)

## Récupérer la version active d'un modèle d'actif ou d'un modèle de composant (console)
<a name="active-console"></a>

Suivez cette procédure pour récupérer la version active d'un modèle de ressource ou d'un modèle de composant dans la AWS IoT SiteWise console.

**Astuce**  
Les modèles d'actifs et les modèles de composants sont tous deux répertoriés sous **Modèles** dans le volet de navigation. Le panneau **Détails** du modèle d'actif ou du modèle de composant sélectionné indique de quel type il s'agit.

**Pour récupérer la version active d'un modèle de ressource ou d'un modèle de composant (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle pour récupérer sa version active.

   1.  Si le modèle est dans un `ACTIVE` état, vous visualisez sa version active. 

   1.  Si le modèle est dans un `FAILED` état transitoire `UPDATING``PROPAGATING`, recherchez la **section Voir la version active** sous **État** dans le panneau **Détails**. 

## Récupérez la version active d'un modèle d'actif ou d'un modèle de composant (AWS CLI)
<a name="active-cli"></a>

Utilisez le AWS CLI pour récupérer la version active d'un modèle d'actif ou d'un modèle de composant.

Pour récupérer la version active d'un modèle d'actif ou d'un modèle de composant, utilisez l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération avec le `assetModelVersion` paramètre.

**Astuce**  
 AWS CLI définit les modèles de composants comme un type de modèle d'actif. Par conséquent, vous utilisez la même [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération pour les deux types de modèles. Le `assetModelType` champ de la réponse indique s'il s'agit d'un `ASSET_MODEL` ou d'un`COMPONENT_MODEL`. 

**Pour récupérer la version active d'un modèle d'actif ou d'un modèle de composant (AWS CLI)**
+ Exécutez la commande suivante pour décrire le modèle. Remplacez *asset-model-id* par l'ID ou l'ID externe du modèle d'actif ou du modèle de composant. L'identifiant externe est un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

  ```
  aws iotsitewise describe-asset-model --asset-model-id asset-model-id --asset-model-version ACTIVE
  ```

  L'opération renvoie une réponse contenant les détails du modèle. La réponse contient un `assetModelStatus` objet dont la structure est la suivante.

  ```
  {
      ...
      "assetModelName": "string",
      "assetModelProperties": [ ... ],
      ...,
      "assetModelVersion": "string"
  }
  ```

# Modèles composites personnalisés (composants)
<a name="custom-composite-models"></a>

 Lorsque vous modélisez un actif industriel particulièrement complexe, tel qu'une machine complexe comportant de nombreuses pièces, il peut être difficile de garder vos modèles d'actifs organisés et maintenables.

Dans ce cas, vous pouvez ajouter des modèles composites personnalisés, ou des composants si vous utilisez la console, à vos modèles d'actifs et modèles de composants existants. Ils vous aident à rester organisé en regroupant les propriétés associées et en réutilisant les définitions de sous-composants.

Il existe deux types de modèles composites personnalisés :
+ Les modèles composites personnalisés **en ligne** définissent un ensemble de propriétés groupées qui s'appliquent au modèle d'actif ou au modèle de composant auquel appartient le modèle composite personnalisé. Vous les utilisez pour regrouper les propriétés associées. Ils se composent d'un nom, d'une description et d'un ensemble de propriétés du modèle d'actif. Ils ne sont pas réutilisables.
+ Les modèles composites omponent-model-based personnalisés **C** font référence à un modèle de composant que vous souhaitez inclure dans votre modèle d'actif ou votre modèle de composant. Vous les utilisez pour inclure des sous-assemblages standard dans votre modèle. Ils se composent d'un nom, d'une description et de l'ID du modèle de composant auquel il fait référence. Ils n'ont aucune propriété propre ; le modèle de composant référencé fournit ses propriétés associées à tous les actifs créés.

Les sections suivantes montrent comment utiliser des modèles composites personnalisés dans vos conceptions.

**Topics**
+ [Modèles composites personnalisés en ligne](#inline-composite-models)
+ [Component-model-based modèles composites personnalisés](#component-based-custom-composite-models)
+ [Utiliser des chemins pour référencer les propriétés personnalisées du modèle composite](#property-paths)

## Modèles composites personnalisés en ligne
<a name="inline-composite-models"></a>

Les modèles composites personnalisés en ligne permettent d'organiser votre modèle d'actifs en regroupant les propriétés associées.

Supposons, par exemple, que vous souhaitiez modéliser un actif robotique. Le robot comprend un servomoteur, une alimentation électrique et une batterie. Chacun de ces éléments constitutifs possède ses propres propriétés que vous souhaitez inclure dans le modèle. Vous pouvez définir un modèle d'actif appelé `robot_model` qui possède des propriétés telles que les suivantes.


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

Toutefois, dans certains cas, il peut y avoir de nombreux sous-assemblages ou les sous-assemblages eux-mêmes peuvent avoir de nombreuses propriétés. Dans ces cas, le nombre de propriétés peut être tel qu'il devient difficile de les référencer et de les gérer dans une seule liste plate à la racine du modèle, comme dans l'exemple précédent.

Pour faire face à de telles situations, vous pouvez utiliser un modèle composite personnalisé en ligne pour regrouper les propriétés. Un modèle composite personnalisé en ligne est un modèle composite personnalisé qui définit ses propres propriétés. Par exemple, vous pouvez modéliser votre robot comme suit.


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

Dans l'exemple précédent, `servo``powersupply`, et `battery` sont les noms des modèles composites personnalisés en ligne définis dans le modèle `robot_model` d'actif. Chacun de ces modèles composites définit ensuite ses propres propriétés.

**Note**  
Dans ce cas, chaque modèle composite personnalisé définit ses propres propriétés, de sorte que toutes les propriétés font partie du modèle de ressources lui-même (`robot_model`dans ce cas). Ces propriétés ne sont partagées avec aucun autre modèle d'actif ou modèle de composant. Par exemple, si vous avez créé un autre modèle d'actif qui portait également le nom de modèle composite personnalisé en ligne`servo`, le fait d'apporter une modification au modèle interne `servo` n'`robot_model`affecterait pas la `servo` définition de l'autre modèle d'actif.  
 Si vous souhaitez implémenter un tel partage (par exemple, pour n'avoir qu'une seule définition pour un servo, que tous vos modèles d'actifs peuvent partager), vous devez plutôt créer un modèle de composant pour celui-ci, puis créer des modèles **component-model-based**composites qui le référencent. Consultez la section suivante pour plus de détails. 

Pour plus d'informations sur la façon de créer des modèles composites personnalisés en ligne, consultez[Création de modèles composites personnalisés (composants)](create-custom-composite-models.md).

## Component-model-based modèles composites personnalisés
<a name="component-based-custom-composite-models"></a>

Vous pouvez créer un modèle de composant AWS IoT SiteWise pour définir un sous-assemblage standard réutilisable. Une fois que vous avez créé un modèle de composant, vous pouvez y ajouter des références dans vos autres modèles d'actifs et modèles de composants. Pour ce faire, ajoutez un **modèle composite component-model-based personnalisé** à n'importe quel modèle dans lequel vous souhaitez référencer le composant. Vous pouvez ajouter des références à votre composant à partir de nombreux modèles ou à plusieurs reprises dans le même modèle.

De cette façon, vous pouvez éviter de dupliquer les mêmes définitions entre les modèles. Cela simplifie également la maintenance de vos modèles, car toutes les modifications que vous apportez à un modèle de composant seront répercutées sur tous les modèles d'actifs qui l'utilisent.

Supposons, par exemple, que votre installation industrielle possède de nombreux types d'équipements qui utilisent tous le même type de servomoteur. Certains d'entre eux ont de nombreux servomoteurs dans un seul équipement. Vous créez un modèle d'actif pour chaque type d'équipement, mais vous ne souhaitez pas dupliquer la définition à `servo` chaque fois. Vous souhaitez le modéliser une seule fois et l'utiliser dans vos différents modèles d'actifs. Si vous modifiez ultérieurement la définition de`servo`, elle sera mise à jour pour tous vos modèles et actifs.

Pour modéliser le robot de l'exemple précédent de cette manière, vous pouvez définir des servomoteurs, des alimentations et des batteries en tant que modèles de composants, comme ceci.


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/custom-composite-models.html)  | 


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/custom-composite-models.html)  | 


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

Vous pouvez ensuite définir des modèles d'actifs`robot_model`, tels que ceux qui font référence à ces composants. Plusieurs modèles d'actifs peuvent faire référence au même modèle de composant. Vous pouvez également référencer le même modèle de composant plusieurs fois dans un même modèle d'actif, par exemple si votre robot comporte plusieurs servomoteurs.


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

Pour plus d'informations sur la création de modèles de composants, consultez[Création de modèles de composants](create-component-models.md).

Pour plus d'informations sur la façon de référencer vos modèles de composants dans d'autres modèles, consultez[Création de modèles composites personnalisés (composants)](create-custom-composite-models.md).

## Utiliser des chemins pour référencer les propriétés personnalisées du modèle composite
<a name="property-paths"></a>

Lorsque vous créez une propriété sur un modèle d'actif, un modèle de composant ou un modèle composite personnalisé, vous pouvez la référencer à partir d'autres propriétés qui utilisent sa valeur, telles que les [transformations](transforms.md) et [les métriques](metrics.md).

AWS IoT SiteWise vous propose différentes manières de référencer votre propriété. La méthode la plus simple consiste souvent à utiliser son identifiant de propriété. Toutefois, si la propriété que vous souhaitez référencer se trouve sur un modèle composite personnalisé, il peut être préférable de la référencer par *chemin*.

Un chemin est une séquence ordonnée de *segments de chemin* qui spécifie une propriété en termes de position parmi les modèles composites imbriqués au sein d'un modèle d'actif et d'un modèle composite.

### Obtenir les chemins des propriétés
<a name="obtaining-property-paths"></a>

Vous pouvez obtenir le chemin d'une propriété à partir du `path` champ correspondant [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html).

Supposons, par exemple, que vous disposiez d'un modèle `robot_model` d'actif contenant un modèle `servo` composite personnalisé doté d'une propriété`position`. Si vous appelez`servo`, [DescribeAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html)la `position` propriété listera un `path` champ qui ressemble à ceci : 

```
"path": [
    {
       "id": "asset model ID",
       "name": "robot_model"
    },
    {
       "id": "composite model ID",
       "name": "servo"
    },
    {
       "id": "property ID",
       "name": "position"
    }
]
```

### Utilisation des chemins de propriété
<a name="using-property-paths"></a>

Vous pouvez utiliser un chemin de propriété lorsque vous définissez une propriété qui fait référence à d'autres propriétés, telles qu'une transformation ou une métrique.

Une propriété utilise une *variable* pour référencer une autre propriété. Pour plus d'informations sur l'utilisation des variables, consultez[Utiliser des variables dans les expressions de formule](expression-variables.md).

Lorsque vous définissez une variable pour référencer une propriété, vous pouvez utiliser l'ID de la propriété ou son chemin.

Pour définir une variable qui utilise le chemin de la propriété référencée, spécifiez le `propertyPath` champ de sa valeur.

Par exemple, pour définir un modèle d'actif dont une métrique fait référence à une propriété à l'aide d'un chemin, vous pouvez transmettre une charge utile comme celle-ci à [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html):

```
{
    ...
    "assetModelProperties": [
        {
            ...
            "type": {
                "metric": {
                    ...
                    "variables": [
                        {
                            "name": "variable name",
                            "value": {
                                "propertyPath": [
                                    path segments
                                ]
                            }
                        }
                    ],
                    ...
                }
            },
            ...
        },
        ...
    ],
    ...
}
```

# Interfaces de modèles d'actifs
<a name="model-interfaces"></a>

AWS IoT SiteWise les interfaces définissent des normes pour différents modèles d'actifs. Ils définissent une structure commune qui garantit la cohérence tout en permettant des variations dans la mise en œuvre.

Les interfaces partagent la même structure que les modèles d'actifs (propriétés, modèles composites et hiérarchies), mais vous ne pouvez pas créer d'actifs directement à partir de ceux-ci. Les interfaces sont plutôt appliquées aux modèles d'actifs existants pour garantir la standardisation. Les modèles de composants ne sont pas pris en charge pour les interfaces.

L'utilisation d'interfaces présente plusieurs avantages :
+ Propriétés et mesures standardisées pour les différentes variantes du modèle d'actifs
+ Définitions de métriques simplifiées au niveau de l'interface
+ Gestion plus efficace des hiérarchies d'actifs complexes
+ Gestion indépendante du cycle de vie des propriétés pour chaque variante du modèle d'actif
+ Collaboration interéquipes améliorée où les équipes opérationnelles se concentrent sur la représentation des actifs physiques tandis que les équipes chargées des données établissent des normes pour les équipements

Nous vous recommandons de créer d'abord vos modèles d'actifs afin de modéliser votre équipement industriel réel. Chaque type d'équipement, avec ses propres propriétés, peut être représenté par ses propres modèles d'actifs. 

## Cas d'utilisation de la normalisation des modèles d'actifs
<a name="interface-powertrain-shop-example"></a>

Les interfaces aident à normaliser les propriétés des différents modèles d'actifs tout en préservant leurs caractéristiques uniques.

Par exemple, un atelier de production de groupes motopropulseurs compte quatre stations : moteur, transmission, différentiel et assemblage. Chaque station contient différents types d'équipements. Par exemple, la station moteur comprend des machines à commande numérique, mais leurs spécifications diffèrent : certaines sont à 3 axes, tandis que d'autres sont à 5 axes.

![\[Schéma montrant la hiérarchie des équipements de l'atelier de motorisation en utilisant uniquement des modèles d'actifs et des actifs. L'atelier des groupes motopropulseurs se trouve en haut, puis chacun des modèles d'actifs pour le moteur, la transmission, le différentiel et les stations d'assemblage au deuxième niveau plus bas. Au troisième niveau, il y a les machines CNC individuelles ventilées par axe selon le modèle d'actif de la station moteur. À l'inverse, il existe également des modèles d'actifs issus du modèle de station d'assemblage. Au quatrième niveau, chacun des actifs représente par son nom les machines CNC ou les bras robotiques individuels.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/models-interface-hierarchy.png)


Cependant, les interfaces vous permettent de créer des normes pour les points communs observés dans les machines CNC. Vous pouvez utiliser les propriétés répétables dans une interface plutôt que de créer des modèles d'actifs pour chaque propriété.

Par exemple, vous pouvez effectuer les actions suivantes :

1. Créez des modèles d'actifs distincts pour chaque catégorie de types de machines. Dans cet exemple, il s'agit des « machines CNC à 3 axes » et des « machines CNC à 5 axes ».

1. Définissez une interface standard avec des propriétés et des métriques communes. Dans cet exemple, `Temperature-in-C``Down-time`, et `Running-time` sont toutes des propriétés communes qui s'appliquent aux deux machines CNC.

1. Appliquez cette interface à tous les modèles d'actifs de machines CNC, tout en autorisant les propriétés spécifiques à l'appareil sur les modèles d'actifs individuels.

![\[Schéma montrant comment les interfaces simplifient l'organisation des modèles d'actifs par rapport au schéma précédent. Il présente plusieurs paramètres répétables pour les machines CNC de la station moteur, désormais régis par les interfaces transférant les différentes propriétés des modèles d'actifs des machines CNC à 3 axes et 5 axes, tout en permettant d'attribuer des propriétés spécifiques à chaque appareil.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/models-interface-to-asset-models.png)


Vous pouvez également définir des mesures de disponibilité au niveau de l'interface. Par exemple, `Avail = avg(Down-time, Running-time)` calcule la disponibilité en fonction des valeurs de temps d'arrêt et de durée de fonctionnement.

L'utilisation d'interfaces simplifie la gestion de votre modèle d'actifs en garantissant des définitions de propriétés et des mesures cohérentes pour tous les équipements applicables, tout en préservant les caractéristiques uniques de chaque type de machine.

## Structure et composants
<a name="interface-structure"></a>

Les interfaces incluent les mêmes types de propriétés que les modèles d'actifs : attributs, mesures, transformations et métriques. Lorsque vous les superposez à un modèle d'actif, vous mappez les propriétés existantes à leurs homologues d'interface. Les propriétés d'interface non mappées sont automatiquement créées dans le modèle d'actif.

Les hiérarchies d'interface définissent les mesures cumulatives, tandis que les hiérarchies de modèles d'actifs permettent d'associer des actifs. Lorsque vous utilisez une interface, le service mappe automatiquement les hiérarchies des modèles d'actifs aux hiérarchies d'interface lors du calcul des métriques cumulatives. Après avoir appliqué une interface, les métriques cumulatives sont définies par le biais de la hiérarchie de l'interface plutôt que par le biais de la propre hiérarchie du modèle d'actifs.

## Considérations
<a name="interface-considerations"></a>

Lorsque vous travaillez avec des interfaces, tenez compte des points suivants :
+ Le modèle d'actif et les propriétés de l'interface peuvent être mappés automatiquement par nom ou mappés manuellement. Les hiérarchies sont automatiquement mappées par le service lors du calcul des métriques cumulatives.
+ Vous ne pouvez pas définir de mesures supplémentaires dans le modèle d'actif lié qui utilise des métriques d'interface comme entrées.
+ Un modèle d'actif ne peut être lié qu'à une seule interface. Cependant, plusieurs modèles d'actifs peuvent être appliqués à la même interface.
+ Les alarmes ne sont pas prises en charge dans les interfaces.
+ Les modèles de composants ne sont pas pris en charge pour les interfaces.

**Topics**
+ [Cas d'utilisation de la normalisation des modèles d'actifs](#interface-powertrain-shop-example)
+ [Structure et composants](#interface-structure)
+ [Considérations](#interface-considerations)
+ [Comprendre la relation entre l'interface et le modèle d'actif](interface-asset-model-relationship.md)
+ [Création d'une interface](interface-create.md)
+ [Appliquer une interface à un modèle d'actifs](interfaces-link-asset-model.md)
+ [Gérez les interfaces, les modèles d'actifs liés et les propriétés](interfaces-manage.md)
+ [Exemples d'interfaces supplémentaires](interface-additional-examples.md)

# Comprendre la relation entre l'interface et le modèle d'actif
<a name="interface-asset-model-relationship"></a>

Les interfaces et les modèles d'actifs fonctionnent ensemble dans une relation complémentaire :


**Interfaces et modèles d'actifs**  

| Aspect | Interfaces | Modèles d'actifs | 
| --- | --- | --- | 
| Objectif | Définir les normes et appliquer la cohérence | Représenter des actifs physiques ou logiques | 
| Création d'actifs | Impossible de créer des actifs directement | Utilisé pour créer des actifs | 
| Propriétés | Définissez les propriétés standard qui doivent être implémentées dans les modèles | Peut avoir des propriétés uniques appliquées à l'interface | 
| Métriques | Définissez les calculs standard | Implémentez des métriques d'interface et pouvez avoir des métriques supplémentaires | 
| Hiérarchies | Définir les relations hiérarchiques de calcul des données pour les métriques cumulatives | Définir des relations hiérarchiques physiques pour les associations d'actifs | 

Lorsque vous appliquez une interface à un modèle d'actif :
+ Le modèle d'actif doit mapper toutes les propriétés définies dans l'interface.
+ Les mappages de propriétés définissent la façon dont les propriétés de l'interface correspondent aux propriétés du modèle d'actifs.
+ Les propriétés des modèles d'actifs mappés doivent rester synchronisées avec leurs propriétés d'interface correspondantes et ne peuvent pas être modifiées de manière à entraîner une incohérence entre les deux.
+ Les propriétés d'interface non mappées sont automatiquement créées dans le modèle d'actif.
+ Le modèle d'actif peut avoir des propriétés supplémentaires au-delà de celles définies dans l'interface.
+ Le modèle d'actifs implémente des métriques d'interface. Les modifications apportées aux métriques de l'interface se propagent à tous les modèles d'actifs à l'aide de l'interface.
+ Les hiérarchies d'interface sont utilisées pour calculer les métriques cumulatives. Les hiérarchies des modèles d'actifs peuvent être définies indépendamment, et le service les mappera automatiquement lors du calcul des métriques cumulatives.

Cette relation garantit la standardisation tout en offrant la flexibilité nécessaire pour représenter divers types d'équipements.

## Standardisez les modèles d'actifs existants
<a name="interface-standardize-existing"></a>

Bien que les interfaces soient utiles lors de la conception de nouveaux modèles d'actifs à partir de zéro, elles sont tout aussi puissantes pour standardiser les modèles d'actifs existants qui peuvent avoir évolué indépendamment au fil du temps.

Lorsque vous travaillez avec des modèles d'actifs existants, vous pouvez appliquer des interfaces pour normaliser les mesures et les propriétés :

1. Identifiez les indicateurs et propriétés communs à tous vos modèles d'actifs existants

1. Créez une interface qui définit ces propriétés et métriques standard

1. Appliquez l'interface à vos modèles d'actifs existants à l'aide de la cartographie des propriétés

1. Utilisez des mesures cumulatives pour agréger les données dans l'ensemble de votre hiérarchie d'actifs

Par exemple, si vous avez des modèles d'actifs de machines CNC existants avec des noms de propriétés différents mais des données similaires (par exemple `temp_celsius``temperature_c`,,`machine_temp`), vous pouvez :

1. Créer un `CNC-INTERFACE` avec une `Temperature-in-C` propriété standardisée

1. Appliquez cette interface à chaque modèle d'actif CNC, en mappant les propriétés de température existantes à la `Temperature-in-C` propriété de l'interface

1. Définissez des mesures cumulatives dans l'interface qui calcule les statistiques sur toutes les machines (par exemple, température moyenne)

Cette approche vous permet de conserver vos modèles d'actifs existants tout en bénéficiant des avantages de la standardisation et de la simplification du calcul des métriques.

## Relations hiérarchiques
<a name="interface-asset-model-hierarchies"></a>

Hiérarchie des interfaces  
Définit les relations pour le calcul et l'agrégation des données entre différentes interfaces. Par exemple, en usine, une hiérarchie d'interfaces peut connecter des interfaces de surveillance de la température à différents niveaux pour calculer les températures moyennes. Par exemple : machine, ligne de production et installation. Lorsque vous définissez une métrique cumulative telle que`AverageTemperature`, la hiérarchie de l'interface détermine la manière dont cette métrique agrège les données des niveaux inférieurs aux niveaux supérieurs.

Hiérarchie des modèles d'actifs  
Représente la structure physique ou logique réelle de vos actifs. Par exemple, un modèle d'actif de machine à commande numérique peut faire partie d'un modèle d'actif de ligne de production, qui à son tour appartient à un modèle d'actif d'usine. Cette hiérarchie reflète les relations réelles et permet d'organiser les actifs d'une manière qui correspond à leur disposition physique ou à leur structure commerciale. Lorsqu'elles sont associées à des hiérarchies d'interface, les hiérarchies de modèles d'actifs aident le système à comprendre quels actifs doivent être inclus dans les calculs cumulatifs.

Ces deux types de hiérarchie fonctionnent ensemble : les hiérarchies d'interface définissent le mode de calcul des métriques agrégées, tandis que les hiérarchies des modèles d'actifs définissent les actifs spécifiques à inclure dans ces calculs.

## Métriques d'interface et calculs cumulatifs
<a name="interface-metrics-integration"></a>

Les interfaces excellent dans la définition de mesures standardisées qui peuvent être appliquées à différents modèles d'actifs. Cela est particulièrement utile pour les mesures cumulatives qui regroupent les données de plusieurs actifs.

Lorsque vous définissez des métriques dans une interface, elles sont automatiquement appliquées à tous les modèles d'actifs qui implémentent l'interface. Les métriques peuvent référencer les propriétés définies dans l'interface, utiliser des fonctions d'agrégation pour calculer les statistiques sur les actifs et garantir des calculs cohérents dans tous les modèles d'actifs implémentés. Par exemple, vous pouvez définir une métrique de disponibilité dans une interface qui calcule le rapport entre le temps de fonctionnement et le temps total :

```
{
  "name": "Availability",
  "dataType": "DOUBLE",
  "type": {
    "metric": {
      "expression": "Running-time / (Running-time + Down-time) * 100",
      "variables": [
        {
          "name": "Running-time",
          "value": {
            "propertyId": "${Running-time}"
          }
        },
        {
          "name": "Down-time",
          "value": {
            "propertyId": "${Down-time}"
          }
        }
      ],
      "window": {
        "tumbling": {
          "interval": "1h"
        }
      }
    }
  },
  "unit": "Percent"
}
```

Lorsque cette interface est appliquée à plusieurs modèles d'actifs, la métrique de disponibilité est calculée de manière cohérente pour chacun d'entre eux, même si les noms des propriétés sous-jacents diffèrent (grâce au mappage des propriétés).

Pour plus d'informations sur la définition des métriques et l'utilisation des fonctions d'agrégation, consultez[Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md).

### Cumulez les métriques à l'aide d'interfaces
<a name="interface-rollup-metrics-subsection"></a>

Les interfaces peuvent également définir des mesures cumulatives qui regroupent les données des actifs dans une hiérarchie. Lorsque vous définissez une hiérarchie dans une interface et que vous l'appliquez à un modèle d'actifs, vous pouvez créer des métriques qui regroupent les données des actifs enfants.

Par exemple, vous pouvez définir une métrique qui calcule la température moyenne de toutes les machines CNC d'une usine :

```
{
  "name": "AverageTemperature",
  "dataType": "DOUBLE",
  "type": {
    "metric": {
      "expression": "avg(Temperature-in-C)",
      "variables": [
        {
          "name": "Temperature-in-C",
          "value": {
            "propertyId": "${Temperature-in-C}",
            "hierarchyId": "${CNC-machines}"
          }
        }
      ],
      "window": {
        "tumbling": {
          "interval": "1h"
        }
      }
    }
  },
  "unit": "Celsius"
}
```

Cette métrique utilise la fonction d'`avg()`agrégation pour calculer la température moyenne de toutes les machines CNC de la hiérarchie. Le `hierarchyId` paramètre indique la hiérarchie à utiliser pour l'agrégation.

Lorsque cette interface est appliquée à un modèle d'actif, la métrique cumulative agrège automatiquement les données de tous les actifs enfants correspondant au mappage hiérarchique.

# Création d'une interface
<a name="interface-create"></a>

Vous pouvez créer des interfaces à l'aide de la AWS IoT SiteWise console ou du AWS CLI.

------
#### [ Console ]

1. Accédez à la [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) et choisissez **Modèles** dans le volet de navigation.

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

1. Entrez un **nom** unique et une **description** facultative pour votre interface. Vous pouvez également éventuellement ajouter un **identifiant externe** de votre choix.

1. Ajoutez des propriétés à votre interface. Vous pouvez ajouter des attributs, des mesures, des transformations et des métriques comme dans le cas des modèles d'actifs. Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actif (console)](create-asset-models.md#create-asset-model-console).

1. Choisissez **Create interface** pour créer l'interface.

1. Si vous disposez de hiérarchies pour définir les relations parent-enfant entre les interfaces, choisissez **Ajouter une hiérarchie** et entrez les informations pertinentes.

------
#### [ AWS CLI ]

Pour créer une interface, utilisez l'`CreateAssetModel`opération avec le `assetModelType` paramètre défini sur `INTERFACE` :

```
aws iotsitewise create-asset-model \
  --asset-model-name "CNC-INTERFACE" \
  --asset-model-description "Standard interface for CNC machines" \
  --asset-model-type "INTERFACE" \
  --asset-model-properties '[
    {
      "name": "Temperature-in-C",
      "dataType": "DOUBLE",
      "type": {
        "measurement": {}
      },
      "unit": "Celsius"
    },
    {
      "name": "Down-time",
      "dataType": "DOUBLE",
      "type": {
        "measurement": {}
      },
      "unit": "Minutes"
    },
    {
      "name": "Running-time",
      "dataType": "DOUBLE",
      "type": {
        "measurement": {}
      },
      "unit": "Minutes"
    },
    {
      "name": "Availability",
      "dataType": "DOUBLE",
      "type": {
        "metric": {
          "expression": "Running-time / (Running-time + Down-time) * 100",
          "variables": [
            {
              "name": "Running-time",
              "value": {
                "propertyId": "${Running-time}"
              }
            },
            {
              "name": "Down-time",
              "value": {
                "propertyId": "${Down-time}"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "1h"
            }
          }
        }
      },
      "unit": "Percent"
    }
  ]'
```

------

# Appliquer une interface à un modèle d'actifs
<a name="interfaces-link-asset-model"></a>

Lorsque vous appliquez une interface à un modèle d'actif, vous mappez les propriétés et les hiérarchies du modèle d'actif à leurs homologues d'interface. Pour les propriétés d'interface non mappées, les propriétés correspondantes sont automatiquement créées dans le modèle de ressource. Une fois la liaison établie, le service empêche toute modification du modèle d'actif susceptible de violer les normes d'interface.

Vous pouvez ajouter un modèle d'actif à la fois à une interface. Cependant, plusieurs modèles d'actifs peuvent être liés à une seule interface.

------
#### [ Console ]

1. Accédez à la [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) et choisissez **Modèles** dans le volet de navigation.

1. Sélectionnez le modèle de ressource auquel vous souhaitez appliquer une interface.

1. Choisissez **Lier le modèle d'actif** dans la section **Lier les modèles d'actifs**. Cela ouvre la page de **l'interface Link**.

1. Dans la section **Modèles d'actifs et interfaces**, sélectionnez un modèle d'actif dans le menu déroulant **Sélectionnez un modèle à lier**.

1. Dans la section **Mappages de propriétés**, mappez chaque propriété d'interface à une propriété de modèle d'actif existante ou créez une nouvelle propriété. AWS IoT SiteWise lie automatiquement les propriétés aux noms correspondants dans le modèle d'actif et dans l'interface.

1. Passez en revue les mappages de propriétés et choisissez **Interface de liaison.**

------
#### [ AWS CLI ]

Pour appliquer une interface à un modèle d'actif, utilisez l'`PutAssetModelInterfaceRelationship`opération suivante :

```
aws iotsitewise put-asset-model-interface-relationship \
  --asset-model-id "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ 
  --interface-asset-model-id "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE" \
  --property-mapping-configuration '{
    "createMissingProperty": true,
    "matchByPropertyName": true,   
    "overrides": [
      {
        "assetModelPropertyId": "a1b2c3d4-5678-90ab-cdef-44444EXAMPLE",
        "interfaceAssetModelPropertyId": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE"      
      }
    ]
  }'
```

Pour récupérer des informations sur une relation d'interface, utilisez l'`DescribeAssetModelInterfaceRelationship`opération suivante :

```
aws iotsitewise describe-asset-model-interface-relationship \
  --asset-model-id "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \
  --interface-asset-model-id "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE"
```

Pour répertorier tous les modèles d'actifs auxquels une interface spécifique est appliquée, utilisez l'`ListInterfaceRelationships`opération suivante :

```
aws iotsitewise list-interface-relationships \
  --interface-asset-model-id "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE" \
  --max-results 10
```

Pour supprimer une relation d'interface, utilisez l'`DeleteAssetModelInterfaceRelationship`opération suivante :

```
aws iotsitewise delete-asset-model-interface-relationship \
  --asset-model-id "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \
  --interface-asset-model-id "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE"
```

------

# Gérez les interfaces, les modèles d'actifs liés et les propriétés
<a name="interfaces-manage"></a>

Après avoir créé des interfaces et les avoir liées à des modèles d'actifs, vous pouvez gérer les relations, modifier et supprimer des interfaces via la console ou AWS CLI.

## Modifier une relation entre une interface et un modèle d'actif
<a name="interface-edit"></a>

Pour modifier la relation entre une interface et un modèle d'actif, procédez comme suit dans la AWS IoT SiteWise console ou via AWS CLI :

------
#### [ Console ]

1. Accédez à la [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) et choisissez **Modèles** dans le volet de navigation.

1. Sélectionnez l'interface que vous souhaitez modifier.

1. Choisissez le modèle de ressource à modifier et modifiez-le.

   Vous pouvez suivre les [Appliquer une interface à un modèle d'actifs](interfaces-link-asset-model.md) instructions pour associer un autre modèle d'actif.

1. Choisissez **Appliquer l'interface** pour enregistrer vos modifications.

------
#### [ AWS CLI ]

Pour modifier une relation entre une interface et un modèle d'actif, utilisez l'`PutAssetModelInterfaceRelationship`action. Remplacez *your-asset-model-id* et *your-interface-asset-model-id* par vos propres valeurs. Pour plus d’informations, consultez [PutAssetModelInterfaceRelationship](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutAssetModelInterfaceRelationship.html) dans la *Référence d’API AWS IoT SiteWise *.

```
aws iotsitewise put-asset-model-interface-relationship \
    --asset-model-id your-asset-model-id \
    --interface-asset-model-id your-interface-asset-model-id
```

------

## Modifier le mappage des propriétés d'une interface
<a name="interface-edit-property"></a>

Pour modifier les propriétés d'une interface, procédez comme suit dans la AWS IoT SiteWise console ou via AWS CLI :

------
#### [ Console ]

1. Accédez à la [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) et choisissez **Modèles** dans le volet de navigation.

1. Sélectionnez l'interface pour laquelle vous souhaitez modifier les mappages de propriétés. La page **Modifier les mappages de propriétés** apparaît.

1. Dans la section **Mappages de propriétés**, filtrez la liste pour trouver les mappages de propriétés appropriés.

1. Modifiez les propriétés à l'aide de la colonne des **propriétés du modèle**.

------
#### [ AWS CLI ]

Pour modifier une relation entre une interface et un modèle d'actif, utilisez l'`PutAssetModelInterfaceRelationship`action. Remplacez *your-asset-model-id* et *your-interface-asset-model-id* par vos propres valeurs. Pour plus d’informations, consultez [PutAssetModelInterfaceRelationship](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutAssetModelInterfaceRelationship.html) dans la *Référence d’API AWS IoT SiteWise *.

```
aws iotsitewise put-asset-model-interface-relationship \
    --asset-model-id your-asset-model-id \
    --interface-asset-model-id your-interface-asset-model-id \
```

------

## Répertorier les interfaces liées à un modèle d'actifs
<a name="interface-list"></a>

Pour obtenir la liste des interfaces appliquées à un modèle d'actif, procédez comme suit dans la AWS IoT SiteWise console ou via AWS CLI :

------
#### [ Console ]

1. Accédez à la [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) et choisissez **Modèles** dans le volet de navigation.

1. Dans la section **Modèles**, choisissez le modèle d'actif ou l'interface approprié. Vous pouvez consulter la liste des interfaces appliquées ou des modèles d'actifs liés sur la page de détails correspondante du modèle. 
   + Lorsque vous consultez une interface particulière, consultez la section **Modèles d'actifs liés**.
   + Lorsque vous consultez un modèle d'actif particulier, consultez la section **Interfaces appliquées**.

------
#### [ AWS CLI ]

Pour répertorier les interfaces, vous pouvez utiliser l'`ListInterfaceRelationships`opération. Remplacez *your-interface-asset-model-id* par votre propre valeur. Pour plus d’informations, consultez [ListInterfaceRelationships](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListInterfaceRelationships.html) dans la *Référence d’API AWS IoT SiteWise *.

```
aws iotsitewise list-interface-relationships \
    --interface-asset-model-id your-interface-asset-model-id \
    [--next-token your-next-token] \
    [--max-results 20]
```

------

## Afficher les détails d'une relation entre une interface et un modèle d'actif
<a name="interface-view-details"></a>

Pour voir les détails d'une interface appliquée à un modèle d'actif, procédez comme suit dans la AWS IoT SiteWise console ou via AWS CLI :

------
#### [ Console ]

Consultez les détails des interfaces appliquées et des modèles d'actifs liés.

1. Accédez à la [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) et choisissez **Modèles** dans le volet de navigation.

1. Dans la section **Modèles**, recherchez le modèle d'actif ou l'interface approprié. Sélectionnez le **nom** du modèle ou de l'interface pour ouvrir une page contenant plus de détails.

------
#### [ AWS CLI ]

Pour afficher les détails d'une interface pour une relation entre une interface et un modèle d'actif, utilisez l'`DescribeAssetModelInterfaceRelationship`action. Remplacez *your-asset-model-id* et *your-interface-asset-model-id* par vos propres valeurs. Pour plus d’informations, consultez [DescribeAssetModelInterfaceRelationship](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelInterfaceRelationship.html) dans la *Référence d’API AWS IoT SiteWise *.

```
aws iotsitewise describe-asset-model-interface-relationship \
    --asset-model-id your-asset-model-id \
    --interface-asset-model-id your-interface-asset-model-id
```

------

## Supprimer une interface appliquée à un modèle d'actif
<a name="interface-remove"></a>

Pour supprimer une interface appliquée à un modèle de ressource, procédez comme suit dans la AWS IoT SiteWise console ou via AWS CLI :

------
#### [ Console ]

Nous recommandons de supprimer une interface via le modèle d'actif. Vous pouvez également supprimer une interface ou dissocier une interface via la page d'une interface spécifique.

1. Accédez à la [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) et choisissez **Modèles** dans le volet de navigation.

1. Sélectionnez le modèle d'actif approprié dont vous souhaitez supprimer la relation d'interface.

1. Choisissez **Dissocier le modèle d'actif**.

------
#### [ AWS CLI ]

Pour supprimer une relation d'interface d'un modèle de ressource, vous pouvez utiliser l'`DeleteAssetModelInterfaceRelationship`action. Remplacez *your-interface-asset-model-id* par votre propre valeur. Pour plus d’informations, consultez [DeleteAssetModelInterfaceRelationship](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModelInterfaceRelationship.html) dans la *Référence d’API AWS IoT SiteWise *.

```
aws iotsitewise delete-asset-model-interface-relationship \
    --asset-model-id your-asset-model-id \
    --interface-asset-model-id your-interface-asset-model-id
```

------

# Exemples d'interfaces supplémentaires
<a name="interface-additional-examples"></a>

Voici d'autres exemples illustrant comment les interfaces peuvent être utilisées dans différents scénarios industriels :

## Équipements de production d'énergie
<a name="interface-example-energy"></a>

Une société de production d'électricité peut utiliser des interfaces pour standardiser les mesures sur différents types d'équipements de production :

```
{
  "assetModelName": "GENERATOR-INTERFACE",
  "assetModelDescription": "Standard interface for power generators",
  "assetModelType": "INTERFACE",
  "assetModelProperties": [
    {
      "name": "ActivePower",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "MW"
    },
    {
      "name": "ReactivePower",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "MVAR"
    },
    {
      "name": "Frequency",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "Hz"
    },
    {
      "name": "PowerFactor",
      "dataType": "DOUBLE",
      "type": {
        "metric": {
          "expression": "cos(atan(ReactivePower / ActivePower))",
          "variables": [
            {
              "name": "ActivePower",
              "value": { "propertyId": "${ActivePower}" }
            },
            {
              "name": "ReactivePower",
              "value": { "propertyId": "${ReactivePower}" }
            }
          ],
          "window": { "tumbling": { "interval": "5m" } }
        }
      },
      "unit": "None"
    }
  ]
}
```

Cette interface peut être appliquée à différents modèles d'actifs de générateurs (turbines à gaz, turbines à vapeur, éoliennes) afin de garantir des mesures de puissance cohérentes sur l'ensemble du parc.

## Installations de traitement de l'eau
<a name="interface-example-water"></a>

Un service de distribution d'eau peut utiliser des interfaces pour normaliser la surveillance entre les stations de traitement :

```
{
  "assetModelName": "WATER-QUALITY-INTERFACE",
  "assetModelDescription": "Standard interface for water quality monitoring",
  "assetModelType": "INTERFACE",
  "assetModelProperties": [
    {
      "name": "pH",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "pH"
    },
    {
      "name": "Turbidity",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "NTU"
    },
    {
      "name": "DissolvedOxygen",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "mg/L"
    },
    {
      "name": "QualityIndex",
      "dataType": "DOUBLE",
      "type": {
        "metric": {
          "expression": "(pH >= 6.5 && pH <= 8.5 ? 100 : 50) * (Turbidity < 1 ? 1 : 0.8) * (DissolvedOxygen > 5 ? 1 : 0.7)",
          "variables": [
            {
              "name": "pH",
              "value": { "propertyId": "${pH}" }
            },
            {
              "name": "Turbidity",
              "value": { "propertyId": "${Turbidity}" }
            },
            {
              "name": "DissolvedOxygen",
              "value": { "propertyId": "${DissolvedOxygen}" }
            }
          ],
          "window": { "tumbling": { "interval": "1h" } }
        }
      },
      "unit": "Score"
    }
  ]
}
```

Cette interface garantit que la qualité de l'eau est mesurée de manière cohérente dans toutes les installations de traitement, quelle que soit la configuration spécifique de leurs équipements.

## Interfaces hiérarchiques
<a name="interface-example-hierarchical"></a>

Les interfaces peuvent être organisées hiérarchiquement pour prendre en charge les métriques agrégées à différents niveaux de votre opération :

1. **Interface au niveau de l'équipement** (par exemple,) `PUMP-INTERFACE`
   + Propriétés : débit, pression, consommation électrique, vibrations
   + Métriques : efficacité, score de santé

1. **Interface au niveau du processus** (par exemple,) `PUMPING-STATION-INTERFACE`
   + Propriétés : débit total, pression moyenne, puissance totale
   + Indicateurs : efficacité de la station, coût d'exploitation par volume
   + Hiérarchie : contient de `PUMP-INTERFACE` l'équipement

1. **Interface au niveau de** l'installation (par exemple,) `WATER-FACILITY-INTERFACE`
   + Propriétés : débit de l'installation, consommation d'énergie, utilisation de produits chimiques
   + Indicateurs : efficacité des installations, coût par unité de volume, empreinte carbone
   + Hiérarchie : contient `PUMPING-STATION-INTERFACE` les processus

Cette approche hiérarchique permet de calculer des métriques à chaque niveau tout en maintenant la cohérence dans l'ensemble de vos opérations.

# Configurer l' AWS IoT SiteWise objet IDs
<a name="object-ids"></a>

 AWS IoT SiteWise définit différents types d'objets persistants, tels que les actifs, les modèles d'actifs, les propriétés et les hiérarchies. Tous ces objets possèdent des identifiants uniques que vous pouvez utiliser pour les récupérer, les mettre à jour et les supprimer. 

 AWS IoT SiteWise propose différentes options aux clients pour la création d'un identifiant. AWS IoT SiteWise en génère un pour vous par défaut au moment de la création de l'objet. Les utilisateurs peuvent également ajouter les leurs IDs à vos objets. 

**Topics**
+ [Travailler avec un objet UUIDs](#object-uuids)
+ [Utiliser un usage externe IDs](#external-ids)

## Travailler avec un objet UUIDs
<a name="object-uuids"></a>

 Chaque objet persistant AWS IoT SiteWise possède un [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) pour l'identifier. Par exemple, les modèles d'actifs ont un ID de modèle d'actif, les actifs ont un ID d'actif, etc. Cet identifiant est attribué au moment de la création de l'objet et reste inchangé pendant toute la durée de vie de l'objet. 

 Lorsque vous créez un nouvel objet, il AWS IoT SiteWise génère un identifiant unique pour vous par défaut. Vous pouvez également fournir votre propre identifiant au moment de la création au format UUID. 

**Note**  
UUIDs **doit** être globalement unique dans la AWS région où il a été créé, et pour le même type d'objet. Lorsque vous AWS IoT SiteWise générez automatiquement un identifiant, celui-ci est toujours unique. Si vous choisissez votre propre identifiant, assurez-vous qu'il est unique.

Par exemple, si vous créez un nouveau modèle d'actif en appelant [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html), vous pouvez fournir votre propre UUID dans le `assetModelId` champ facultatif de la demande.

En revanche, si vous omettez `assetModelId` de le faire dans la demande, AWS IoT SiteWise génère un UUID pour le nouveau modèle d'actif.

## Utiliser un usage externe IDs
<a name="external-ids"></a>

Pour définir votre propre identifiant dans un format autre que l'UUID, vous pouvez attribuer un identifiant *externe*. Par exemple, vous pouvez le faire si vous réutilisez un identifiant que vous utilisez dans un système qui ne l'est pas AWS, ou pour qu'il soit plus lisible par l'homme. IDs Les formats externes sont plus flexibles. Vous pouvez les utiliser pour référencer vos objets dans des opérations AWS IoT SiteWise d'API où vous utiliseriez autrement l'UUID. 

 Comme le UUIDs, chaque identifiant externe doit être unique dans son contexte. Par exemple, vous ne pouvez pas avoir deux modèles d'actifs avec le même ID externe. De plus, comme le UUIDs, un objet ne peut avoir qu'un seul identifiant externe au cours de sa durée de vie, qui ne peut pas changer. 

### Différences entre externe IDs et UUIDs
<a name="external-ids-differences-from-uuid"></a>

 IDs Les différences externes sont les suivantes : UUIDs 
+ Chaque objet possède un UUID, mais les objets externes IDs sont facultatifs.
+ AWS IoT SiteWise ne génère jamais de données externes IDs. Vous les fournissez vous-même.
+ Si l'objet n'en possède pas déjà un, vous pouvez attribuer un identifiant externe à tout moment.

### Format externe IDs
<a name="external-id-format"></a>

Un identifiant externe valide possède les propriétés suivantes :
+ Comporte entre 2 et 128 caractères.
+ Les premier et dernier caractères doivent être alphanumériques (A-Z, a-z, 0-9).
+ Les caractères autres que le premier et le dernier doivent être alphanumériques ou être l'un des suivants : `_-.:`

Par exemple, un identifiant externe doit être conforme à l'expression régulière suivante :

`[a-zA-Z0-9][a-zA-Z0-9_\-.:]*[a-zA-Z0-9]+`

### Objets de référence avec interface externe IDs
<a name="external-id-references"></a>

Dans de nombreux endroits où vous pouvez référencer un objet à l'aide de son UUID, vous pouvez utiliser son identifiant externe à la place, s'il en possède un. Pour ce faire, ajoutez l'ID externe à la chaîne`externalId:`.

Supposons, par exemple, que vous disposiez d'un modèle d'actif dont l'UUID (ID de modèle d'actif) est`a1b2c3d4-5678-90ab-cdef-11111EXAMPLE`, qui possède également l'ID externe. `myExternalId` Appelez [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)pour obtenir des détails à ce sujet. Vous pouvez utiliser l'une des valeurs suivantes comme valeur de `assetModelId` :
+ Avec l'identifiant du modèle d'actif (UUID) lui-même : `a1b2c3d4-5678-90ab-cdef-11111EXAMPLE`
+ Avec l'ID externe : `externalId:myExternalId`

```
aws iotsitewise describe-asset-model --asset-model-id a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
aws iotsitewise describe-asset-model --asset-model-id externalId:myExternalId
```

**Note**  
Le `externalId:` préfixe ne fait pas lui-même partie de l'identifiant externe. Vous ne devez fournir le préfixe que lorsque vous fournissez un identifiant externe à une opération d'API qui accepte l'un UUIDs ou l'autre élément externe IDs. Par exemple, fournissez le préfixe lorsque vous interrogez ou mettez à jour un objet existant.  
Lorsque vous définissez un ID externe pour un objet, par exemple lorsque vous créez un modèle de ressource, n'incluez pas le préfixe.

Vous pouvez utiliser l'interface externe IDs à la place de cette UUIDs manière pour de nombreuses opérations d'API AWS IoT SiteWise, mais pas pour toutes. Par exemple, le [GetAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html), **doit être** utilisé UUIDs ; il ne prend pas en charge l'utilisation d'identifiants externes.

Pour déterminer si une opération d'API particulière prend en charge cette utilisation, consultez la [référence des API](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Operations.html).

# Créez des modèles d'actifs, des modèles de composants et des interfaces pour AWS IoT SiteWise
<a name="create-asset-and-component-models"></a>

AWS IoT SiteWise les modèles d'actifs, les modèles de composants et les interfaces favorisent la standardisation de vos données industrielles. Les modèles d'actifs définissent l'actif global, tel qu'une éolienne ou une chaîne de fabrication. Les modèles de composants représentent les composants individuels qui constituent l'actif, tels que les lames, les générateurs ou les capteurs. Les interfaces appliquent les normes aux différents modèles d'actifs. En créant ces modèles, vous pouvez organiser et structurer les données de vos actifs de manière à refléter les relations et les hiérarchies réelles de vos équipements industriels, ce qui facilite leur surveillance, leur analyse et leur maintenance.

Un modèle d'actif ou un modèle de composant contient un nom, une description, des propriétés d'actif et (éventuellement) des modèles composites personnalisés qui regroupent les propriétés ou qui font référence à des modèles de composants pour des sous-assemblages. 

Dans AWS IoT SiteWise, vous pouvez créer des modèles d'actifs, des modèles de composants et des interfaces pour représenter la structure et les propriétés de vos actifs industriels et de leurs composants. 
+ Vous utilisez un **modèle d'actifs** pour créer des actifs. Outre les fonctionnalités répertoriées ci-dessus, un modèle d'actifs peut également contenir des définitions hiérarchiques qui définissent les relations entre les actifs.
+ Un **modèle de composant** représente un sous-assemblage au sein d'un modèle d'actif ou d'un autre modèle de composant. Lorsque vous créez un modèle de composant, vous pouvez y ajouter des références dans des modèles d'actifs et dans d'autres modèles de composants. Toutefois, vous ne pouvez pas créer de ressources directement à partir de modèles de composants.
+ Une **interface applique** les normes aux différents modèles d'actifs. Les interfaces définissent les propriétés, les métriques et les hiérarchies communes qui doivent être mises en œuvre par les modèles d'actifs. Vous ne pouvez pas créer de ressources directement à partir d'interfaces, mais elles contribuent à garantir la cohérence entre des types de ressources similaires.

Après avoir créé un modèle d'actif ou un modèle de composant, vous pouvez créer des modèles composites personnalisés pour qu'il regroupe des propriétés ou fasse référence à des modèles de composants existants. Vous pouvez également lier des interfaces à des modèles d'actifs pour renforcer la standardisation.

Pour plus d'informations sur la création de modèles d'actifs, de modèles de composants et d'interfaces, consultez les sections suivantes.

**Topics**
+ [Créez des modèles d'actifs dans AWS IoT SiteWise](create-asset-models.md)
+ [Création de modèles de composants](create-component-models.md)
+ [Définir les propriétés des données](asset-properties.md)
+ [Création de modèles composites personnalisés (composants)](create-custom-composite-models.md)

# Créez des modèles d'actifs dans AWS IoT SiteWise
<a name="create-asset-models"></a>

AWS IoT SiteWise les modèles d'actifs favorisent la standardisation de vos données industrielles. Un modèle de ressource contient un nom, une description, des propriétés de ressource et des définitions de hiérarchie de ressources. Par exemple, vous pouvez définir un modèle d'éolienne avec des propriétés de température, de rotation par minute (tr/min) et de puissance. Ensuite, vous pouvez définir un modèle de parc éolien avec une propriété de puissance de sortie nette et une définition de hiérarchie d'éoliennes.

**Note**  
Nous vous recommandons de modéliser votre opération en commençant par les nœuds de niveau inférieur. Par exemple, créez votre modèle d'éolienne avant de créer votre modèle de parc éolien. Les définitions de hiérarchie des ressources contiennent des références à des modèles de ressources existants. En suivant cette approche, vous pouvez définir des hiérarchies de ressources lors de la création de vos modèles.
Les modèles d'actifs ne peuvent pas contenir d'autres modèles d'actifs. Si vous devez définir un modèle auquel vous pouvez faire référence en tant que sous-assemblage au sein d'un autre modèle, vous devez plutôt créer un modèle composant-->. Pour de plus amples informations, veuillez consulter [Création de modèles de composants](create-component-models.md).

Les sections suivantes décrivent comment utiliser la AWS IoT SiteWise console ou l'API pour créer des modèles d'actifs. Les sections suivantes décrivent également les différents types de propriétés et de hiérarchies de ressources que vous pouvez utiliser pour créer des modèles.

**Topics**
+ [Création d'un modèle d'actif (console)](#create-asset-model-console)
+ [Création d'un modèle d'actifs (AWS CLI)](#create-asset-model-cli)
+ [Exemples de modèles de ressources](#asset-model-examples)
+ [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md)

## Création d'un modèle d'actif (console)
<a name="create-asset-model-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour créer un modèle d'actif. La AWS IoT SiteWise console fournit diverses fonctionnalités, telles que la saisie automatique des formules, qui peuvent vous aider à définir des modèles d'actifs valides.

**Pour créer un modèle de ressource (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez **Créer un modèle d'actif**.

1. Sur la page **Créer un modèle**, procédez comme suit :

   1. Saisissez un **nom** pour le modèle de ressource, tel que **Wind Turbine** ou **Wind Turbine Model**. Ce nom doit être unique pour tous les modèles de votre compte dans cette région.

   1. (Facultatif) Ajoutez un **ID externe** pour le modèle. Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

   1. (Facultatif) Ajoutez des **définitions de mesures** pour le modèle. Les mesures représentent des flux de données provenant de votre équipement. Pour de plus amples informations, veuillez consulter [Définir les flux de données provenant de l'équipement (mesures)](measurements.md).

   1. (Facultatif) Ajoutez des **définitions de transformations** pour le modèle. Les transformations sont des formules qui font correspondre les données d'un formulaire à un autre. Pour de plus amples informations, veuillez consulter [Transformer les données (transformations)](transforms.md).

   1. (Facultatif) Ajoutez des **définitions de métriques** pour le modèle. Les métriques sont des formules qui regroupent les données sur des intervalles de temps. Les métriques peuvent saisir des données provenant des actifs associés, afin que vous puissiez calculer des valeurs représentant votre activité ou un sous-ensemble de celle-ci. Pour de plus amples informations, veuillez consulter [Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md). 

   1. (Facultatif) Ajoutez des **définitions de hiérarchies** pour le modèle. Les hiérarchies sont des relations entre les actifs. Pour de plus amples informations, veuillez consulter [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md).

   1. (Facultatif) Ajoutez des balises pour le modèle de ressource. Pour de plus amples informations, veuillez consulter [Marquez vos AWS IoT SiteWise ressources](tag-resources.md).

   1. Sélectionnez **Créer un modèle**.

   Lorsque vous créez un modèle de ressource, la AWS IoT SiteWise console accède à la page du nouveau modèle. Sur cette page, vous pouvez voir l’**état** du modèle, qui est initialement **CRÉATION**. Cette page est automatiquement mise à jour, de sorte que vous pouvez attendre la mise à jour de l'état du modèle.
**Note**  
Le processus de création de modèles de ressources peut prendre jusqu'à quelques minutes pour les modèles complexes. Une fois que le statut du modèle d'**actif est ACTIF**, vous pouvez utiliser le modèle d'actif pour créer des actifs. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

1. (Facultatif) Après avoir créé votre modèle d'actif, vous pouvez configurer votre modèle d'actif pour la périphérie. Pour plus d'informations sur SiteWise Edge, consultez[Configuration des fonctionnalités Edge sur AWS IoT SiteWise Edge](edge-data-collection-and-processing.md). 

   1. Sur la page du modèle, choisissez **Configurer pour Edge**.
**Note**  
La fonctionnalité du pack de traitement des données (DPP) n’est plus disponible pour les nouveaux clients. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d’informations, consultez [Data processing pack availability change](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html).

   1. Sur la page de configuration du modèle, choisissez la configuration des bords pour votre modèle. Cela contrôle les endroits où les propriétés associées à ce modèle d'actif AWS IoT SiteWise peuvent être calculées et stockées. Pour plus d'informations sur la configuration de votre modèle pour le bord, consultez[Configuration d'une source OPC UA dans Edge SiteWise](configure-opcua-source.md).

   1. Pour la **configuration personnalisée de la périphérie**, choisissez l'emplacement où vous AWS IoT SiteWise souhaitez calculer et stocker chacune des propriétés de votre modèle d'actifs.
**Note**  
Les transformations et les métriques associées doivent être configurées pour le même emplacement. Pour plus d'informations sur la configuration de votre modèle pour le bord, consultez[Configuration d'une source OPC UA dans Edge SiteWise](configure-opcua-source.md).

   1. Choisissez **Enregistrer**. Sur la page du modèle, votre **configuration Edge** doit maintenant être **configurée**.

## Création d'un modèle d'actifs (AWS CLI)
<a name="create-asset-model-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour créer un modèle d'actif.

Utilisez l'opération [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) pour créer un modèle de ressource avec des propriétés et des hiérarchies. Cette opération attend une charge utile avec la structure suivante.

```
{
  "assetModelType": "ASSET_MODEL",
  "assetModelName": "String",
  "assetModelDescription": "String",
  "assetModelProperties": Array of AssetModelProperty,
  "assetModelHierarchies": Array of AssetModelHierarchyDefinition
}
```

**Pour créer un modèle d'actif (AWS CLI)**

1. Créez un fichier nommé `asset-model-payload.json` et copiez l'objet JSON suivant dans le fichier.

   ```
   {
     "assetModelType": "ASSET_MODEL",
     "assetModelName": "",
     "assetModelDescription": "",
     "assetModelProperties": [
   
     ],
     "assetModelHierarchies": [
   
     ],
     "assetModelCompositeModels": [
   
     ]
   }
   ```

1. Utilisez votre éditeur de texte JSON préféré pour modifier le fichier `asset-model-payload.json` pour les éléments suivants :

   1. Saisissez un nom (`assetModelName`) pour le modèle de ressource, tel que **Wind Turbine** ou **Wind Turbine Model**. Ce nom doit être unique pour tous les modèles d'actifs et modèles de composants de votre compte dans ce cas Région AWS.

   1. (Facultatif) Entrez un ID externe (`assetModelExternalId`) pour le modèle d'actif. Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

   1. (Facultatif) Saisissez une description (`assetModelDescription`) pour le modèle de ressource ou supprimez la paire clé-valeur `assetModelDescription`.

   1. (Facultatif) Définissez les propriétés de ressources (`assetModelProperties`) pour le modèle. Pour de plus amples informations, veuillez consulter [Définir les propriétés des données](asset-properties.md).

   1. (Facultatif) Définissez les hiérarchies de ressources (`assetModelHierarchies`) pour le modèle. Pour de plus amples informations, veuillez consulter [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md).

   1. (Facultatif) Définissez les alarmes pour le modèle. Les alarmes surveillent d'autres propriétés afin que vous puissiez identifier les équipements ou les processus nécessitant une attention particulière. Chaque définition d'alarme est un modèle composite (`assetModelCompositeModels`) qui normalise l'ensemble de propriétés utilisées par l'alarme. Pour plus d’informations, consultez [Surveillez les données avec des alarmes AWS IoT SiteWise](industrial-alarms.md) et [Définissez des alarmes sur les modèles d'actifs dans AWS IoT SiteWise](define-alarms.md).

   1. (Facultatif) Ajoutez des balises (`tags`) pour le modèle de ressource. Pour de plus amples informations, veuillez consulter [Marquez vos AWS IoT SiteWise ressources](tag-resources.md).

1. Exécutez la commande suivante pour créer un modèle de ressource à partir de la définition du fichier JSON.

   ```
   aws iotsitewise create-asset-model --cli-input-json file://asset-model-payload.json
   ```

   L'opération renvoie une réponse qui contient l'élément `assetModelId` auquel vous faites référence lors de la création d'une ressource. La réponse contient également l'état du modèle (`assetModelStatus.state`), qui est initialement `CREATING`. L'état du modèle de ressource correspond à `CREATING` jusqu'à ce que les modifications se propagent.
**Note**  
Le processus de création de modèles de ressources peut prendre jusqu'à quelques minutes pour les modèles complexes. Pour vérifier l'état actuel de votre modèle d'actif, utilisez l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération en spécifiant le`assetModelId`. Une fois que le statut du modèle de ressource est `ACTIVE`, vous pouvez l'utiliser pour créer des ressources. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

1. (Facultatif) Créez des modèles composites personnalisés pour votre modèle d'actif. Avec les modèles composites personnalisés, vous pouvez regrouper les propriétés au sein du modèle ou inclure un sous-assemblage en faisant référence à un modèle de composant. Pour de plus amples informations, veuillez consulter [Création de modèles composites personnalisés (composants)](create-custom-composite-models.md).

## Exemples de modèles de ressources
<a name="asset-model-examples"></a>

Cette section contient des exemples de définitions de modèles d'actifs que vous pouvez utiliser pour créer des modèles d'actifs avec le AWS CLI et AWS IoT SiteWise SDKs. Ces modèles d'actifs représentent une éolienne et un parc éolien. Les actifs des éoliennes ingèrent les données brutes des capteurs et calculent des valeurs telles que la puissance et la vitesse moyenne du vent. Les actifs du parc éolien calculent des valeurs telles que la puissance totale de toutes les éoliennes du parc éolien.

**Topics**
+ [Modèle de ressource d’éolienne](#example-wind-turbine)
+ [Modèle de ressource de parc éolien](#example-wind-farm)

### Modèle de ressource d’éolienne
<a name="example-wind-turbine"></a>

Le modèle de ressource suivant représente une éolienne dans un parc éolien. L'éolienne ingère les données des capteurs pour calculer des valeurs telles que la puissance et la vitesse moyenne du vent.

**Note**  
Cet exemple de modèle ressemble au modèle d'éolienne de la AWS IoT SiteWise démo. Pour de plus amples informations, veuillez consulter [Utiliser la AWS IoT SiteWise démo](getting-started-demo.md).

```
{
  "assetModelType": "ASSET_MODEL",
  "assetModelName": "Wind Turbine Asset Model",
  "assetModelDescription": "Represents a turbine in a wind farm.",
  "assetModelProperties": [
    {
      "name": "Location",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Renton"
        }
      }
    },
    {
      "name": "Make",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Amazon"
        }
      }
    },
    {
      "name": "Model",
      "dataType": "INTEGER",
      "type": {
        "attribute": {
          "defaultValue": "500"
        }
      }
    },
    {
      "name": "Torque (KiloNewton Meter)",
      "dataType": "DOUBLE",
      "unit": "kNm",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "Wind Direction",
      "dataType": "DOUBLE",
      "unit": "Degrees",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "RotationsPerMinute",
      "dataType": "DOUBLE",
      "unit": "RPM",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "Wind Speed",
      "dataType": "DOUBLE",
      "unit": "m/s",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "RotationsPerSecond",
      "dataType": "DOUBLE",
      "unit": "RPS",
      "type": {
        "transform": {
          "expression": "rpm / 60",
          "variables": [
            {
              "name": "rpm",
              "value": {
                "propertyId": "RotationsPerMinute"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Overdrive State",
      "dataType": "DOUBLE",
      "type": {
        "transform": {
          "expression": "gte(torque, 3)",
          "variables": [
            {
              "name": "torque",
              "value": {
                "propertyId": "Torque (KiloNewton Meter)"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Average Power",
      "dataType": "DOUBLE",
      "unit": "Watts",
      "type": {
        "metric": {
          "expression": "avg(torque) * avg(rps) * 2 * 3.14",
          "variables": [
            {
              "name": "torque",
              "value": {
                "propertyId": "Torque (Newton Meter)"
              }
            },
            {
              "name": "rps",
              "value": {
                "propertyId": "RotationsPerSecond"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Average Wind Speed",
      "dataType": "DOUBLE",
      "unit": "m/s",
      "type": {
        "metric": {
          "expression": "avg(windspeed)",
          "variables": [
            {
              "name": "windspeed",
              "value": {
                "propertyId": "Wind Speed"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Torque (Newton Meter)",
      "dataType": "DOUBLE",
      "unit": "Nm",
      "type": {
        "transform": {
          "expression": "knm * 1000",
          "variables": [
            {
              "name": "knm",
              "value": {
                "propertyId": "Torque (KiloNewton Meter)"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Overdrive State Time",
      "dataType": "DOUBLE",
      "unit": "Seconds",
      "type": {
        "metric": {
          "expression": "statetime(overdrive_state)",
          "variables": [
            {
              "name": "overdrive_state",
              "value": {
                "propertyId": "Overdrive State"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    }
  ],
  "assetModelHierarchies": []
}
```

### Modèle de ressource de parc éolien
<a name="example-wind-farm"></a>

Le modèle de ressource suivant représente un parc éolien qui comprend plusieurs éoliennes. Ce modèle d'actif définit une [hiérarchie](define-asset-hierarchies.md) par rapport au modèle d'éolienne. Cela permet au parc éolien de calculer des valeurs (telles que la puissance moyenne) à partir des données de toutes les éoliennes du parc éolien.

**Note**  
Cet exemple de modèle ressemble au modèle de parc éolien présenté dans la AWS IoT SiteWise démo. Pour de plus amples informations, veuillez consulter [Utiliser la AWS IoT SiteWise démo](getting-started-demo.md).

Ce modèle de ressource dépend du [Modèle de ressource d’éolienne](#example-wind-turbine). Remplacez les valeurs `propertyId` et `childAssetModelId` par celles d'un modèle de ressource d'éolienne existant.

```
{
  "assetModelName": "Wind Farm Asset Model",
  "assetModelDescription": "Represents a wind farm.",
  "assetModelProperties": [
    {
      "name": "Code",
      "dataType": "INTEGER",
      "type": {
        "attribute": {
          "defaultValue": "300"
        }
      }
    },
    {
      "name": "Location",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Renton"
        }
      }
    },
    {
      "name": "Reliability Manager",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Mary Major"
        }
      }
    },
    {
      "name": "Total Overdrive State Time",
      "dataType": "DOUBLE",
      "unit": "seconds",
      "type": {
        "metric": {
          "expression": "sum(overdrive_state_time)",
          "variables": [
            {
              "name": "overdrive_state_time",
              "value": {
                "propertyId": "ID of Overdrive State Time property in Wind Turbine Asset Model",
                "hierarchyId": "Turbine Asset Model"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Total Average Power",
      "dataType": "DOUBLE",
      "unit": "Watts",
      "type": {
        "metric": {
          "expression": "sum(turbine_avg_power)",
          "variables": [
            {
              "name": "turbine_avg_power",
              "value": {
                "propertyId": "ID of Average Power property in Wind Turbine Asset Model",
                "hierarchyId": "Turbine Asset Model"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    }
  ],
  "assetModelHierarchies": [
    {
      "name": "Turbine Asset Model",
      "childAssetModelId": "ID of Wind Turbine Asset Model"
    }
  ]
}
```

# Définir les hiérarchies des modèles d'actifs
<a name="define-asset-hierarchies"></a>

Vous pouvez définir des hiérarchies de modèles d'actifs afin de créer des associations logiques entre les modèles d'actifs de votre exploitation industrielle. Par exemple, vous pouvez définir un parc éolien composé de parcs éoliens terrestres et offshore. Un parc éolien terrestre comprend une turbine et un emplacement à terre. Un parc éolien en mer contient une turbine et un emplacement en mer.

![\[AWS IoT SiteWise hiérarchies des parcs éoliens entre les modèles d'actifs.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/asset-model-hierarchies.png)


Lorsque vous associez un modèle d'actif enfant à un modèle d'actif parent par le biais d'une hiérarchie, les métriques du modèle d'actif parent peuvent entrer des données à partir des métriques du modèle d'actif enfant. Vous pouvez utiliser les hiérarchies et les métriques des modèles d'actifs pour calculer des statistiques qui fournissent un aperçu de votre activité ou d'un sous-ensemble de celle-ci. Pour de plus amples informations, veuillez consulter [Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md).

Chaque hiérarchie définit une relation entre un modèle d'actif parent et un modèle d'actif enfant. Dans un modèle d'actif parent, vous pouvez définir plusieurs hiérarchies pour le même modèle d'actif enfant. Par exemple, si vous avez deux types d'éoliennes différents dans vos parcs éoliens, où toutes les éoliennes sont représentées par le même modèle d'actif, vous pouvez définir une hiérarchie pour chaque type. Vous pouvez ensuite définir des mesures dans le modèle de parc éolien afin de calculer des statistiques indépendantes et combinées pour chaque type d'éolienne.

Un modèle d'actif parent peut être associé à plusieurs modèles d'actifs enfants. Par exemple, si vous avez un parc éolien terrestre et un parc éolien offshore représentés par deux modèles d'actifs différents, vous pouvez associer ces modèles d'actifs au même modèle d'actif de parc éolien parent. 

Un modèle d'actif enfant peut également être associé à plusieurs modèles d'actifs parents. Par exemple, si vous avez deux types de parcs éoliens différents, où toutes les éoliennes sont représentées par le même modèle d'actif, vous pouvez associer le modèle d'actif d'éolienne à différents modèles d'actifs de parcs éoliens. 

**Note**  
Lorsque vous définissez une hiérarchie de modèles d'actifs, le modèle d'actif enfant doit être `ACTIVE` ou avoir une `ACTIVE` version précédente. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

Après avoir défini des modèles de ressources hiérarchiques et créé des ressources, vous pouvez associer les ressources pour terminer la relation parent-enfant. Pour plus d’informations, consultez [Créez des actifs pour les modèles d'actifs dans AWS IoT SiteWise](create-assets.md) et [Associer et dissocier des actifs](add-associated-assets.md).

**Topics**
+ [Définition de hiérarchies de modèles d'actifs (console)](#define-asset-hierarchies-console)
+ [Définir des hiérarchies d'actifs ()AWS CLI](#define-asset-hierarchies-cli)

## Définition de hiérarchies de modèles d'actifs (console)
<a name="define-asset-hierarchies-console"></a>

Lorsque vous définissez une hiérarchie pour un modèle d'actif dans la AWS IoT SiteWise console, vous spécifiez les paramètres suivants :
+ **Nom** de la hiérarchie : nom de la hiérarchie, par exemple**Wind Turbines**.
+ **Modèle hiérarchique : modèle** d'actif enfant.
+ **ID externe de hiérarchie** (facultatif) : il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actif (console)](create-asset-models.md#create-asset-model-console).

## Définir des hiérarchies d'actifs ()AWS CLI
<a name="define-asset-hierarchies-cli"></a>

Lorsque vous définissez une hiérarchie pour un modèle d'actif à l'aide de l' AWS IoT SiteWise API, vous spécifiez les paramètres suivants :
+ `name`— Le nom de la hiérarchie, par exemple**Wind Turbines**.
+ `childAssetModelId`— L'ID ou l'ID externe du modèle d'actif enfant pour la hiérarchie. Vous pouvez utiliser cette [ListAssetModels](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html)opération pour trouver l'ID d'un modèle d'actif existant.

**Example Exemple de définition de hiérarchie**  
L'exemple suivant illustre une hiérarchie de modèles d'actifs qui représente la relation entre un parc éolien et les éoliennes. Cet objet est un exemple de [AssetModelHierarchy](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelHierarchy.html). Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actifs (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
  ...
  "assetModelHierarchies": [
    {
      "name": "Wind Turbines",
      "childAssetModelId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"
    },
  ]
}
```

# Création de modèles de composants
<a name="create-component-models"></a>

Utilisez des modèles de AWS IoT SiteWise composants pour définir des sous-assemblages auxquels vous pouvez faire référence à partir de modèles de ressources ou d'autres modèles de composants. De cette façon, vous pouvez réutiliser la définition du composant dans plusieurs autres modèles, ou plusieurs fois dans le même modèle.

Le processus de définition d'un modèle de composant est très similaire à celui d'un modèle d'actif. Tout comme un modèle d'actif, un modèle de composant possède un nom, une description et des propriétés d'actif. Toutefois, les modèles de composants ne peuvent pas inclure de définitions de hiérarchie des actifs, car les modèles de composants eux-mêmes ne peuvent pas être utilisés pour créer directement des actifs. Les modèles de composants ne peuvent pas non plus définir d'alarmes.

Par exemple, vous pouvez définir un composant pour un servomoteur avec des propriétés de température du moteur, de température du codeur et de résistance d'isolement. Vous pouvez ensuite définir un modèle d'actif pour les équipements contenant des servomoteurs, tels qu'une machine à commande numérique.

**Note**  
Nous vous recommandons de modéliser votre opération en commençant par les nœuds de niveau inférieur. Par exemple, créez le composant de votre servomoteur avant de créer le modèle d'actif de votre machine CNC. Les modèles d'actifs contiennent des références à des modèles de composants existants.
Vous ne pouvez pas créer un actif directement à partir d'un modèle de composant. Pour créer un actif qui utilise votre composant, vous devez créer un modèle d'actif pour votre actif. Ensuite, vous créez un modèle composite personnalisé qui fait référence à votre composant. Pour plus d'informations sur la création de modèles d'actifs, voir [Créez des modèles d'actifs dans AWS IoT SiteWise](create-asset-models.md) Pour plus d'informations sur la création de modèles composites personnalisés, voir[Création de modèles composites personnalisés (composants)](create-custom-composite-models.md).

Les sections suivantes décrivent comment utiliser l' AWS IoT SiteWise API pour créer des modèles de composants.

**Topics**
+ [Création d'un modèle de composant (AWS CLI)](#create-component-model-cli)
+ [Exemple de modèle de composant](#component-model-example)

## Création d'un modèle de composant (AWS CLI)
<a name="create-component-model-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour créer un modèle de composant.

Utilisez cette [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html)opération pour créer un modèle de composant avec des propriétés. Cette opération attend une charge utile dont la structure est la suivante :

```
{
  "assetModelType": "COMPONENT_MODEL",
  "assetModelName": "String",
  "assetModelDescription": "String",
  "assetModelProperties": Array of AssetModelProperty,
}
```

**Pour créer un modèle de composant (AWS CLI)**

1. Créez un fichier appelé, `component-model-payload.json` puis copiez l'objet JSON suivant dans le fichier :

   ```
   {
     "assetModelType": "COMPONENT_MODEL",
     "assetModelName": "",
     "assetModelDescription": "",
     "assetModelProperties": [
   
     ]
   }
   ```

1. Utilisez votre éditeur de texte JSON préféré pour modifier le fichier `component-model-payload.json` pour les éléments suivants :

   1. Entrez un nom (`assetModelName`) pour le modèle de composant, tel que **Servo Motor** ou**Servo Motor Model**. Ce nom doit être unique pour tous les modèles d'actifs et modèles de composants de votre compte dans ce cas Région AWS.

   1. (Facultatif) Entrez un ID externe (`assetModelExternalId`) pour le modèle de composant. Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

   1. (Facultatif) Saisissez une description (`assetModelDescription`) pour le modèle de ressource ou supprimez la paire clé-valeur `assetModelDescription`.

   1. (Facultatif) Définissez les propriétés des actifs (`assetModelProperties`) pour le modèle de composant. Pour de plus amples informations, veuillez consulter [Définir les propriétés des données](asset-properties.md).

   1. (Facultatif) Ajoutez des balises (`tags`) pour le modèle de ressource. Pour de plus amples informations, veuillez consulter [Marquez vos AWS IoT SiteWise ressources](tag-resources.md).

1. Exécutez la commande suivante pour créer un modèle de composant à partir de la définition du fichier JSON.

   ```
   aws iotsitewise create-asset-model --cli-input-json file://component-model-payload.json
   ```

   L'opération renvoie une réponse contenant ce à quoi vous `assetModelId` faites référence lorsque vous ajoutez une référence à votre modèle de composant dans un modèle d'actif ou un autre modèle de composant. La réponse contient également l'état du modèle (`assetModelStatus.state`), qui est initialement `CREATING`. L'état du modèle de composant est maintenu `CREATING` jusqu'à ce que les modifications se propagent.
**Note**  
Le processus de création de modèles de composants peut prendre jusqu'à quelques minutes pour les modèles complexes. Pour vérifier l'état actuel de votre modèle de composant, utilisez l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération en spécifiant le`assetModelId`. Une fois que le statut du modèle de composant est `ACTIVE` défini, vous pouvez ajouter des références à votre modèle de composant dans des modèles d'actifs ou d'autres modèles de composants. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

1. (Facultatif) Créez des modèles composites personnalisés pour votre modèle de composant. Avec les modèles composites personnalisés, vous pouvez regrouper les propriétés au sein du modèle ou inclure un sous-assemblage en faisant référence à un autre modèle de composant. Pour de plus amples informations, veuillez consulter [Création de modèles composites personnalisés (composants)](create-custom-composite-models.md). 

## Exemple de modèle de composant
<a name="component-model-example"></a>

Cette section contient un exemple de définition de modèle de composant que vous pouvez utiliser pour créer un modèle de composant avec le AWS CLI et AWS IoT SiteWise SDKs. Ce modèle de composant représente un servomoteur qui peut être utilisé dans un autre équipement, tel qu'une machine à commande numérique.

**Topics**
+ [Modèle de composant du servomoteur](#example-servo-motor)

### Modèle de composant du servomoteur
<a name="example-servo-motor"></a>

Le modèle de composant suivant représente un servomoteur qui peut être utilisé dans des équipements tels que des machines à commande numérique. Le servomoteur fournit diverses mesures, telles que les températures et la résistance électrique. Ces mesures sont disponibles sous forme de propriétés sur des actifs créés à partir de modèles d'actifs faisant référence au modèle de composant du servomoteur.

```
{
    "assetModelName": "ServoMotor",
    "assetModelType": "COMPONENT_MODEL",
    "assetModelProperties": [
        {
            "dataType": "DOUBLE",
            "name": "Servo Motor Temperature",
            "type": {
            "measurement": {}
            },
            "unit": "Celsius"
        },
        {
            "dataType": "DOUBLE",
            "name": "Spindle speed",
            "type": {
            "measurement": {}
            },
            "unit": "rpm"
        }
    ]
}
```

# Définir les propriétés des données
<a name="asset-properties"></a>

Les *propriétés des actifs* sont les structures de chaque actif qui contiennent des données sur les actifs. Les propriétés des ressources peuvent être l'un des types suivants :
+ **Attributs** : propriétés généralement statiques d'un actif, telles que le fabricant de l'appareil ou la région géographique. Pour de plus amples informations, veuillez consulter [Définir des données statiques (attributs)](attributes.md).
+ **Mesures — Les** flux de données brutes des capteurs de l'appareil d'un actif, tels que les valeurs de vitesse de rotation horodatées ou les valeurs de température horodatées en degrés Celsius. Une mesure est définie par un alias de flux de données. Pour de plus amples informations, veuillez consulter [Définir les flux de données provenant de l'équipement (mesures)](measurements.md).
+ **Transformations** : valeurs de série chronologique transformées d'un actif, telles que les valeurs de température horodatées en degrés Fahrenheit. Une transformation est définie par une expression et les variables à consommer avec cette expression. Pour de plus amples informations, veuillez consulter [Transformer les données (transformations)](transforms.md).
+ **Métriques** : données d'un actif agrégées sur un intervalle de temps spécifié, tel que la température moyenne horaire. Une métrique est définie par un intervalle de temps, une expression et les variables à consommer avec cette expression. Les expressions métriques peuvent saisir les propriétés métriques des actifs associés, afin que vous puissiez calculer des mesures représentant votre activité ou un sous-ensemble de celle-ci. Pour de plus amples informations, veuillez consulter [Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md).

Pour de plus amples informations, veuillez consulter [Créez des modèles d'actifs dans AWS IoT SiteWise](create-asset-models.md).

Pour obtenir un exemple d'utilisation des mesures, des transformations et des métriques pour calculer l'efficacité globale de l'équipement (OEE), veuillez consulter [Calculez l'OEE en AWS IoT SiteWise](calculate-oee.md).

**Topics**
+ [Définir des données statiques (attributs)](attributes.md)
+ [Définir les flux de données provenant de l'équipement (mesures)](measurements.md)
+ [Transformer les données (transformations)](transforms.md)
+ [Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md)
+ [Utiliser des expressions de formule](formula-expressions.md)

# Définir des données statiques (attributs)
<a name="attributes"></a>

Les *attributs des actifs* représentent des informations généralement statiques, telles que le fabricant de l'appareil ou l'emplacement géographique. Chaque ressource que vous créez à partir d'un modèle de ressource contient les attributs de ce modèle.

**Topics**
+ [Définir les attributs (console)](#define-attributes-console)
+ [Définir les attributs (AWS CLI)](#define-attributes-cli)

## Définir les attributs (console)
<a name="define-attributes-console"></a>

Lorsque vous définissez un attribut pour un modèle de ressource dans la AWS IoT SiteWise console, vous spécifiez les paramètres suivants :
+ <a name="asset-property-name-console"></a>**Nom : nom** de la propriété.
+ **Valeur par défaut** — (Facultatif) La valeur par défaut de cet attribut. Les actifs créés à partir du modèle ont cette valeur pour l'attribut. Pour de plus amples informations sur la façon de remplacer la valeur par défaut dans une ressource créée à partir d'un modèle, veuillez consulter [Mettre à jour les valeurs des attributs](update-attribute-values.md).
+ <a name="asset-property-data-type-console"></a>**Type de données : type** de données de la propriété, qui est l'un des suivants :
  + **String** — Chaîne de 1024 octets maximum.
  + **Entier — Un entier** signé de 32 bits dont la plage est comprise entre [-2 147 483 648, 2 147 483 647].
  + **Double** : nombre à virgule flottante avec une plage [-10^100, 10^100] et une double précision IEEE 754.
  + **Boolean — `true` ou**. `false`
+ **ID externe** — (Facultatif) Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actif (console)](create-asset-models.md#create-asset-model-console).

## Définir les attributs (AWS CLI)
<a name="define-attributes-cli"></a>

Lorsque vous définissez un attribut pour un modèle d'actif avec l' AWS IoT SiteWise API, vous spécifiez les paramètres suivants :
+ <a name="asset-property-name-cli"></a>`name`— Le nom de la propriété.
+ `defaultValue`— (Facultatif) La valeur par défaut de cet attribut. Les actifs créés à partir du modèle ont cette valeur pour l'attribut. Pour de plus amples informations sur la façon de remplacer la valeur par défaut dans une ressource créée à partir d'un modèle, veuillez consulter [Mettre à jour les valeurs des attributs](update-attribute-values.md).
+ <a name="asset-property-data-type-cli"></a>`dataType`— Le type de données de la propriété, qui est l'un des suivants :
  + `STRING`— Chaîne de 1024 octets maximum.
  + `INTEGER`— Un entier signé de 32 bits dont la plage est comprise entre [-2 147 483 648, 2 147 483 647].
  + `DOUBLE`— Un nombre à virgule flottante avec une plage [-10^100, 10^100] et une double précision IEEE 754.
  + `BOOLEAN`— `true` ou`false`.
+ `externalId`— (Facultatif) Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

**Example Exemple de définition d'attribut**  
L'exemple suivant illustre un attribut qui représente le numéro de modèle d'une ressource avec une valeur par défaut. Cet objet est un exemple d'objet [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)contenant un [attribut](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Attribute.html). Vous pouvez spécifier cet objet dans le cadre de la charge utile de la demande [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) pour créer une propriété d'attribut. Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actifs (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
...
"assetModelProperties": [
{
  "name": "Model number",
  "dataType": "STRING",
  "type": {
    "attribute": {
      "defaultValue": "BLT123"
    }
  }
}
],
...
}
```

# Définir les flux de données provenant de l'équipement (mesures)
<a name="measurements"></a>

Une *mesure* représente le flux de données brutes du capteur d'un appareil, tel que les valeurs de température horodatées ou les valeurs de rotations par minute (RPM) horodatées.

**Topics**
+ [Définir les mesures (console)](#define-measurements-console)
+ [Définir les mesures (AWS CLI)](#define-measurements-cli)

## Définir les mesures (console)
<a name="define-measurements-console"></a>

Lorsque vous définissez une mesure pour un modèle d'actif dans la AWS IoT SiteWise console, vous spécifiez les paramètres suivants :
+ <a name="asset-property-name-console"></a>**Nom : nom** de la propriété.
+ <a name="asset-property-unit-console"></a>**Unité** — (Facultatif) L'unité scientifique de la propriété, telle que mm ou Celsius.
+ <a name="asset-property-data-type-console"></a>**Type de données : type** de données de la propriété, qui est l'un des suivants :
  + **String** — Chaîne de 1024 octets maximum.
  + **Entier — Un entier** signé de 32 bits dont la plage est comprise entre [-2 147 483 648, 2 147 483 647].
  + **Double** : nombre à virgule flottante avec une plage [-10^100, 10^100] et une double précision IEEE 754.
  + **Boolean — `true` ou**. `false`
+ **ID externe** — (Facultatif) Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actif (console)](create-asset-models.md#create-asset-model-console).

## Définir les mesures (AWS CLI)
<a name="define-measurements-cli"></a>

Lorsque vous définissez une mesure pour un modèle d'actif à l'aide de l' AWS IoT SiteWise API, vous spécifiez les paramètres suivants :
+ <a name="asset-property-name-cli"></a>`name`— Le nom de la propriété.
+ <a name="asset-property-data-type-cli"></a>`dataType`— Le type de données de la propriété, qui est l'un des suivants :
  + `STRING`— Chaîne de 1024 octets maximum.
  + `INTEGER`— Un entier signé de 32 bits dont la plage est comprise entre [-2 147 483 648, 2 147 483 647].
  + `DOUBLE`— Un nombre à virgule flottante avec une plage [-10^100, 10^100] et une double précision IEEE 754.
  + `BOOLEAN`— `true` ou`false`.
+ <a name="asset-property-unit-cli"></a>`unit`— (Facultatif) L'unité scientifique de la propriété, telle que mm ou Celsius.
+ `externalId`— (Facultatif) Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

**Example Exemple de définition de mesure**  
L'exemple suivant illustre une mesure qui représente les lectures du capteur de température d'une ressource. Cet objet est un exemple d'objet [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)contenant une [mesure](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html). Vous pouvez spécifier cet objet dans le cadre de la charge utile de la demande [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) pour créer une propriété de mesure. Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actifs (AWS CLI)](create-asset-models.md#create-asset-model-cli).  
La structure [de mesure](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html) est une structure vide lorsque vous définissez un modèle d'actif, car vous configurez ultérieurement chaque actif pour utiliser des flux de données d'appareils uniques. Pour plus d'informations sur la façon de connecter la propriété de mesure d'un actif au flux de données du capteur d'un appareil, consultez[Gérez les flux de données pour AWS IoT SiteWise](manage-data-streams.md).  

```
{
      ...
      "assetModelProperties": [
      {
          "name": "Temperature C",
          "dataType": "DOUBLE",
          "type": {
              "measurement": {}
          },
          "unit": "Celsius"
      }
  ],
      ...
}
```

# Transformer les données (transformations)
<a name="transforms"></a>

Les *transformations* sont des expressions mathématiques qui mappent les points de données des propriétés des actifs d'un formulaire à l'autre. Une expression de transformation comprend des variables de propriété d'actif, des littéraux, des opérateurs et des fonctions. Les points de données transformés entretiennent une one-to-one relation avec les points de données d'entrée. AWS IoT SiteWise calcule un nouveau point de données transformé chaque fois que l'une des propriétés d'entrée reçoit un nouveau point de données.

**Note**  
Pour les mises à jour de propriétés avec le même horodatage, les valeurs de sortie peuvent être remplacées par des mises à jour provenant d'autres propriétés entrantes.

Par exemple, si votre ressource a un flux de mesure de température nommé `Temperature_C` avec des unités en Celsius, vous pouvez convertir chaque point de données en Fahrenheit avec la formule `Temperature_F = 9/5 * Temperature_C + 32`. Chaque fois qu'un point de données est AWS IoT SiteWise reçu dans le flux de `Temperature_C` mesure, la `Temperature_F` valeur correspondante est calculée en quelques secondes et disponible en tant que `Temperature_F` propriété.

Si votre transformation contient plusieurs variables, le point de données qui arrive le plus tôt lance immédiatement le calcul. Prenons l'exemple d'un fabricant de pièces utilisant une transformation pour contrôler la qualité de ses produits. En utilisant une norme différente basée sur le type de pièce, le fabricant utilise les mesures suivantes pour représenter le processus :
+ `Part_Number`- Chaîne identifiant le type de pièce.
+ `Good_Count`- Un entier qui augmente d'un si la pièce répond à la norme.
+ `Bad_Count`- Un entier qui augmente d'un si la pièce ne répond pas à la norme.

Le fabricant crée également une transformation`Quality_Monitor`, qui équivaut à` if(eq(Part_Number, "BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")`.

Cette transformation surveille le pourcentage de pièces défectueuses produites pour un type de pièce spécifique. Si le numéro de pièce est BLT123 et que le pourcentage de pièces défectueuses dépasse 10 % (0,1), la transformation est renvoyée`"Caution"`. Dans le cas contraire, la transformation est renvoyée`"Normal"`.

**Note**  
Si `Part_Number` elle reçoit un nouveau point de données avant les autres mesures, la `Quality_Monitor` transformation utilise la nouvelle `Part_Number` valeur et les dernières `Bad_Count` valeurs `Good_Count` et. Pour éviter les erreurs, effectuez une réinitialisation `Good_Count` et `Bad_Count` avant le prochain cycle de fabrication.
Utilisez [des métriques](metrics.md) si vous souhaitez évaluer les expressions uniquement lorsque toutes les variables ont reçu de nouveaux points de données.

**Topics**
+ [Définir les transformations (console)](#define-transforms-console)
+ [Définir les transformations (AWS CLI)](#define-transform-cli)

## Définir les transformations (console)
<a name="define-transforms-console"></a>

Lorsque vous définissez une transformation pour un modèle d'actif dans la AWS IoT SiteWise console, vous spécifiez les paramètres suivants :
+ <a name="asset-property-name-console"></a>**Nom : nom** de la propriété.
+ <a name="asset-property-unit-console"></a>**Unité** — (Facultatif) L'unité scientifique de la propriété, telle que mm ou Celsius.
+ **Type de données** : type de données de la transformation, qui peut être **double** ou **chaîne**.
+ **ID externe** — (Facultatif) Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.
+ **Formule** — L'expression de transformation. Les expressions de transformation ne peuvent pas utiliser de fonctions d'agrégation ou de fonctions temporelles. Pour ouvrir la fonction de saisie automatique, commencez à taper ou appuyez sur la flèche vers le bas. Pour de plus amples informations, veuillez consulter [Utiliser des expressions de formule](formula-expressions.md).
**Important**  <a name="transform-input-rules"></a>
Les transformations peuvent saisir des propriétés de type entier, double, booléen ou chaîne. Les booléens sont convertis en `0` (faux) et `1` (vrai).  
Les transformations doivent saisir une ou plusieurs propriétés qui ne sont pas des attributs et un certain nombre de propriétés d'attribut. AWS IoT SiteWise calcule un nouveau point de données transformé chaque fois que la propriété d'entrée qui n'est pas un attribut reçoit un nouveau point de données. Les nouvelles valeurs d'attribut ne lancent pas les mises à jour de transformation. Le même taux de demande pour les opérations de l'API de données relatives aux propriétés des actifs s'applique aux résultats des calculs de transformation.  
<a name="formula-output-rules"></a>Les expressions de formule ne peuvent générer que des valeurs doubles ou des valeurs de chaîne. Les expressions imbriquées peuvent générer d'autres types de données, tels que des chaînes, mais la formule dans son ensemble doit être évaluée à un nombre ou à une chaîne. Vous pouvez utiliser la [fonction jp](expression-string-functions.md#jp-definition) pour convertir une chaîne en nombre. La valeur booléenne doit être 1 (vrai) ou 0 (faux). Pour de plus amples informations, veuillez consulter [Valeurs non définies, infinies et en dépassement](expression-tutorials.md#undefined-values).

Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actif (console)](create-asset-models.md#create-asset-model-console).

## Définir les transformations (AWS CLI)
<a name="define-transform-cli"></a>

Lorsque vous définissez une transformation pour un modèle d'actif à l'aide de l' AWS IoT SiteWise API, vous spécifiez les paramètres suivants :
+ <a name="asset-property-name-cli"></a>`name`— Le nom de la propriété.
+ <a name="asset-property-unit-cli"></a>`unit`— (Facultatif) L'unité scientifique de la propriété, telle que mm ou Celsius.
+ `dataType`— Le type de données de la transformation, qui doit être `DOUBLE` ou`STRING`.
+ `externalId`— (Facultatif) Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.
+ `expression`— L'expression de transformation. Les expressions de transformation ne peuvent pas utiliser de fonctions d'agrégation ou de fonctions temporelles. Pour de plus amples informations, veuillez consulter [Utiliser des expressions de formule](formula-expressions.md).
+ `variables`— La liste des variables qui définit les autres propriétés de votre actif à utiliser dans l'expression. Chaque structure de variable contient un nom simple à utiliser dans l'expression et une structure `value` qui identifie la propriété à lier à cette variable. La structure `value` contient les informations suivantes :
  + `propertyId`— L'ID de la propriété à partir de laquelle les valeurs doivent être saisies. Vous pouvez utiliser le nom de la propriété au lieu de son ID.
**Important**  <a name="transform-input-rules"></a>
Les transformations peuvent saisir des propriétés de type entier, double, booléen ou chaîne. Les booléens sont convertis en `0` (faux) et `1` (vrai).  
Les transformations doivent saisir une ou plusieurs propriétés qui ne sont pas des attributs et un certain nombre de propriétés d'attribut. AWS IoT SiteWise calcule un nouveau point de données transformé chaque fois que la propriété d'entrée qui n'est pas un attribut reçoit un nouveau point de données. Les nouvelles valeurs d'attribut ne lancent pas les mises à jour de transformation. Le même taux de demande pour les opérations de l'API de données relatives aux propriétés des actifs s'applique aux résultats des calculs de transformation.  
<a name="formula-output-rules"></a>Les expressions de formule ne peuvent générer que des valeurs doubles ou des valeurs de chaîne. Les expressions imbriquées peuvent générer d'autres types de données, tels que des chaînes, mais la formule dans son ensemble doit être évaluée à un nombre ou à une chaîne. Vous pouvez utiliser la [fonction jp](expression-string-functions.md#jp-definition) pour convertir une chaîne en nombre. La valeur booléenne doit être 1 (vrai) ou 0 (faux). Pour de plus amples informations, veuillez consulter [Valeurs non définies, infinies et en dépassement](expression-tutorials.md#undefined-values).

**Example définition de la transformation**  
L'exemple suivant illustre une propriété de transformation qui convertit les données de mesure de température d'une ressource de Celsius en Fahrenheit. Cet objet est un exemple d'objet [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)contenant une [transformation](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Transform.html). Vous pouvez spécifier cet objet dans le cadre de la charge utile de la demande [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) pour créer une propriété de transformation. Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actifs (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
...
"assetModelProperties": [
...
{
  "name": "Temperature F",
  "dataType": "DOUBLE",
  "type": {
    "transform": {
      "expression": "9/5 * temp_c + 32",
      "variables": [
        {
          "name": "temp_c",
          "value": {
            "propertyId": "Temperature C"
          }
        }
      ]
    }
  },
  "unit": "Fahrenheit"
}
],
...
}
```

**Example définition de transformation contenant trois variables**  
L'exemple suivant illustre une propriété de transformation qui renvoie un message d'avertissement (`"Caution"`) si plus de 10 % des BLT123 pièces ne répondent pas à la norme. Dans le cas contraire, il renvoie un message d'information (`"Normal"`).  

```
{
...
"assetModelProperties": [
...
{
"name": "Quality_Monitor",
"dataType": "STRING",
"type": {
    "transform": {
        "expression": "if(eq(Part_Number,"BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")",
        "variables": [
            {
                "name": "Part_Number",
                "value": {
                    "propertyId": "Part Number"
                }
            },
            {
                "name": "Good_Count",
                "value": {
                    "propertyId": "Good Count"
                }
            },
            {
                "name": "Bad_Count",
                "value": {
                    "propertyId": "Bad Count"
                }
            }
        ]
    }
}
}
...
}
```

# Données agrégées provenant de propriétés et d'autres actifs (métriques)
<a name="metrics"></a>

Les métriques sont des expressions mathématiques qui utilisent des fonctions d'agrégation pour traiter tous les points de données en entrée et en sortie un seul point de données par intervalle de temps spécifié. Par exemple, une métrique peut calculer la température horaire moyenne à partir d'un flux de données de température.

Les métriques peuvent entrer des données à partir des métriques des ressources associées, de sorte que vous pouvez calculer des statistiques qui fournissent un aperçu de votre opération ou d'un sous-ensemble de votre opération. Par exemple, une métrique peut calculer la température horaire moyenne pour toutes les éoliennes d'un parc éolien. Pour de plus amples informations sur la définition des associations entre les ressources, veuillez consulter [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md).

Les métriques peuvent également saisir des données provenant d'autres propriétés sans agréger les données sur chaque intervalle de temps. Si vous spécifiez un [attribut](attributes.md) dans une formule, AWS IoT SiteWise utilise la [dernière](expression-temporal-functions.md#latest-definition) valeur de cet attribut lors du calcul de la formule. Si vous spécifiez une métrique dans une formule, AWS IoT SiteWise utilise la [dernière](expression-temporal-functions.md#last-definition) valeur de l'intervalle de temps pendant lequel la formule est calculée. Cela signifie que vous pouvez définir des indicateurs tels que `OEE = Availability * Quality * Performance` `Availability``Quality`, où et quels `Performance` sont tous les autres indicateurs du même modèle d'actif.

AWS IoT SiteWise calcule également automatiquement un ensemble de mesures d'agrégation de base pour toutes les propriétés des actifs. Pour réduire les coûts de calcul, vous pouvez utiliser ces agrégats au lieu de définir des métriques personnalisées pour les calculs de base. Pour de plus amples informations, veuillez consulter [Interrogez les agrégats de propriétés des actifs dans AWS IoT SiteWise](aggregates.md).

**Topics**
+ [Définir des métriques (console)](#define-metrics-console)
+ [Définir les métriques (AWS CLI)](#define-metrics-cli)

## Définir des métriques (console)
<a name="define-metrics-console"></a>

Lorsque vous définissez une métrique pour un modèle d'actif dans la AWS IoT SiteWise console, vous spécifiez les paramètres suivants :
+ <a name="asset-property-name-console"></a>**Nom : nom** de la propriété.
+ **Type de données** : type de données de la transformation, qui peut être **double** ou **chaîne**.
+ **ID externe** — (Facultatif) Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.
+ **Formule** — L'expression métrique. Les expressions métriques peuvent utiliser des [fonctions d'agrégation](expression-aggregation-functions.md) pour saisir des données à partir d'une propriété pour tous les actifs associés dans une hiérarchie. Commencez à taper ou appuyez sur la flèche vers le bas pour ouvrir la fonction de saisie automatique. Pour de plus amples informations, veuillez consulter [Utiliser des expressions de formule](formula-expressions.md).
**Important**  <a name="metric-input-rules"></a>
Les métriques ne peuvent être que des propriétés de type entier, double, booléen ou chaîne. Les booléens sont convertis en `0` (faux) et `1` (vrai).  
Si vous définissez des variables d'entrée de métrique dans l'expression d'une métrique, ces entrées doivent avoir le même intervalle de temps que la métrique de sortie.  
<a name="formula-output-rules"></a>Les expressions de formule ne peuvent générer que des valeurs doubles ou des valeurs de chaîne. Les expressions imbriquées peuvent générer d'autres types de données, tels que des chaînes, mais la formule dans son ensemble doit être évaluée à un nombre ou à une chaîne. Vous pouvez utiliser la [fonction jp](expression-string-functions.md#jp-definition) pour convertir une chaîne en nombre. La valeur booléenne doit être 1 (vrai) ou 0 (faux). Pour de plus amples informations, veuillez consulter [Valeurs non définies, infinies et en dépassement](expression-tutorials.md#undefined-values).
+ **Intervalle de temps** : intervalle de temps métrique. <a name="metric-window-info"></a>AWS IoT SiteWise prend en charge les intervalles temporels suivants, où chaque intervalle commence à la fin du précédent :
  + **1 minute à** <a name="metric-window-1m"></a>1 minute, calculée à la fin de chaque minute (00h00, 00h01, 00h02, etc.).
  + **5 minutes** — <a name="metric-window-5m"></a>5 minutes, calculées à la fin de toutes les cinq minutes à partir de l'heure (00h00, 00h05, 00h10, etc.).
  + **15 minutes** — <a name="metric-window-15m"></a>15 minutes, calculées à la fin de toutes les quinze minutes à partir de l'heure (00h00, 00h15, 00h30, etc.).
  + **1 heure** — <a name="metric-window-1h"></a>1 heure (60 minutes), calculée à la fin de chaque heure en UTC (00:00 AM, 01:00:00 AM, 02:00:00 AM, etc.).
  + **1 jour** — <a name="metric-window-1d"></a>1 jour (24 heures), calculé à la fin de chaque journée en UTC (00h00 le lundi, 00h00 le mardi, etc.).
  + **1 semaine** — <a name="metric-window-1w"></a>1 semaine (7 jours), calculée à la fin de chaque dimanche en UTC (tous les lundis à 00h00).
  + **Intervalle personnalisé** : vous pouvez saisir n'importe quel intervalle de temps compris entre une minute et une semaine.
+ **Date de décalage** — (Facultatif) Date de référence à partir de laquelle agréger les données.
+ Temps de **décalage** — (Facultatif) Heure de référence à partir de laquelle agréger les données. L'heure de décalage doit être comprise entre 00:00:00 et 23:59:59.
+ **Fuseau horaire du décalage** — (Facultatif) Fuseau horaire du décalage. S'il n'est pas spécifié, le fuseau horaire décalé par défaut est le temps universel coordonné (UTC). Consultez les fuseaux horaires pris en charge suivants.

### Fuseaux horaires pris en charge
<a name="supported-time-zones"></a>
+ (UTC\$1 00:00) Heure universelle coordonnée
+ (UTC\$1 01:00) Heure centrale européenne
+ (UTC\$1 02:00) Europe de l'Est
+ (UTC03\$1:00) Heure de l'Afrique de l'Est
+ (UTC\$1 04:00) Heure du Proche-Orient
+ (UTC\$1 05:00) Heure de Lahore au Pakistan
+ (UTC\$1 05:30) Heure normale de l'Inde
+ (UTC\$1 06:00) Heure normale du Bangladesh
+ (UTC\$1 07:00) Heure normale du Vietnam
+ 
+ (UTC\$1 09:00) Heure normale du Japon
+ (UTC\$1 09:30) Heure centrale de l'Australie
+ (UTC\$1 10:00) Heure de l'Est de l'Australie
+ (UTC\$1 11:00) Heure normale de Salomon
+ (UTC\$1 12:00) Heure normale de Nouvelle-Zélande
+ (UTC- 11:00) Heure des îles Midway
+ (UTC- 10:00) Heure normale d'Hawaï
+ (UTC- 09:00) Heure normale de l'Alaska
+ (UTC- 08:00) Heure normale du Pacifique
+ (UTC- 07:00) Heure normale de Phoenix
+ (UTC- 06:00) Heure normale du Centre
+ (UTC- 05:00) Heure normale de l'Est
+ (UTC- 04:00) Heure de Porto Rico et des Îles Vierges américaines
+ (UTC- 03:00) Heure normale d'Argentine
+ (UTC- 02:00) Heure de Géorgie du Sud
+ (UTC- 01:00) Heure de l'Afrique centrale

**Example intervalle de temps personnalisé avec décalage (console)**  
L'exemple suivant vous montre comment définir un intervalle de 12 heures avec un décalage le 20 février 2021 à 18 h 30 30 (PST).  

**Pour définir un intervalle personnalisé avec un décalage**

1. Pour **Intervalle de temps**, choisissez **Intervalle personnalisé**.

1. Pour **Intervalle de temps**, effectuez l'une des opérations suivantes :
   + Entrez**12**, puis choisissez les **heures**.
   + Entrez**720**, puis choisissez **minutes**.
   + Entrez**43200**, puis choisissez **secondes**.
**Important**  
L'**intervalle de temps** doit être un entier, quelle que soit l'unité.

1. Pour **Date de décalage**, choisissez **2021/02/20**.

1. Pour Heure de **décalage**, entrez**18:30:30**.

1. Pour le **fuseau horaire décalé**, choisissez **(UTC- 08:00) Heure normale du Pacifique**.
Si vous créez la métrique le 1er juillet 2021, avant ou à 18 h 30 30 (PST), vous obtenez le premier résultat d'agrégation le 1er juillet 2021 à 18 h 30 30 (PST). Le deuxième résultat d'agrégation est le 2 juillet 2021 à 06h30 (PST), et ainsi de suite.

## Définir les métriques (AWS CLI)
<a name="define-metrics-cli"></a>

Lorsque vous définissez une métrique pour un modèle d'actif à l'aide de l' AWS IoT SiteWise API, vous spécifiez les paramètres suivants :
+ <a name="asset-property-name-cli"></a>`name`— Le nom de la propriété.
+ `dataType`— Le type de données de la métrique, qui peut être `DOUBLE` ou`STRING`.
+ `externalId`— (Facultatif) Il s'agit d'un identifiant défini par l'utilisateur. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.
+ `expression`— L'expression métrique. Les expressions métriques peuvent utiliser des [fonctions d'agrégation](expression-aggregation-functions.md) pour saisir des données à partir d'une propriété pour tous les actifs associés dans une hiérarchie. Pour de plus amples informations, veuillez consulter [Utiliser des expressions de formule](formula-expressions.md).
+ `window`— L'intervalle de temps et le décalage correspondant à la fenêtre de fluctuation de la métrique, où chaque intervalle commence à la fin du précédent :
  + `interval`— L'intervalle de temps pendant lequel la fenêtre clignote. L'intervalle de temps doit être compris entre une minute et une semaine.
  + `offsets`— Le décalage dû à la fenêtre qui bascule. 

  Pour plus d’informations, consultez [TumblingWindow](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TumblingWindow.html) dans la *Référence d’API AWS IoT SiteWise *.  
**Example intervalle de temps personnalisé avec un décalage (AWS CLI)**  

  L'exemple suivant vous montre comment définir un intervalle de 12 heures avec un décalage le 20 février 2021 à 18 h 30 30 (PST).

  ```
  {
      "window": {
          "tumbling": {
              "interval": "12h",
              "offset": " 2021-07-23T18:30:30-08"
          }
      }
  }
  ```

  Si vous créez la métrique le 1er juillet 2021, avant ou à 18 h 30 30 (PST), vous obtenez le premier résultat d'agrégation le 1er juillet 2021 à 18 h 30 30 (PST). Le deuxième résultat d'agrégation est le 2 juillet 2021 à 06h30 (PST), et ainsi de suite.
+ `variables`— La liste des variables qui définit les autres propriétés de votre actif ou de vos actifs enfants à utiliser dans l'expression. Chaque structure de variable contient un nom simple à utiliser dans l'expression et une structure `value` qui identifie la propriété à lier à cette variable. La structure `value` contient les informations suivantes :
  + `propertyId`— L'ID de la propriété à partir de laquelle les valeurs doivent être extraites. Vous pouvez utiliser le nom de la propriété au lieu de son ID si la propriété est définie dans le modèle actuel (plutôt que définie dans un modèle à partir d'une hiérarchie).
  + `hierarchyId`— (Facultatif) L'ID de la hiérarchie à partir de laquelle interroger les actifs enfants de la propriété. Vous pouvez utiliser le nom de la définition de hiérarchie au lieu de son ID. Si vous omettez cette valeur, AWS IoT SiteWise recherche la propriété dans le modèle actuel.
**Important**  <a name="metric-input-rules"></a>
Les métriques ne peuvent être que des propriétés de type entier, double, booléen ou chaîne. Les booléens sont convertis en `0` (faux) et `1` (vrai).  
Si vous définissez des variables d'entrée de métrique dans l'expression d'une métrique, ces entrées doivent avoir le même intervalle de temps que la métrique de sortie.  
<a name="formula-output-rules"></a>Les expressions de formule ne peuvent générer que des valeurs doubles ou des valeurs de chaîne. Les expressions imbriquées peuvent générer d'autres types de données, tels que des chaînes, mais la formule dans son ensemble doit être évaluée à un nombre ou à une chaîne. Vous pouvez utiliser la [fonction jp](expression-string-functions.md#jp-definition) pour convertir une chaîne en nombre. La valeur booléenne doit être 1 (vrai) ou 0 (faux). Pour de plus amples informations, veuillez consulter [Valeurs non définies, infinies et en dépassement](expression-tutorials.md#undefined-values).
+ <a name="asset-property-unit-cli"></a>`unit`— (Facultatif) L'unité scientifique de la propriété, telle que mm ou Celsius.

**Example Exemple de définition de métrique**  
L'exemple suivant illustre une propriété de métrique qui agrège les données de mesure de la température d'une ressource pour calculer la température horaire maximale en Fahrenheit. Cet objet est un exemple d'objet [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)contenant une [métrique](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html). Vous pouvez spécifier cet objet dans le cadre de la charge utile de la demande [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) pour créer une propriété de métrique. Pour de plus amples informations, veuillez consulter [Création d'un modèle d'actifs (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
      ...
      "assetModelProperties": [
      ...
      {
        "name": "Max temperature",
        "dataType": "DOUBLE",
        "type": {
          "metric": {
            "expression": "max(temp_f)",
            "variables": [
              {
                "name": "temp_f",
                "value": {
                  "propertyId": "Temperature F"
                }
              }
            ],
            "window": {
              "tumbling": {
                "interval": "1h"
              }
            }
          }
        },
        "unit": "Fahrenheit"
      }
    ],
    ...
}
```

**Example Exemple de définition de métrique qui saisit les données des actifs associés**  
L'exemple suivant illustre une propriété métrique qui agrège les données de puissance moyenne de plusieurs éoliennes pour calculer la puissance moyenne totale d'un parc éolien. Cet objet est un exemple d'objet [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)contenant une [métrique](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html). Vous pouvez spécifier cet objet dans le cadre de la charge utile de la demande [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) pour créer une propriété de métrique.   

```
{
      ...
      "assetModelProperties": [
      ...
      {
          "name": "Total Average Power",
          "dataType": "DOUBLE",
          "type": {
            "metric": {
              "expression": "avg(power)",
              "variables": [
                {
                  "name": "power",
                  "value": {
                    "propertyId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
                    "hierarchyId": "Turbine Asset Model"
                  }
                }
              ],
              "window": {
                "tumbling": {
                  "interval": "5m"
                }
              }
            }
        },
        "unit": "kWh"
      }
    ],
    ...
}
```

# Utiliser des expressions de formule
<a name="formula-expressions"></a>

Avec les expressions de formule, vous pouvez définir les fonctions mathématiques permettant de transformer et d'agréger vos données industrielles brutes afin d'obtenir des informations sur votre opération. Les expressions de formule combinent des littéraux, des opérateurs, des fonctions et des variables pour traiter les données. Pour plus d'informations sur la façon de définir les propriétés des actifs qui utilisent des expressions de formule, reportez-vous [Transformer les données (transformations)](transforms.md) aux sections et[Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md). Les transformations et les métriques sont des propriétés de formule.

**Topics**
+ [Utiliser des variables dans les expressions de formule](expression-variables.md)
+ [Utiliser des littéraux dans les expressions de formule](expression-literals.md)
+ [Utiliser des opérateurs dans les expressions de formule](expression-operators.md)
+ [Utiliser des constantes dans les expressions de formule](expression-constants.md)
+ [Utiliser des fonctions dans des expressions de formule](expression-functions.md)
+ [Tutoriels d'expression de formules](expression-tutorials.md)

# Utiliser des variables dans les expressions de formule
<a name="expression-variables"></a>

Les variables représentent les propriétés des AWS IoT SiteWise actifs dans les expressions de formule. Utilisez des variables pour saisir des valeurs provenant d'autres propriétés d'actifs dans vos expressions, afin de pouvoir traiter les données issues de propriétés constantes ([attributs](attributes.md)), de flux de données brutes ([mesures](measurements.md)) et d'autres propriétés de formule.

Les variables peuvent représenter les propriétés des actifs à partir du même modèle d'actif ou à partir de modèles d'actifs enfants associés. Seules les formules métriques peuvent saisir des variables à partir de modèles d'actifs enfants.

Vous identifiez les variables sous différents noms dans la console et dans l'API.
+ **AWS IoT SiteWise console** — Utilisez les noms des propriétés des actifs comme variables dans vos expressions.
+ **AWS IoT SiteWise API (AWS CLI, AWS SDKs)** — Définissez les variables avec la [ExpressionVariable](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExpressionVariable.html)structure, qui nécessite un nom de variable et une référence à une propriété d'actif. Le nom de la variable peut contenir des lettres minuscules, des chiffres et des traits de soulignement. Utilisez ensuite des noms de variables pour référencer les propriétés des actifs dans vos expressions.

Les noms de variables distinguent les majuscules et minuscules.

Pour plus d'informations, consultez les [sections Définition des transformations](transforms.md) et [Définition des métriques](metrics.md).

## Utiliser des variables pour référencer les propriétés
<a name="variable-values"></a>

La *valeur* d'une variable définit la propriété à laquelle elle fait référence. AWS IoT SiteWise propose différentes manières de le faire.
+ **Par identifiant de propriété :** vous pouvez spécifier l'identifiant unique (UUID) de la propriété pour l'identifier.
+ **Par nom :** si la propriété utilise le même modèle d'actif, vous pouvez spécifier son nom dans le champ ID de propriété.
+ **Par chemin :** la valeur d'une variable peut faire référence à une propriété par son *chemin.* Pour de plus amples informations, veuillez consulter [Utiliser des chemins pour référencer les propriétés personnalisées du modèle composite](custom-composite-models.md#property-paths).

**Note**  
 Les variables ne sont pas prises en charge par AWS IoT SiteWise la console. Ils sont utilisés par AWS IoT SiteWise l'API, notamment le AWS Command Line Interface AWS CLI) et AWS SDKs. 

 Une variable que vous recevez dans une réponse AWS IoT SiteWise inclut des informations complètes sur la valeur, notamment l'ID et le chemin.

 Toutefois, lorsque vous transmettez une variable à AWS IoT SiteWise (par exemple, lors d'un appel « créer » ou « mettre à jour »), il vous suffit de spécifier l'une de ces variables. Par exemple, si vous spécifiez le chemin, vous n'avez pas besoin de fournir l'ID. 

# Utiliser des littéraux dans les expressions de formule
<a name="expression-literals"></a>

AWS IoT SiteWise prend en charge l'utilisation de littéraux dans les expressions et les formules. Les littéraux sont des valeurs fixes qui représentent un type de données spécifique. Dans AWS IoT SiteWise, vous pouvez définir des nombres et des littéraux de chaîne dans les expressions de formule. Les littéraux peuvent être utilisés dans différents contextes, notamment les transformations de données, les conditions d'alarme et les calculs de visualisation.


+ <a name="number-literal-definition"></a>**Chiffres**

  Utilisez les nombres et la notation scientifique pour définir des nombres entiers et des doubles. Vous pouvez utiliser la [notation E](https://en.wikipedia.org/wiki/Scientific_notation#E_notation) pour exprimer des nombres en notation scientifique.

  Exemples : `1``2.0`,`.9`,`-23.1`,`7.89e3`, `3.4E-5`
+ <a name="string-literal-definition"></a>**Chaînes**

  Utilisez les caractères `'` (guillemets) et `"` (guillemets doubles) pour définir les chaînes. Le type de devis pour le début et la fin doit correspondre. Pour éviter un guillemet correspondant à celui que vous utilisez pour déclarer une chaîne, incluez ce guillemet deux fois. Il s'agit du seul caractère d'échappement dans AWS IoT SiteWise les chaînes.

  Exemples : `'active'`, `"inactive"`, `'{"temp": 52}'`, `"{""temp"": ""high""}"`

# Utiliser des opérateurs dans les expressions de formule
<a name="expression-operators"></a>

Vous pouvez utiliser les opérateurs courants suivants dans les expressions de formule.


| Opérateur | Description | 
| --- | --- | 
|  `+`  |  Si les deux opérandes sont des nombres, cet opérateur ajoute les opérandes gauche et droit. Si l'un des opérandes est une chaîne, cet opérateur concatène les opérandes gauche et droit sous forme de chaînes. Par exemple, l'expression est `1 + 2 + " is three"` évaluée à. `"3 is three"` La chaîne concaténée peut comporter jusqu'à 1024 caractères. Si la chaîne dépasse 1024 caractères, elle AWS IoT SiteWise ne produit aucun point de données pour ce calcul.  | 
|  `-`  |  Il soustrait l'opérande droit de l'opérande gauche. <a name="operator-numbers-only"></a>Vous ne pouvez utiliser cet opérateur qu'avec des opérandes numériques.  | 
|  `/`  |  Il divise l'opérande gauche par l'opérande droit. <a name="operator-numbers-only"></a>Vous ne pouvez utiliser cet opérateur qu'avec des opérandes numériques.  | 
|  `*`  |  Il multiplie les opérandes gauche et droit. <a name="operator-numbers-only"></a>Vous ne pouvez utiliser cet opérateur qu'avec des opérandes numériques.  | 
|  `^`  |  Il élève l'opérande gauche à la puissance de l'opérande droit (élévation de la puissance). <a name="operator-numbers-only"></a>Vous ne pouvez utiliser cet opérateur qu'avec des opérandes numériques.  | 
|  `%`  |  Il renvoie le reste résultant de la division de l'opérande gauche par l'opérande droit. Le résultat a le même signe que l'opérande gauche. Ce comportement est différent de celui de l'opération modulo. <a name="operator-numbers-only"></a>Vous ne pouvez utiliser cet opérateur qu'avec des opérandes numériques.  | 
|  `x < y`  |  Renvoie `1` si la valeur `x` est inférieure à`y`, sinon`0`.  | 
|  `x > y`  |  Renvoie `1` si la valeur `x` est supérieure à`y`, sinon`0`.  | 
|  `x <= y`  |  Renvoie `1` si la valeur `x` est inférieure ou égale à`y`, sinon`0`.  | 
|  `x >= y`  |  Renvoie `1` si la valeur `x` est supérieure ou égale à`y`, sinon`0`.  | 
|  `x == y`  |  Renvoie `1` si `x` c'est égal à`y`, sinon`0`.  | 
|  `x != y`  |  Renvoie `1` si `x` ce n'est pas égal à`y`, sinon`0`.  | 
|  `!x`  |  Renvoie `1` si la valeur `x` est évaluée à `0` (faux), sinon`0`. `x`est évalué à faux si :  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x and y`  |  Renvoie `0` si la valeur `x` est évaluée à `0` (faux). Sinon, renvoie le résultat évalué de`y`. `x`ou `y` est évalué à faux si :  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x or y`  |  Renvoie `1` si la valeur `x` est évaluée à `1` (vrai). Sinon, renvoie le résultat évalué de`y`. `x`ou `y` est évalué à faux si :  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `not x`  |  Renvoie `1` si la valeur `x` est évaluée à `0` (faux), sinon`0`. `x`est évalué à faux si :  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-operators.html)  | 
|   `[]` `s[index]`  |  Renvoie le caractère à un index `index` de la chaîne`s`. Ceci est équivalent à la syntaxe d'index en Python. 

**Example Exemples**  
+ `"Hello!"[1]` renvoie `e`.
+ `"Hello!"[-2]` renvoie `o`.  | 
|   `[]` `s[start:end:step]`  |  Renvoie une tranche de la chaîne`s`. Ceci est équivalent à la syntaxe des tranches en Python. Cet opérateur possède les arguments suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-operators.html) Vous pouvez omettre l'`step`argument pour utiliser sa valeur par défaut. Par exemple, `s[1:4:1]` équivaut à `s[1:4]`. Les arguments doivent être des entiers ou la constante [none](expression-constants.md#none-definition). Si vous le spécifiez`none`, AWS IoT SiteWise utilise la valeur par défaut pour cet argument. 

**Example Exemples**  
+ `"Hello!"[1:4]` renvoie `"ell"`.
+ `"Hello!"[:2]` renvoie `"He"`.
+ `"Hello!"[3:]` renvoie `"lo!"`.
+ `"Hello!"[:-4]` renvoie `"He"`.
+ `"Hello!"[::2]` renvoie `"Hlo"`.
+ `"Hello!"[::-1]` renvoie `"!olleH"`.  | 

# Utiliser des constantes dans les expressions de formule
<a name="expression-constants"></a>

Dans AWS IoT SiteWise, vous pouvez utiliser des constantes dans vos expressions et formules pour représenter des valeurs fixes ou des paramètres prédéfinis. Les constantes peuvent être utilisées dans différents contextes, tels que les transformations de données, les conditions d'alarme ou les calculs de visualisation. En utilisant des constantes, vous pouvez simplifier vos expressions et les rendre plus lisibles et faciles à gérer.

Vous pouvez utiliser les constantes mathématiques courantes suivantes dans vos expressions. Toutes les constantes ne distinguent pas les majuscules et minuscules.

**Note**  
Si vous définissez une variable portant le même nom qu'une constante, la variable remplace la constante.


| Constant | Description | 
| --- | --- | 
|  `pi`  |  Le nombre pi (`π`) : `3.141592653589793`  | 
|  `e`  |  Le chiffre e : `2.718281828459045`  | 
|  `true`  |  C'est l'équivalent du chiffre 1. Dans AWS IoT SiteWise, les booléens sont convertis en équivalents numériques.  | 
|  `false`  |  Équivalent au chiffre 0. Dans AWS IoT SiteWise, les booléens sont convertis en équivalents numériques.  | 
|   `none`  |  C'est équivalent à aucune valeur. Vous pouvez utiliser cette constante pour ne rien afficher à la suite d'une [expression conditionnelle](expression-conditional-functions.md).  | 

# Utiliser des fonctions dans des expressions de formule
<a name="expression-functions"></a>

Vous pouvez utiliser les fonctions suivantes pour agir sur les données de vos expressions de formule.

Les transformations et les métriques prennent en charge différentes fonctions. Le tableau suivant indique les types de fonctions compatibles avec chaque type de propriété de formule.

**Note**  
Vous pouvez inclure un maximum de 10 fonctions dans une expression de formule.


| Type de fonction | Transforme | Métriques | 
| --- | --- | --- | 
|  [Utiliser des fonctions courantes dans les expressions de formule](expression-common-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  | 
|  [Utiliser les fonctions de comparaison dans les expressions de formule](expression-comparison-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  | 
|  [Utiliser des fonctions conditionnelles dans les expressions de formule](expression-conditional-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  | 
|  [Utiliser des fonctions de chaîne dans les expressions de formule](expression-string-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  | 
|  [Utiliser les fonctions d'agrégation dans les expressions de formule](expression-aggregation-functions.md)  |  <a name="polaris-no-para"></a>![\[A red circle with the letter x for no.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-no.png) Non  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  | 
|  [Utiliser des fonctions temporelles dans les expressions de formules](expression-temporal-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  | 
|  [Utiliser les fonctions de date et d'heure dans les expressions de formule](expression-date-and-time-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/icon-yes.png) Oui  | 

## Syntaxe des fonctions
<a name="expression-function-syntax"></a>

Vous pouvez utiliser la syntaxe suivante pour créer des fonctions :

Syntaxe régulière  
Avec la syntaxe normale, le nom de la fonction est suivi de parenthèses contenant zéro argument ou plus.  
`function_name(argument1, argument2, argument3, ...)`. Par exemple, les fonctions dont la syntaxe est normale peuvent ressembler à `log(x)` et`contains(s, substring)`.

Syntaxe uniforme des appels de fonction (UFCS)  
L'UFCS vous permet d'appeler des fonctions en utilisant la syntaxe des appels de méthode dans la programmation orientée objet. Avec UFCS, le premier argument est suivi par point (`.`), puis le nom de la fonction et les autres arguments (le cas échéant) entre parenthèses.  
`argument1.function_name(argument2, argument3, ...)`. Par exemple, les fonctions associées à l'UFCS peuvent ressembler à `x.log()` et`s.contains(substring)`.  
Vous pouvez également utiliser l'UFCS pour enchaîner les fonctions suivantes. AWS IoT SiteWise utilise le résultat de l'évaluation de la fonction en cours comme premier argument de la fonction suivante.  
Par exemple, vous pouvez utiliser à la `message.jp('$.status').lower().contains('fail')` place de`contains(lower(jp(message, '$.status')),'fail')`.  
Pour plus d'informations, consultez le site Web du [langage de programmation D.](https://tour.dlang.org/tour/en/gems/uniform-function-call-syntax-ufcs)

**Note**  
Vous pouvez utiliser l'UFCS pour toutes les AWS IoT SiteWise fonctions.  
AWS IoT SiteWise les fonctions ne distinguent pas les majuscules et minuscules. Par exemple, vous pouvez utiliser `lower(s)` et de `Lower(s)` manière interchangeable.

# Utiliser des fonctions courantes dans les expressions de formule
<a name="expression-common-functions"></a>

Dans les [transformations](transforms.md) et [les métriques](metrics.md), vous pouvez utiliser les fonctions suivantes pour calculer les fonctions mathématiques courantes dans les transformations et les métriques.


| Fonction | Description | 
| --- | --- | 
|  `abs(x)`  |  Renvoie la valeur absolue de `x`.  | 
|  `acos(x)`  |  Renvoie l'arc cosinus de `x`.  | 
|  `asin(x)`  |  Renvoie l'arc sinus de `x`.  | 
|  `atan(x)`  |  Renvoie l'arc tangent de `x`.  | 
|  `cbrt(x)`  |  Renvoie la racine cubique de `x`.  | 
|  `ceil(x)`  |  Renvoie l'entier le plus proche supérieur à `x`.  | 
|  `cos(x)`  |  Renvoie le cosinus de `x`.  | 
|  `cosh(x)`  |  Renvoie le cosinus hyperbolique de `x`.  | 
|  `cot(x)`  |  Renvoie la cotangente de. `x`  | 
|  `exp(x)`  |  Renvoie `e` à la puissance de `x`.  | 
|  `expm1(x)`  |  Renvoie `exp(x) - 1`. Utilisez cette fonction pour calculer avec plus de précision `exp(x) - 1` les petites valeurs de`x`.  | 
|  `floor(x)`  |  Renvoie l'entier le plus proche inférieur à `x`.  | 
|  `log(x)`  |  Renvoie l'élément `loge` (base `e`) de `x`.  | 
|  `log10(x)`  |  Renvoie l'élément `log10` (base `10`) de `x`.  | 
|  `log1p(x)`  |  Renvoie `log(1 + x)`. Utilisez cette fonction pour calculer avec plus de précision `log(1 + x)` les petites valeurs de`x`.  | 
|  `log2(x)`  |  Renvoie l'élément `log2` (base `2`) de `x`.  | 
|  `pow(x, y)`  |  Renvoie `x` à la puissance de `y`. Cela équivaut à`x ^ y`.  | 
|  `signum(x)`  |  Renvoie le signe de `x` (`-1` pour les entrées négatives, `0` pour les entrées nulles et `+1` pour les entrées positives).  | 
|  `sin(x)`  |  Renvoie le sinus de `x`.  | 
|  `sinh(x)`  |  Renvoie le sinus hyperbolique de `x`.  | 
|  `sqrt(x)`  |  Renvoie la racine carrée de `x`.  | 
|  `tan(x)`  |  Renvoie la tangente de `x`.  | 
|  `tanh(x)`  |  Renvoie la tangente hyperbolique de `x`.  | 

# Utiliser les fonctions de comparaison dans les expressions de formule
<a name="expression-comparison-functions"></a>

Dans les [transformations](transforms.md) et [les métriques](metrics.md), vous pouvez utiliser les fonctions de comparaison suivantes pour comparer deux valeurs et obtenir un résultat `1` (vrai) ou `0` (faux). AWS IoT SiteWise compare les chaînes par ordre [lexicographique](https://en.wikipedia.org/wiki/Lexicographic_order).


| Fonction | Description | 
| --- | --- | 
|  `gt(x, y)`  |  Renvoie `1` si `x` est supérieur à `y`, sinon `0` (`x > y`). <a name="comparison-function-incompatible-types"></a>Cette fonction ne renvoie pas de valeur si `x` les types `y` sont incompatibles, tels qu'un nombre et une chaîne.  | 
|  `gte(x, y)`  |  Renvoie `1` si `x` est supérieur ou égal à `y`, sinon `0` (`x ≥ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considère que les arguments sont égaux s'ils se situent dans une tolérance relative de`1E-9`. Cela se comporte de la même manière que la fonction [isclose](https://docs.python.org/3/library/math.html#math.isclose) en Python. <a name="comparison-function-incompatible-types"></a>Cette fonction ne renvoie pas de valeur si `x` les types `y` sont incompatibles, tels qu'un nombre et une chaîne.  | 
|  `eq(x, y)`  |  Renvoie `1` si `x` est égal à `y`, sinon `0` (`x == y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considère que les arguments sont égaux s'ils se situent dans une tolérance relative de`1E-9`. Cela se comporte de la même manière que la fonction [isclose](https://docs.python.org/3/library/math.html#math.isclose) en Python. <a name="comparison-function-incompatible-types"></a>Cette fonction ne renvoie pas de valeur si `x` les types `y` sont incompatibles, tels qu'un nombre et une chaîne.  | 
|  `lt(x, y)`  |  Renvoie `1` si `x` est inférieur à `y`, sinon `0` (`x < y`). <a name="comparison-function-incompatible-types"></a>Cette fonction ne renvoie pas de valeur si `x` les types `y` sont incompatibles, tels qu'un nombre et une chaîne.  | 
|  `lte(x, y)`  |  Renvoie `1` si `x` est inférieur ou égal à `y`, sinon `0` (`x ≤ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considère que les arguments sont égaux s'ils se situent dans une tolérance relative de`1E-9`. Cela se comporte de la même manière que la fonction [isclose](https://docs.python.org/3/library/math.html#math.isclose) en Python. <a name="comparison-function-incompatible-types"></a>Cette fonction ne renvoie pas de valeur si `x` les types `y` sont incompatibles, tels qu'un nombre et une chaîne.  | 
|  `isnan(x)`  |  Renvoie `1` si `x` c'est égal à`NaN`, sinon`0`. Cette fonction ne renvoie pas de valeur s'il s'`x`agit d'une chaîne.  | 

# Utiliser des fonctions conditionnelles dans les expressions de formule
<a name="expression-conditional-functions"></a>

Dans les [transformations](transforms.md) et [les métriques](metrics.md), vous pouvez utiliser la fonction suivante pour vérifier une condition et renvoyer différents résultats, que la condition soit vraie ou fausse.


| Fonction | Description | 
| --- | --- | 
|   `if(condition, result_if_true, result_if_false)`  |  Évalue `condition` et renvoie `result_if_true` si la condition est vraie ou `result_if_false` si la condition est évaluée à. `false` `condition`doit être un chiffre. Cette fonction considère `0` une chaîne vide comme `false` et tout le reste (y compris`NaN`) comme`true`. Les booléens sont convertis en `0` (faux) et `1` (vrai). Vous pouvez renvoyer la [constante none](expression-constants.md#none-definition) à partir de cette fonction pour supprimer la sortie pour une condition particulière. Cela signifie que vous pouvez filtrer les points de données qui ne répondent pas à une condition. Pour de plus amples informations, veuillez consulter [Filtrer les points de données](expression-tutorials.md#filter-data). 

**Example Exemples**  
+ `if(0, x, y)`renvoie la variable`y`.
+ `if(5, x, y)`renvoie la variable`x`.
+ `if(gt(temp, 300), x, y)`renvoie la variable `x` si celle-ci `temp` est supérieure à`300`.
+ `if(gt(temp, 300), temp, none)`renvoie la variable `temp` si elle est supérieure ou égale à`300`, ou `none` (aucune valeur) si elle `temp` est inférieure à`300`. Nous vous recommandons d'utiliser l'UFCS pour les fonctions conditionnelles imbriquées dans lesquelles un ou plusieurs arguments sont des fonctions conditionnelles. Vous pouvez l'utiliser `if(condition, result_if_true)` pour évaluer une condition et `elif(condition, result_if_true, result_if_false)` pour évaluer des conditions supplémentaires. Par exemple, vous pouvez utiliser à la `if(condition1, result1_if_true).elif(condition2, result2_if_true, result2_if_false)` place de`if(condition1, result1_if_true, if(condition2, result2_if_true, result2_if_false))`. Vous pouvez également enchaîner des fonctions conditionnelles intermédiaires supplémentaires. Par exemple, vous pouvez utiliser plusieurs `if` instructions `if(condition1, result1_if_true).elif(condition2, result2_if_true).elif(condition3, result3_if_true, result3_if_false)` au lieu de les imbriquer, telles que`if(condition1, result1_if_true, if(condition2, result2_if_true, if(condition3, result3_if_true result3_if_false)))`.  Vous devez l'utiliser `elif(condition, result_if_true, result_if_false)` avec l'UFCS.   | 

# Utiliser des fonctions de chaîne dans les expressions de formule
<a name="expression-string-functions"></a>

Dans les [transformations](transforms.md) et [les métriques](metrics.md), vous pouvez utiliser les fonctions suivantes pour agir sur des chaînes. Pour de plus amples informations, veuillez consulter [Utiliser des chaînes dans les formules](expression-tutorials.md#use-strings-in-formulas).

**Important**  
<a name="formula-output-rules"></a>Les expressions de formule ne peuvent générer que des valeurs doubles ou des valeurs de chaîne. Les expressions imbriquées peuvent générer d'autres types de données, tels que des chaînes, mais la formule dans son ensemble doit être évaluée à un nombre ou à une chaîne. Vous pouvez utiliser la [fonction jp](#jp-definition) pour convertir une chaîne en nombre. La valeur booléenne doit être 1 (vrai) ou 0 (faux). Pour de plus amples informations, veuillez consulter [Valeurs non définies, infinies et en dépassement](expression-tutorials.md#undefined-values).


| Fonction | Description | 
| --- | --- | 
|  `len(s)`  |  Renvoie la longueur de la chaîne`s`.  | 
|  `find(s, substring)`  |  Renvoie l'index de la chaîne `substring` dans la chaîne`s`.  | 
|  `contains(s, substring)`  |  Renvoie `1` si la chaîne `s` contient la chaîne`substring`, sinon`0`.  | 
|  `upper(s)`  |  Renvoie la chaîne `s` en majuscules.  | 
|  `lower(s)`  |  Renvoie la chaîne `s` en minuscules.  | 
|   `jp(s, json_path)`  |  Évalue la chaîne `s` avec l'[JsonPath](https://github.com/json-path/JsonPath)expression `json_path` et renvoie le résultat. Utilisez cette fonction pour effectuer les opérations suivantes : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-string-functions.html) Pour extraire une valeur de chaîne d'une structure JSON et la renvoyer sous forme de nombre, vous devez utiliser plusieurs `jp` fonctions imbriquées. La `jp` fonction externe extrait la chaîne de la structure JSON et la `jp` fonction interne convertit la chaîne en nombre. La chaîne `json_path` doit contenir une chaîne littérale. Cela signifie qu'il ne `json_path` peut pas s'agir d'une expression évaluée en chaîne. 

**Example Exemples**  
+ `jp('{"status":"active","value":15}', '$.value')` renvoie `15`.
+ `jp('{"measurement":{"reading":25,"confidence":0.95}}', '$.measurement.reading')` renvoie `25`.
+ `jp('[2,8,23]', '$[2]')` renvoie `23`.
+ `jp('{"values":[3,6,7]}', '$.values[1]')` renvoie `6`.
+ `jp('111', '$')` renvoie `111`.
+ `jp(jp('{"measurement":{"reading":25,"confidence":"0.95"}}', '$.measurement.confidence'), '$')` renvoie `0.95`.  | 
|  `join(s0, s1, s2, s3, ...)`  |  Renvoie une chaîne concaténée avec un délimiteur. Cette fonction utilise la première chaîne d'entrée comme délimiteur et réunit les chaînes d'entrée restantes. Cela se comporte de la même manière que la fonction [join (CharSequence delimiter, CharSequence... elements)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-) en Java. 

**Example Exemples**  
+ `join("-", "aa", "bb", "cc")`retours `aa-bb-cc`  | 
|  `format(expression: "format")` ou `format("format", expression)`  |  Renvoie une chaîne au format spécifié. Cette fonction donne `expression` une valeur, puis renvoie la valeur dans le format spécifié. Cela se comporte de la même manière que la fonction [format (String format, Object... args)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-) en Java. Pour plus d'informations sur les formats pris en charge, consultez la section Conversions sous [Class Formatter](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html) dans la *plate-forme Java, spécification de l'API Standard Edition 7*. 

**Example Exemples**  
+ `format(100+1: "d")`renvoie une chaîne,`101`.
+ `format("The result is %d", 100+1)`renvoie une chaîne,`The result is 101`.  | 
|  `f'expression'`  |  Renvoie une chaîne concaténée. Avec cette fonction formatée, vous pouvez utiliser une expression simple pour concaténer et formater des chaînes. Ces fonctions peuvent contenir des expressions imbriquées. Vous pouvez utiliser `{}` (accolades) pour interpoler des expressions. Cela se comporte de la même manière que les [littéraux de chaîne formatés en Python](https://docs.python.org/3/reference/lexical_analysis.html#f-strings). 

**Example Exemples**  
+ `f'abc{1+2: "f"}d'` renvoie `abc3.000000d`. Pour évaluer cet exemple d'expression, procédez comme suit :

  1. `format(1+2: "f")`renvoie un nombre à virgule flottante,`3.000000`.

  1. `join('', "abc", 1+2, 'd')`renvoie une chaîne,`abc3.000000d`.

  Vous pouvez également écrire l'expression de la manière suivante :`join('', "abc", format(1+2: "f"), 'd')`.  | 

# Utiliser les fonctions d'agrégation dans les expressions de formule
<a name="expression-aggregation-functions"></a>

Dans [les métriques](metrics.md) uniquement, vous pouvez utiliser les fonctions suivantes pour agréger les valeurs d'entrée sur chaque intervalle de temps et calculer une valeur de sortie unique. Les fonctions d'agrégation peuvent agréger les données issues de ressources associées.

Les arguments des fonctions d'agrégation peuvent être [des variables](expression-variables.md), [des littéraux numériques, des](expression-literals.md#number-literal-definition) [fonctions temporelles](expression-temporal-functions.md), des expressions imbriquées ou des fonctions d'agrégation. La formule `max(latest(x), latest(y), latest(z))` utilise une fonction d'agrégation comme argument et renvoie la plus grande valeur actuelle des `z` propriétés `x``y`, et.

Vous pouvez utiliser des expressions imbriquées dans les fonctions d'agrégation. Lorsque vous utilisez des expressions imbriquées, les règles suivantes s'appliquent : 
+ Chaque argument ne peut comporter qu'une seule variable.  
**Example**  

  Par exemple, `avg(x*(x-1))` et `sum(x/2 )/avg(y^2 )` sont pris en charge.

  Par exemple, `min(x/y)` n'est pas pris en charge.
+ Chaque argument peut comporter des expressions imbriquées à plusieurs niveaux.  
**Example**  

  Par exemple, `sum(avg(x^2 )/2)` est pris en charge.
+ Les différents arguments peuvent avoir des variables différentes.  
**Example**  

  Par exemple, `sum(x/2, y*2)` est pris en charge.

**Note**  
Si vos expressions contiennent des mesures, AWS IoT SiteWise utilise les dernières valeurs de l'intervalle de temps actuel pour que les mesures calculent les agrégats.
Si vos expressions contiennent des attributs, AWS IoT SiteWise utilise les dernières valeurs des attributs pour calculer les agrégats.


| Fonction | Description | 
| --- | --- | 
|  `avg(x0, ..., xn)`  |  Renvoie la moyenne des valeurs des variables données sur l'intervalle de temps actuel. <a name="aggregation-function-no-output"></a>Cette fonction produit un point de données uniquement si les variables données ont au moins un point de données sur l'intervalle de temps actuel.  | 
|   `sum(x0, ..., xn)`  |  Renvoie la somme des valeurs de variables données sur l'intervalle de temps actuel. <a name="aggregation-function-no-output"></a>Cette fonction produit un point de données uniquement si les variables données ont au moins un point de données sur l'intervalle de temps actuel.  | 
|  `min(x0, ..., xn)`  |  Renvoie la valeur minimale des valeurs des variables données sur l'intervalle de temps actuel. <a name="aggregation-function-no-output"></a>Cette fonction produit un point de données uniquement si les variables données ont au moins un point de données sur l'intervalle de temps actuel.  | 
|  `max(x0, ..., xn)`  |  Renvoie la valeur maximale des valeurs de variables données sur l'intervalle de temps actuel. <a name="aggregation-function-no-output"></a>Cette fonction produit un point de données uniquement si les variables données ont au moins un point de données sur l'intervalle de temps actuel.  | 
|  `count(x0, ..., xn)`  |  Renvoie le nombre total de points de données pour les variables données sur l'intervalle de temps actuel. Pour de plus amples informations sur la comptabilisation du nombre de points de données qui répondent à une condition, veuillez consulter [Compter les points de données qui correspondent à une condition](expression-tutorials.md#count-filtered-data). <a name="aggregation-function-always-output"></a>Cette fonction calcule un point de données pour chaque intervalle de temps.  | 
| `stdev(x0, ..., xn)` | Renvoie l'écart type des valeurs des variables données sur l'intervalle de temps actuel. Cette fonction produit un point de données uniquement si les variables données ont au moins un point de données sur l'intervalle de temps actuel.  | 

# Utiliser des fonctions temporelles dans les expressions de formules
<a name="expression-temporal-functions"></a>

Utilisez des fonctions temporelles pour renvoyer des valeurs basées sur les horodatages des points de données.

## Utiliser des fonctions temporelles dans les métriques
<a name="temporal-functions-in-metrics"></a>

Dans [les métriques](metrics.md) uniquement, vous pouvez utiliser les fonctions suivantes qui renvoient des valeurs basées sur l'horodatage des points de données.

Les arguments des fonctions temporelles doivent être des propriétés du modèle d'actif local ou des expressions imbriquées. Cela signifie que vous ne pouvez pas utiliser les propriétés des modèles d'actifs enfants dans les fonctions temporelles.

Vous pouvez utiliser des expressions imbriquées dans les fonctions temporelles. Lorsque vous utilisez des expressions imbriquées, les règles suivantes s'appliquent : 
+ Chaque argument ne peut comporter qu'une seule variable.

  Par exemple, `latest( t*9/5 + 32 )` est pris en charge.
+ Les arguments ne peuvent pas être des fonctions d'agrégation.

  Par exemple, `first( sum(x) )` n'est pas pris en charge.


| Fonction | Description | 
| --- | --- | 
|  `first(x)`  |  Renvoie la valeur de la variable donnée avec l'horodatage le plus ancien sur l'intervalle de temps actuel.  | 
|   `last(x)` |  Renvoie la valeur de la variable donnée avec l'horodatage le plus récent sur l'intervalle de temps actuel.  | 
|  `earliest(x)`  |  Renvoie la dernière valeur de la variable donnée avant le début de l'intervalle de temps actuel. Cette fonction calcule un point de données pour chaque intervalle de temps, si la propriété d'entrée a au moins un point de données dans son historique. Consultez [time-range-defintion](#time-range-def) pour plus de détails.   | 
|   `latest(x)` |  Renvoie la dernière valeur de la variable donnée avec le dernier horodatage avant la fin de l'intervalle de temps actuel. Cette fonction calcule un point de données pour chaque intervalle de temps, si la propriété d'entrée a au moins un point de données dans son historique. Consultez [time-range-defintion](#time-range-def) pour plus de détails.  | 
|   `statetime(x)`  |  Renvoie la durée, en secondes, pendant laquelle les variables données sont positives sur l'intervalle de temps actuel. Vous pouvez utiliser les [fonctions de comparaison](expression-comparison-functions.md) pour créer une propriété de transformation pour la `statetime` fonction à utiliser.  Par exemple, si vous avez une propriété `Idle` qui est `0` ou `1`, vous pouvez calculer le temps d'inactivité par intervalle de temps avec l'expression suivante : `IdleTime = statetime(Idle)`. Pour plus d'informations, consultez l'[exemple de scénario d'heure d'état](#statetime-example). Cette fonction ne prend pas en charge les propriétés de métriques en tant que variables d'entrée. Cette fonction calcule un point de données pour chaque intervalle de temps, si la propriété d'entrée a au moins un point de données dans son historique.  | 
|   `TimeWeightedAvg(x, [interpolation])`  | Renvoie la moyenne des données d'entrée pondérées par les intervalles de temps entre les points.Voir [Paramètres des fonctions pondérées dans le temps](#timeweighted-parameter) pour plus de détails sur les calculs et les intervalles.L'argument facultatif `interpolaton` doit être une constante de chaîne :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-temporal-functions.html) | 
|   `TimeWeightedStDev(x, [algo])`  |  Renvoie l'écart type des données d'entrée pondéré avec les intervalles de temps entre les points.  Voir [Paramètres des fonctions pondérées dans le temps](#timeweighted-parameter) pour plus de détails sur les calculs et les intervalles.  Le calcul utilise l'algorithme de calcul du dernier report observé pour les intervalles entre les points de données. Dans cette approche, le point de données est calculé comme la dernière valeur observée jusqu'au prochain horodatage du point de données d'entrée. Le poids est calculé sous la forme d'un intervalle de temps en secondes entre les points de données ou les limites des fenêtres.  L'argument facultatif `algo` doit être une constante de chaîne : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-temporal-functions.html) Les formules suivantes sont utilisées pour le calcul où : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-temporal-functions.html) Équation pour l'écart type de la population : ![\[Équation pour l'écart type de la population.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/timeweightedstdev1.png) Équation pour l'écart type de fréquence : ![\[Équation pour l'écart type de fréquence.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/timeweighted-frequency-stdev.png)  | 

Le schéma suivant montre comment AWS IoT SiteWise les fonctions temporelles`first`, `last` `earliest``latest`, et sont calculées par rapport à l'intervalle de temps actuel.

![\[AWS IoT SiteWise les fonctions temporelles renvoient des points de données en fonction de leur horodatage.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/sitewise-temporal-functions.png)
<a name="time-range-def"></a>

**Note**  
L'intervalle de temps pour`first(x)`, `last(x)` est (début de la fenêtre actuelle, fin de la fenêtre actuelle].
L'intervalle de temps pour `latest(x)` est [début du temps, fin de la fenêtre actuelle].
La plage de temps pour `earliest(x)` est (début de l'heure, fin de la fenêtre précédente).

**Paramètres des fonctions pondérés dans le temps**

Les fonctions pondérées dans le temps calculées pour la fenêtre d'agrégation prennent en compte les éléments suivants :
+ Points de données à l'intérieur de la fenêtre
+ Intervalles de temps entre les points de données
+ Dernier point de données avant la fenêtre
+ Premier point de données après la fenêtre (pour certains algorithmes)

**Termes :**
+ Point de **données incorrect : tout point** de données dont la qualité n'est pas bonne ou dont la valeur n'est pas numérique. Cela n'est pas pris en compte dans le calcul des résultats d'une fenêtre.
+ **Intervalle incorrect** — Intervalle après un point de données erroné. L'intervalle avant le premier point de données connu est également considéré comme un mauvais intervalle.
+ **Bon point de données** — Tout point de données présentant une bonne qualité et une bonne valeur numérique.

**Note**  
AWS IoT SiteWise ne consomme des données `GOOD` de qualité que lorsqu'il calcule les transformations et les métriques. Il ignore les points `UNCERTAIN` de `BAD` données.
L'intervalle avant le premier point de données connu est considéré comme un **mauvais intervalle**. Pour plus d’informations, consultez [Tutoriels d'expression de formules](expression-tutorials.md).

L'intervalle après le dernier point de données connu se poursuit indéfiniment, affectant toutes les fenêtres suivantes. Lorsqu'un nouveau point de données arrive, la fonction recalcule l'intervalle.

Conformément aux règles ci-dessus, le résultat agrégé des fenêtres est calculé et limité aux limites des fenêtres. Par défaut, la fonction envoie le résultat de la fenêtre uniquement si l'ensemble de la fenêtre correspond à un **bon intervalle**.

Si l'**intervalle de validité** de la fenêtre est inférieur à la longueur de la fenêtre, la fonction n'envoie pas la fenêtre. 

Lorsque les points de données affectant le résultat de la fenêtre changent, la fonction recalcule la fenêtre, même si les points de données se trouvent en dehors de la fenêtre. 

Si la propriété d'entrée comporte au moins un point de données dans son historique et qu'un calcul a été lancé, la fonction calcule les fonctions d'agrégation pondérées dans le temps pour chaque intervalle de temps.

**Example Exemple de scénario statetime**  
Prenons un exemple où vous avez une ressource avec les propriétés suivantes :  
+ `Idle`— Une mesure qui est `0` ou`1`. Lorsque la valeur est `1`, la machine est inactive.
+ `Idle Time`— Mesure qui utilise la formule `statetime(Idle)` pour calculer la durée en secondes pendant laquelle la machine est inactive, par intervalle d'une minute.
La propriété `Idle` possède les points de données suivants.  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Horodatage | 2:00:00 PM | 2:00:30 PM | 2:01:15 PM | 2:02:45 PM | 2:04:00 PM | 
| Idle | 0 | 1 | 1 | 0 | 0 | 
AWS IoT SiteWise calcule la `Idle Time` propriété toutes les minutes à partir des valeurs de`Idle`. Une fois ce calcul terminé, la propriété `Idle Time` possède les points de données suivants.  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Horodatage | 2:00:00 PM | 2:01:00 PM | 2:02:00 PM | 2:03:00 PM | 2:04:00 PM | 
| Idle Time | N/A | 30 | 60 | 45 | 0 | 
AWS IoT SiteWise effectue les calculs suivants `Idle Time` à la fin de chaque minute.  
+ À 2:00 PM (pour 1:59 PM à 2:00 PM)
  + Il n'y a pas de données pour `Idle` avant 2:00 PM, donc aucun point de données n'est calculé.
+ À 2:01 PM (pour 2:00 PM à 2:01 PM)
  + À 2:00:00 PM, la machine est active (`Idle` est égal à `0`).
  + À 2:00:30 PM, la machine es inactive (`Idle` est égal à `1`).
  + `Idle` ne change plus avant la fin de l'intervalle à 2:01:00 PM, `Idle Time`est donc égal à 30 secondes.
+ À 2:02 PM (pour 2:01 PM à 2:02 PM)
  + À 2:01:00 PM, la machine est inactive (conformément au dernier point de données à 2:00:30 PM).
  + À 2:01:15 PM, la machine est toujours inactive.
  + `Idle` ne change plus non plus avant la fin de l'intervalle à 2:02:00 PM, `Idle Time` est donc égal à 60 secondes.
+ À 2:03 PM (pour 2:02 PM à 2:03 PM)
  + À 2:02:00 PM, la machine est inactive (conformément au dernier point de données à 2:01:15 PM).
  + À 2:02:45 PM, la machine est active.
  + `Idle` ne change plus non plus avant la fin de l'intervalle à 2:03:00 PM, `Idle Time` est donc égal à 45 secondes.
+ À 2:04 PM (pour 2:03 PM à 2:04 PM)
  + À 2:03:00 PM, la machine est active (conformément au dernier point de données à 2:02:45 PM).
  + `Idle` ne change plus non plus avant la fin de l'intervalle à 2:04:00 PM, `Idle Time` est donc égal à 0 seconde.

**Example Exemple TimeWeightedAvg et TimeWeightedStDev scénario**  
Les tableaux suivants fournissent des exemples d'entrées et de sorties pour ces métriques de fenêtre d'une minute :`Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p')`.  
Exemple de saisie pour une fenêtre agrégée d'une minute :  
Ces points de données sont tous `GOOD` de qualité.


|  |  | 
| --- |--- |
| 03:00:00 | 4.0 | 
| 03:01:00 | 2.0 | 
| 03:01:10 | 8.0 | 
| 03:01:50 | 20.0 | 
| 03:02:00 | 14,0 | 
| 03:02:05 | 10,0 | 
| 03:02:10 | 3.0 | 
| 03:02:30 | 20.0 | 
| 03:03:30 | 0.0 | 
Résultats agrégés en sortie :  
Aucun — Résultat non produit pour cette fenêtre.


| Heure | `Avg(x)` | `TimeWeightedAvg(x)` | `TimeWeightedAvg(X, "linear")` | `stDev(X)` | `timeWeightedStDev(x)` | `timeWeightedStDev(x, 'p')` | 
| --- | --- | --- | --- | --- | --- | --- | 
| 3:00:00 | 4 | Aucune | Aucune | 0 | Aucune | Aucune | 
| 3:01:00 | 2 | 4 | 3 | 0 | 0 | 0 | 
| 3:02:00 | 14 | 9 | 13 | 6 | 5,430610041581775 | 5,385164807134504 | 
| 3:03:00 | 11 | 13 | 12,875 | 8,54400374531753 | 7,724054437220943 | 7,659416862050705 | 
| 3:04:00 | 0 USD | 10 | 2,5 | 0 | 10,084389681792215 | 10 | 
| 3:05:00 | Aucune | 0 | 0 | Aucune | 0 | 0 | 

## Utiliser des fonctions temporelles dans les transformations
<a name="temporal-functions-in-transforms"></a>

Dans les [transformations](transforms.md) uniquement, vous pouvez utiliser la `pretrigger()` fonction pour récupérer la valeur de `GOOD` qualité d'une variable avant la mise à jour de propriété qui a lancé le calcul de transformation en cours.

Prenons l'exemple d'un fabricant AWS IoT SiteWise qui surveille l'état d'une machine. Le fabricant utilise les mesures et les transformations suivantes pour représenter le processus :
+ Une mesure`current_state`, qui peut être 0 ou 1.
  + Si la machine est en état de nettoyage, `current_state` égal à 1.
  + Si la machine est en cours de fabrication, `current_state` est égal à 0.
+ Une transformation`cleaning_state_duration`, c'est égal à ça`if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none)`. Cette transformation renvoie la durée pendant laquelle la machine est restée en état de nettoyage en secondes, au format Unix Epoch. Pour plus d'informations, consultez [Utiliser des fonctions conditionnelles dans les expressions de formule](expression-conditional-functions.md) et la fonction [timestamp ().](expression-date-and-time-functions.md)

Si la machine reste en état de nettoyage plus longtemps que prévu, le fabricant peut examiner la machine.

Vous pouvez également utiliser la `pretrigger()` fonction dans des transformations multivariées. Par exemple, vous avez deux mesures nommées `x` et`y`, et une transformation`z`, égale à`x + y + pretrigger(y)`. Le tableau suivant indique les valeurs pour `x``y`, et `z` entre 9 h 00 et 9 h 15.

**Note**  
Cet exemple suppose que les valeurs des mesures arrivent par ordre chronologique. Par exemple, la valeur de `x` pour 9 h 00 arrive avant la valeur de `x` pour 9 h 05.
Si les points de données de 9 h 05 arrivent avant les points de données de 9 h 00, cela `z` n'est pas calculé à 9 h 05.
Si la valeur de `x` pour 9 h 05 arrive avant la valeur de `x` pour 9 h 00 et que les valeurs de `y` arrivent chronologiquement, `z` est égale `22 = 20 + 1 + 1` à 9 h 05.


|  | 9 H 00 | 9 H 05 | 9 H 10 | 9 H 15 | 
| --- | --- | --- | --- | --- | 
|  `x`  |  10  |  20  |    |  30  | 
|  `y`  |  1  |  2  |  3  |    | 
|  `z = x + y + pretrigger(y)`  |  `y`ne reçoit aucun point de données avant 9h00. Par conséquent, `z` n'est pas calculé à 9 h 00.  |  23 = 20 \$1 2 \$1 1 `pretrigger(y)`est égal à 1.  |  25 = 20 \$1 3 \$1 2 `x`ne reçoit pas de nouveau point de données. `pretrigger(y)`est égal à 2.  |  36 = 30 \$1 3 \$1 3 `y`ne reçoit pas de nouveau point de données. Par conséquent, `pretrigger(y)` est égal à 3 à 9 h 15.  | 

# Utiliser les fonctions de date et d'heure dans les expressions de formule
<a name="expression-date-and-time-functions"></a>

Dans les [transformations](transforms.md) et [les métriques](metrics.md), vous pouvez utiliser les fonctions de date et d'heure de la manière suivante :
+ Récupérez l'horodatage actuel d'un point de données en UTC ou dans le fuseau horaire local.
+ Construisez des horodatages avec des arguments tels que `year``month`, et. `day_of_month`
+ Extrayez une période telle qu'une année ou un mois avec l'`unix_time`argument.


| Fonction | Description | 
| --- | --- | 
|  `now()`  |  Renvoie la date et l'heure actuelles, en secondes, au format Unix Epoch.  | 
|  `timestamp()`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `mktime(time_zone, year, month, day_of_month, hour, minute, second)`  |  Renvoie le temps d'entrée en secondes, au format Unix Epoch. Les conditions suivantes s'appliquent à l'utilisation de cette fonction : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Les limites suivantes s'appliquent à l'utilisation de cette fonction : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Exemples : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `localtime(unix_time, time_zone)`  |  Renvoie l'année, le jour du mois, le jour de la semaine, le jour de l'année, l'heure, la minute ou la seconde du fuseau horaire spécifié par rapport à l'heure Unix. Les conditions suivantes s'appliquent à l'utilisation de cette fonction : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Exemple de réponse : `2007-12-03T10:15:30+01:00[Europe/Paris]` `localtime(unix_time, time_zone)`n'est pas une fonction autonome. Les `sec()` fonctions `year()` `mon()``mday`,`wday()`,`yday()`, `hour()``minute()`,, et prennent `localtime(unix_time, time_zone)` comme argument. Exemples : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `year(localtime(unix_time, time_zone)`  |  Renvoie l'année à partir de`localtime(unix_time, time_zone)`.  | 
|  `mon(localtime(unix_time, time_zone))`  |  Renvoie le mois de`localtime(unix_time, time_zone)`.  | 
|  `mday(localtime(unix_time, time_zone))`  |  Renvoie le jour du mois à partir de`localtime(unix_time, time_zone)`.  | 
|  `wday(localtime(unix_time, time_zone))`  |  Renvoie le jour de la semaine à partir de`localtime(unix_time, time_zone)`.  | 
|  `yday(localtime(unix_time, time_zone))`  |  Renvoie le jour de l'année à partir de`localtime(unix_time, time_zone)`.  | 
|  `hour(localtime(unix_time, time_zone))`  |  Renvoie l'heure de`localtime(unix_time, time_zone)`.  | 
|  `minute(localtime(unix_time, time_zone))`  |  Renvoie la minute de`localtime(unix_time, time_zone)`.  | 
|  `sec(localtime(unix_time, time_zone))`  |  Renvoie le second de`localtime(unix_time, time_zone)`.  | 

## Formats de fuseau horaire pris en charge
<a name="time-zone-expressions"></a>

Vous pouvez spécifier l'argument du fuseau horaire de différentes manières :
+ Décalage de fuseau horaire - Spécifiez `'Z'` un UTC ou un décalage (`'+2'`ou`'-5'`).
+ Décalage IDs - Combinez une abréviation de fuseau horaire et un décalage. Par exemple : `'GMT+2'` et `'UTC-01:00'`. L'abréviation du fuseau horaire ne doit contenir que trois lettres.
+ Basé sur la région IDs - Par exemple, `'Etc/GMT+12'` et`'Pacific/Pago_Pago'`.

### Abréviations de fuseaux horaires prises en charge
<a name="spported-time-zones"></a>

Les fonctions de date et d'heure prennent en charge les abréviations de fuseau horaire à trois lettres suivantes : 
+ EST - 05:00
+ HST - 10:00
+ MARDI - 07:00
+ ACT - Australie/Darwin
+ AET - Australie/Sydney
+ America/Argentina/BuenosAGT-\$1Aires
+ ART - Africa/Le Caire
+ AST - America/Anchorage
+ BET - America/Sao\$1Paulo
+ BST - Asia/Dhaka
+ CAT - Afrique/Harare
+ CET - Europe/Paris
+ CNT - America/St\$1Johns
+ CST - America/Chicago
+ CTT - Asia/Shanghai 
+ EAT - Africa/Addis\$1Abeba
+ JET - America/Indiana/Indianapolis
+ IST - Asia/Kolkata
+ JST - Asia/Tokyo
+ MIT - Pacific/Apia
+ NET - Asia/Yerevan
+ NST - Pacific/Auckland
+ PLT - Asia/Karachi
+ PRT - America/Puerto\$1Rico
+ PST - America/Los\$1Angeles
+ SST - Pacific/Guadalcanal
+ VST - Asia/Ho\$1Chi\$1Minh

### Soutenu en fonction de la région IDs
<a name="supported-region-based-ids"></a>

Les fonctions de date et d'heure prennent en charge les fonctions suivantes basées sur les régions IDs, organisées en fonction de leur relation avec UTC\$1 00:00 :
+ ETC/GMT\$112 (UTC- 12h00)
+ Pacific/Pago\$1Pago (UTC- 11:00)
+ Pacifique/Samoa (UTC- 11:00)
+ Pacifique/Niue (UTC- 11:00)
+ États-Unis/Samoa (UTC- 11:00)
+ ETC/GMT\$111 (UTC- 11:00)
+ Pacifique/Midway (UTC- 11:00)
+ Pacifique/Honolulu (UTC- 10:00)
+ Pacifique/Rarotonga (UTC- 10:00)
+ Pacifique/Tahiti (UTC- 10:00)
+ Pacifique/Johnston (UTC- 10:00)
+ États-Unis/Hawaï (UTC- 10:00)
+ Système V/ HST10 (UTC- 10:00)
+ ETC/GMT\$110 (UTC- 10:00)
+ Pacifique/Marquises (UTC- 09:30)
+ ETC/GMT\$19 (UTC- 09:00)
+ Pacifique/Gambier (UTC- 09:00)
+ Amérique/Atka (UTC- 09:00)
+ Système V/ YST9 (UTC- 09:00)
+ Amérique/Adak (UTC- 09:00)
+ États-Unis/Aléoutiennes (UTC- 09:00)
+ ETC/GMT\$18 (UTC- 08:00)
+ Etats-Unis/Alaska (UTC- 08:00)
+ Amérique/Juneau (UTC- 08:00)
+ Amérique/Metlakatla (UTC- 08:00)
+ Amérique/Yakutat (UTC- 08:00)
+ Pacifique/Pitcairn (UTC- 08:00)
+ Amérique/Sitka (UTC- 08:00)
+ Amérique/Anchorage (UTC- 08:00)
+ Système V/ PST8 (UTC- 08:00)
+ Amérique/Nome (UTC- 08:00)
+ Système YST9 V/YDT (UTC- 08:00)
+ Canada/Yukon (UTC- 07:00)
+ US/Pacific-New (UTC- 07:00)
+ ETC/GMT\$17 (UTC- 07:00)
+ Etats-Unis/Arizona (UTC- 07:00)
+ Amérique/Dawson\$1Creek (UTC- 07:00)
+ Canada/Pacifique (UTC- 07:00)
+ PST8PDT (UTC- 07:00)
+ Système V/ MST7 (UTC- 07:00)
+ Amérique/Dawson (UTC- 07:00)
+ Mexique/ BajaNorte (UTC- 07:00)
+ Amérique/Tijuana (UTC- 07:00)
+ Amérique/Creston (UTC- 07:00)
+ America/Hermosillo (UTC- 07:00)
+ Amérique/Santa\$1Isabel (UTC- 07:00)
+ Amérique/Vancouver (UTC- 07:00)
+ America/Ensenada (UTC- 07:00)
+ Amérique/Phoenix (UTC- 07:00)
+ Amérique/Whitehorse (UTC- 07:00)
+ America/Fort\$1Nelson (UTC- 07:00)
+ Système PST8 V/PDT (UTC- 07:00)
+ Amérique/Los\$1Angeles (UTC- 07:00)
+ États-Unis/Pacifique (UTC- 07:00)
+ America/El Salvador (UTC- 06:00)
+ Amérique/Guatemala (UTC- 06:00)
+ Amérique/Belize (UTC- 06:00)
+ Amérique/Managua (UTC- 06:00)
+ America/Tegucigalpa (UTC- 06:00)
+ ETC/GMT\$16 (UTC- 06:00)
+ Pacifique/Pâques (UTC- 06:00)
+ Mexique/ BajaSur (UTC- 06:00)
+ America/Regina (UTC- 06:00)
+ Amérique/Denver (UTC- 06:00)
+ Pacifique/Galapagos (UTC- 06:00)
+ Amérique/Yellowknife (UTC- 06:00)
+ America/Swift\$1Current (UTC- 06:00)
+ Amérique/Inuvik (UTC- 06:00)
+ Amérique/Mazatlan (UTC- 06:00)
+ Amérique/Boise (UTC- 06:00)
+ Amérique/Costa\$1Rica (UTC- 06:00)
+ MST7MDT (UTC- 06:00)
+ Système V/ CST6 (UTC- 06:00)
+ Amérique/Chihuahua (UTC- 06:00)
+ Amérique/Ojinaga (UTC- 06:00)
+ Chili/ EasterIsland (UTC- 06:00)
+ Etats-Unis/Montagne (UTC- 06:00)
+ Amérique/Edmonton (UTC- 06:00)
+ Canada/Montagne (UTC- 06:00)
+ Amérique/Cambridge\$1Bay (UTC- 06:00)
+ Navajo (UTC- 06:00)
+ Système MST7 V/MDT (UTC- 06:00)
+ Canada/Saskatchewan (UTC- 06:00)
+ Amérique/Shiprock (UTC- 06:00)
+ Amérique/Panama (UTC- 05:00)
+ Amérique/Chicago (UTC- 05:00)
+ America/Eirunepe (UTC- 05:00)
+ ETC/GMT\$15 (UTC- 05:00)
+ Mexique/Général (UTC- 05:00)
+ America/Porto\$1Acre (UTC- 05:00)
+ Amérique/Guayaquil (UTC- 05:00)
+ America/Rankin\$1Inlet (UTC- 05:00)
+ US/Central (UTC- 05:00)
+ Amérique/Rainy\$1River (UTC- 05:00)
+ America/Indiana/Knox(UTC- 05:00)
+ America/North\$1Dakota/Beulah(UTC- 05:00)
+ Amérique/Monterrey (UTC- 05:00)
+ Amérique/Jamaïque (UTC- 05:00)
+ Amérique/Atikokan (UTC- 05:00)
+ America/Coral\$1Harbour (UTC- 05:00)
+ America/North\$1Dakota/Center(UTC- 05:00)
+ Amérique/Cayman (UTC- 05:00)
+ America/Indiana/Tell\$1Ville (UTC- 05:00)
+ America/Mexico\$1City (UTC- 05:00)
+ Amérique/Matamoros (UTC- 05:00)
+ CST6CDT (UTC- 05:00)
+ America/Knox\$1IN (UTC- 05:00)
+ Amérique/Bogota (UTC- 05:00)
+ Amérique/Menominee (UTC- 05:00)
+ America/Resolute (UTC- 05:00)
+ Système V/ EST5 (UTC- 05:00)
+ Canada/Centre (UTC- 05:00)
+ Brésil/Acre (UTC- 05:00)
+ Amérique/Cancun (UTC- 05:00)
+ Amérique/Lima (UTC- 05:00)
+ Amérique/Bahia\$1Banderas (UTC- 05:00)
+ US/Indiana-Starke (UTC- 05:00)
+ America/Rio\$1Branco (UTC- 05:00)
+ Système CST6 V/CDT (UTC- 05:00)
+ Jamaïque (UTC- 05:00)
+ Amérique/Mérida (UTC- 05:00)
+ America/North\$1Dakota/New\$1Salem (UTC- 05:00)
+ Amérique/Winnipeg (UTC- 05:00)
+ Amérique/Cuiabá (UTC- 04:00)
+ Amérique/Marigot (UTC- 04:00)
+ America/Indiana/Petersburg(UTC- 04:00)
+ Chili/Continental (UTC- 04:00)
+ America/Grand\$1Turk (UTC- 04:00)
+ Cuba (UTC- 04:00)
+ ETC/GMT\$14 (UTC- 04:00)
+ Amérique/Manaus (UTC- 04:00)
+ Amérique/Fort\$1Wayne (UTC- 04:00)
+ America/St\$1Thomas (UTC- 04:00)
+ Amérique/Anguilla (UTC- 04:00)
+ Amérique/La Havane (UTC- 04:00)
+ États-Unis/Michigan (UTC- 04:00)
+ Amérique/Barbade (UTC- 04:00)
+ Amérique/Louisville (UTC- 04:00)
+ Amérique/Curaçao (UTC- 04:00)
+ Amérique/Guyana (UTC- 04:00)
+ Amérique/Martinique (UTC- 04:00)
+ Amérique/Porto\$1Rico (UTC- 04:00)
+ Amérique/Port\$1of\$1Spain (UTC- 04:00)
+ Système V/ AST4 (UTC- 04:00)
+ America/Indiana/Vevay(UTC- 04:00)
+ America/Indiana/Vincennes(UTC- 04:00)
+ America/Kralendijk (UTC- 04:00)
+ Amérique/Antigua (UTC- 04:00)
+ Amérique/Indianapolis (UTC- 04:00)
+ Amérique/Iqaluit (UTC- 04:00)
+ America/St\$1Vincent (UTC- 04:00)
+ America/Kentucky/Louisville(UTC- 04:00)
+ Amérique/Dominique (UTC- 04:00)
+ America/Asuncion (UTC- 04:00)
+ EST5HAE (UTC- 04:00)
+ Amérique/Nassau (UTC- 04:00)
+ America/Kentucky/Monticello(UTC- 04:00)
+ Brésil/Ouest (UTC- 04:00)
+ Amérique/Aruba (UTC- 04:00)
+ America/Indiana/Indianapolis(UTC- 04:00)
+ Amérique/Santiago (UTC- 04:00)
+ America/La\$1Paz (UTC- 04:00)
+ America/Thunder\$1Bay (UTC- 04:00)
+ America/Indiana/Marengo(UTC- 04:00)
+ Amérique/Blanc-Sablon (UTC- 04:00)
+ America/Santo\$1Domingo (UTC- 04:00)
+ Etats-Unis/Est (UTC- 04:00)
+ Canada/Est (UTC- 04:00)
+ Amérique/ Port-au-Prince (UTC- 04:00)
+ America/Saint-Barthélemy (UTC- 04:00)
+ Amérique/Nipigon (UTC- 04:00)
+ Etats-Unis/Est de l'Indiana (UTC- 04:00)
+ Amérique/Sainte-Lucie (UTC- 04:00)
+ Amérique/Montserrat (UTC- 04:00)
+ America/Lower\$1Princes (UTC- 04:00)
+ Amérique/Détroit (UTC- 04:00)
+ Amérique/Tortola (UTC- 04:00)
+ America/Porto\$1Velho (UTC- 04:00)
+ America/Campo\$1Grande (UTC- 04:00)
+ America/Virgin (UTC- 04:00)
+ Amérique/Pangnirtung (UTC- 04:00)
+ Amérique/Montréal (UTC- 04:00)
+ America/Indiana/Winamac(UTC- 04:00)
+ America/Boa\$1Vista (UTC- 04:00)
+ Amérique/Grenade (UTC- 04:00)
+ Amérique/New\$1York (UTC- 04:00)
+ America/St\$1Kitts (UTC- 04:00)
+ Amérique/Caracas (UTC- 04:00)
+ Amérique/Guadeloupe (UTC- 04:00)
+ Amérique/Toronto (UTC- 04:00)
+ Système EST5 V/EDT (UTC- 04:00)
+ America/Argentina/Catamarca(UTC- 03:00)
+ Canada/Atlantique (UTC- 03:00)
+ America/Argentina/Cordoba(UTC- 03:00)
+ Amérique/Araguaina (UTC- 03:00)
+ America/Argentina/Salta(UTC- 03:00)
+ ETC/GMT\$13 (UTC- 03:00)
+ Amérique/Montevideo (UTC- 03:00)
+ Brésil/Est (UTC- 03:00)
+ America/Argentina/Mendoza(UTC- 03:00)
+ America/Argentina/Rio\$1Gallegos (UTC- 03:00)
+ Amérique/Catamarca (UTC- 03:00)
+ Amérique/Cordoba (UTC- 03:00)
+ America/Sao\$1Paulo (UTC- 03:00)
+ America/Argentina/Jujuy(UTC- 03:00)
+ Amérique/Cayenne (UTC- 03:00)
+ Amérique/Recife (UTC- 03:00)
+ America/Buenos\$1Aires (UTC- 03:00)
+ Amérique/Paramaribo (UTC- 03:00)
+ Amérique/Moncton (UTC- 03:00)
+ America/Mendoza (UTC- 03:00)
+ Amérique/Santarém (UTC- 03:00)
+ Atlantique/Bermudes (UTC- 03:00)
+ Amérique/Maceio (UTC- 03:00)
+ Atlantic/Stanley (UTC- 03:00)
+ Amérique/Halifax (UTC- 03:00)
+ Antarctique/Rothera (UTC- 03:00)
+ America/Argentina/San\$1Luis (UTC- 03:00)
+ America/Argentina/Ushuaia(UTC- 03:00)
+ Antarctique/Palmer (UTC- 03:00)
+ America/Punta\$1Arenas (UTC- 03:00)
+ Amérique/Glace\$1Bay (UTC- 03:00)
+ America/Fortaleza (UTC- 03:00)
+ Amérique/Thule (UTC- 03:00)
+ America/Argentina/La\$1Rioja (UTC- 03:00)
+ Amérique/Belém (UTC- 03:00)
+ America/Jujuy (UTC- 03:00)
+ Amérique/Bahia (UTC- 03:00)
+ Amérique/Goose\$1Bay (UTC- 03:00)
+ America/Argentina/San\$1Juan (UTC- 03:00)
+ America/Argentina/ComodRivadavia(UTC- 03:00)
+ America/Argentina/Tucuman(UTC- 03:00)
+ America/Rosario (UTC- 03:00)
+ Système AST4 V/ADT (UTC- 03:00)
+ America/Argentina/Buenos\$1Aires (UTC- 03:00)
+ America/St\$1Johns (UTC- 02:30)
+ Canada/Terre-Neuve (UTC- 02:30)
+ Amérique/Miquelon (UTC- 02:00)
+ ETC/GMT\$12 (UTC- 02:00)
+ Amérique/Godthab (UTC- 02:00)
+ America/Noronha (UTC- 02:00)
+ Brésil/ DeNoronha (UTC- 02:00)
+ Atlantique/Géorgie du Sud (UTC- 02:00)
+ Etc/GMT\$11 (UTC- 01:00)
+ Atlantique/Cap-Vert (UTC- 01:00)
+ Pacifique/Kiritimati (UTC\$1 14:00)
+ Etc/GMT-14 (UTC\$1 14:00)
+ Pacifique/Fakaofo (UTC\$1 13:00)
+ Pacifique/Enderbury (UTC\$1 13:00)
+ Pacifique/Apia (UTC\$1 13:00)
+ Pacifique/Tongatapu (UTC\$1 13:00)
+ Etc/GMT-13 (UTC\$1 13:00)
+ NZ-CHAT (UTC\$1 12:45)
+ Pacifique/Chatham (UTC\$1 12:45)
+ Pacifique/Kwajalein (UTC\$1 12:00)
+ Antarctique/ McMurdo (UTC\$1 12:00)
+ Pacifique/Wallis (UTC\$1 12:00)
+ Pacifique/Fidji (UTC\$1 12:00)
+ Pacifique/Funafuti (UTC\$1 12:00)
+ Pacifique/Nauru (UTC\$1 12:00)
+ Kwajalein (UTC\$1 12:00)
+ NOUVELLE-ZÉLANDE (UTC\$1 12:00)
+ Pacific/Wake (UTC\$1 12:00)
+ Antarctique/Pôle Sud (UTC\$1 12:00)
+ Pacifique/Tarawa (UTC\$1 12:00)
+ Pacifique/Auckland (UTC\$1 12:00)
+ Asie/Kamchatka (UTC\$1 12:00)
+ etc/GMT-12 (UTC\$1 12:00)
+ Asie/Anadyr (UTC\$1 12:00)
+ Pacifique/Majuro (UTC\$1 12:00)
+ Pacifique/Ponape (UTC\$1 11:00)
+ Pacifique/Bougainville (UTC\$1 11:00)
+ Antarctique/Macquarie (UTC\$1 11:00)
+ Pacifique/Pohnpei (UTC\$1 11:00)
+ Pacifique/Efate (UTC\$1 11:00)
+ Pacifique/Norfolk (UTC\$1 11:00)
+ Asie/Magadan (UTC\$1 11:00)
+ Pacifique/Kosrae (UTC\$1 11:00)
+ Asie/Sakhaline (UTC\$1 11:00)
+ Pacifique/Nouméa (UTC\$1 11:00)
+ Etc/GMT-11 (UTC\$1 11:00)
+ Asie/Srednekolymsk (UTC\$1 11:00)
+ Pacifique/Guadalcanal (UTC\$1 11:00)
+ Australie/Lord\$1Howe (UTC\$1 10:30)
+ Australie/LHI (UTC\$1 10:30)
+ Australie/Hobart (UTC\$1 10:00)
+ Pacifique/Yap (UTC\$1 10:00)
+ Australie/Tasmanie (UTC\$1 10:00)
+ Pacifique/Port\$1Moresby (UTC\$1 10:00)
+ Australie/ACT (UTC\$1 10:00)
+ Australie/Victoria (UTC\$1 10:00)
+ Pacifique/Chuuk (UTC\$1 10:00)
+ Australie/Queensland (UTC\$1 10:00)
+ Australie/Canberra (UTC\$1 10:00)
+ Australie/Currie (UTC\$1 10:00)
+ Pacifique/Guam (UTC\$1 10:00)
+ Pacifique/Truk (UTC\$1 10:00)
+ Australie/NSW (UTC\$1 10:00)
+ Asie/Vladivostok (UTC\$1 10:00)
+ Pacifique/Saipan (UTC\$1 10:00)
+ Antarctique/Dumont DUrville (UTC\$1 10:00)
+ Australie/Sydney (UTC\$1 10:00)
+ Australie/Brisbane (UTC\$1 10:00)
+ Etc/GMT-10 (UTC\$1 10:00)
+ Asie/Ust-Nera (UTC\$1 10:00)
+ Australie/Melbourne (UTC\$1 10:00)
+ Australie/Lindeman (UTC\$1 10:00)
+ Australie/Nord (UTC\$1 09:30)
+ Australie/Yancowinna (UTC\$1 09:30)
+ Australie/Adélaïde (UTC\$1 09:30)
+ Australie/Broken\$1Hill (UTC\$1 09:30)
+ Australie/Sud (UTC\$1 09:30)
+ Australie/Darwin (UTC\$1 09:30)
+ Etc/GMT-9 (UTC\$1 09:00)
+ Pacifique/Palaos (UTC\$1 09:00)
+ Asie/Chita (UTC\$1 09:00)
+ Asie/Dili (UTC\$1 09:00)
+ Asie/Jayapura (UTC\$1 09:00)
+ Asie/Yakutsk (UTC\$1 09:00)
+ Asie/Pyongyang (UTC\$1 09:00)
+ MERCREDI (UTC\$1 09:00)
+ Asie/Séoul (UTC\$1 09:00)
+ Asie/Khandyga (UTC\$1 09:00)
+ Japon (UTC\$1 09:00)
+ Asie/Tokyo (UTC\$1 09:00)
+ Australie/Eucla (UTC\$1 08:45)
+ Asie/Kuching (UTC\$1 08:00)
+ Asie/Chungking (UTC\$1 08:00)
+ Etc/GMT-8 (UTC\$1 08:00)
+ Australie/Perth (UTC\$1 08:00)
+ Asie/Macao (UTC\$1 08:00)
+ Asie/Macao (UTC\$1 08:00)
+ Asie/Choibalsan (UTC\$1 08:00)
+ Asie/Shanghai (UTC\$1 08:00)
+ Antarctique/Casey (UTC\$1 08:00)
+ Asie/Ulan\$1Bator (UTC\$1 08:00)
+ Asie/Chongqing (UTC\$1 08:00)
+ Asie/Oulan-Bator (UTC\$1 08:00)
+ Asie/Taipei (UTC\$1 08:00)
+ Asie/Manille (UTC\$1 08:00)
+ PRC (UTC\$1 08:00)
+ Asie/Ujung\$1Pandang (UTC\$1 08:00)
+ Asie/Harbin (UTC\$1 08:00)
+ Singapour (UTC\$1 08:00)
+ Asie/Brunei (UTC\$1 08:00)
+ Australie/Ouest (UTC\$1 08:00)
+ Asie/Hong\$1Kong (UTC\$1 08:00)
+ Asie/Makassar (UTC\$1 08:00)
+ Hong Kong (UTC\$1 08:00)
+ Asie/Kuala\$1Lumpur (UTC\$1 08:00)
+ Asie/Irkutsk (UTC\$1 08:00)
+ Asie/Singapour (UTC\$1 08:00)
+ Asie/Pontianak (UTC\$1 07:00)
+ Etc/GMT-7 (UTC\$1 07:00)
+ Asie/Phnom\$1Penh (UTC\$1 07:00)
+ Asie/Novossibirsk (UTC\$1 07:00)
+ Antarctique/Davis (UTC\$1 07:00)
+ Asie/Tomsk (UTC\$1 07:00)
+ Asie/Jakarta (UTC\$1 07:00)
+ Asie/Barnaoul (UTC\$1 07:00)
+ Indien/Noël (UTC\$1 07:00)
+ Asie/Ho\$1Chi\$1Minh (UTC\$1 07:00)
+ Asie/Hovd (UTC\$1 07:00)
+ Asie/Bangkok (UTC\$1 07:00)
+ Asie/Vientiane (UTC\$1 07:00)
+ Asie/Novokuznetsk (UTC\$1 07:00)
+ Asie/Krasnoïarsk (UTC\$1 07:00)
+ Asie/Saigon (UTC\$1 07:00)
+ Asie/Yangon (UTC\$1 06:30)
+ Asie/Rangoon (UTC\$1 06:30)
+ Indien/Cocos (UTC\$1 06:30)
+ Asie/Kachgar (UTC\$1 06:00)
+ Etc/GMT-6 (UTC\$1 06:00)
+ Asie/Almaty (UTC\$1 06:00)
+ Asie/Dacca (UTC\$1 06:00)
+ Asie/Omsk (UTC\$1 06:00)
+ Asie/Dhaka (UTC\$1 06:00)
+ Indien/Chagos (UTC\$1 06:00)
+ Asie/Qyzylorda (UTC\$1 06:00)
+ Asie/Bichkek (UTC\$1 06:00)
+ Antarctique/Vostok (UTC\$1 06:00)
+ Asie/Urumqi (UTC\$1 06:00)
+ Asie/Thimbu (UTC\$1 06:00)
+ Asie/Thimphou (UTC\$1 06:00)
+ Asie/Katmandou (UTC\$1 05:45)
+ Asie/Katmandou (UTC\$1 05:45)
+ Asie/Kolkata (UTC\$1 05:30)
+ Asie/Colombo (UTC\$1 05:30)
+ Asie/Calcutta (UTC\$1 05:30)
+ Asie/Aqtau (UTC\$1 05:00)
+ Etc/GMT-5 (UTC\$1 05:00)
+ Asie/Samarkand (UTC\$1 05:00)
+ Asie/Karachi (UTC\$1 05:00)
+ Asie/Ekaterinbourg (UTC\$1 05:00)
+ Asie/Douchanbé (UTC\$1 05:00)
+ Indien/Maldives (UTC\$1 05:00)
+ Asie/Oral (UTC\$1 05:00)
+ Asie/Tachkent (UTC\$1 05:00)
+ Antarctique/Mawson (UTC\$1 05:00)
+ Asie/Aqtobe (UTC\$1 05:00)
+ Asie/Ashkhabad (UTC\$1 05:00)
+ Asie/Ashgabat (UTC\$1 05:00)
+ Asie/Atyrau (UTC\$1 05:00)
+ Indien/Kerguelen (UTC\$1 05:00)
+ Iran (UTC\$1 04:30)
+ Asie/Téhéran (UTC\$1 04:30)
+ Asie/Kaboul (UTC\$1 04:30)
+ Asie/Yerevan (UTC\$1 04:00)
+ Etc/GMT-4 (UTC\$1 04:00)
+ Etc/GMT-4 (UTC\$1 04:00)
+ Asie/Dubaï (UTC\$1 04:00)
+ Indien/Réunion (UTC\$1 04:00)
+ Europe/Saratov (UTC\$1 04:00)
+ Europe/Samara (UTC\$1 04:00)
+ Indien/Mahé (UTC\$1 04:00)
+ Asie/Bakou (UTC\$1 04:00)
+ Asie/Muscat (UTC\$1 04:00)
+ Europe/Volgograd (UTC\$1 04:00)
+ Europe/Astrakhan (UTC\$1 04:00)
+ Asie/Tbilissi (UTC\$1 04:00)
+ Europe/Oulianovsk (UTC\$1 04:00)
+ Asie/Aden (UTC\$1 03:00)
+ Afrique/Nairobi (UTC\$1 03:00)
+ Europe/Istanbul (UTC\$1 03:00)
+ Etc/GMT-3 (UTC\$1 03:00)
+ Europe/Zaporijia (UTC\$1 03:00)
+ Israël (UTC\$1 03:00)
+ Indien/Comores (UTC\$1 03:00)
+ Antarctique/Syowa (UTC\$1 03:00)
+ Afrique/Mogadiscio (UTC\$1 03:00)
+ Europe/Bucarest (UTC\$1 03:00)
+ Afrique/Asmera (UTC\$1 03:00)
+ Europe/Mariehamn (UTC\$1 03:00)
+ Asie/Istanbul (UTC\$1 03:00)
+ Europe/Tiraspol (UTC\$1 03:00)
+ Europe/Moscou (UTC\$1 03:00)
+ Europe/Chişinău (UTC\$1 03:00)
+ Europe/Helsinki (UTC\$1 03:00)
+ Asie/Beyrouth (UTC\$1 03:00)
+ Asie/Tel\$1Aviv (UTC\$1 03:00)
+ Afrique/Djibouti (UTC\$1 03:00)
+ Europe/Simferopol (UTC\$1 03:00)
+ Europe/Sofia (UTC\$1 03:00)
+ Asie/Gaza (UTC\$1 03:00)
+ Afrique/Asmara (UTC\$1 03:00)
+ Europe/Riga (UTC\$1 03:00)
+ Asie/Bagdad (UTC\$1 03:00)
+ Asie/Damas (UTC\$1 03:00)
+ AFRIQUE/Dar\$1es\$1Salaam (UTC\$1 03:00)
+ Afrique/Addis\$1Abeba (UTC\$1 03:00)
+ Europe/Oujgorod (UTC\$1 03:00)
+ Asie/Jerusalem (UTC\$1 03:00)
+ Asie/Riyadh (UTC\$1 03:00)
+ Asie/Koweït (UTC\$1 03:00)
+ Europe/Kirov (UTC\$1 03:00)
+ Afrique/Kampala (UTC\$1 03:00)
+ Europe/Minsk (UTC\$1 03:00)
+ Asie/Qatar (UTC\$1 03:00)
+ Europe/Kiev (UTC\$1 03:00)
+ Asie/Bahreïn (UTC\$1 03:00)
+ Europe/Vilnius (UTC\$1 03:00)
+ Indien/Antananarivo (UTC\$1 03:00)
+ Indien/Mayotte (UTC\$1 03:00)
+ Europe/Tallinn (UTC\$1 03:00)
+ Turquie (UTC\$1 03:00)
+ Afrique/Juba (UTC\$1 03:00)
+ Asie/Nicosie (UTC\$1 03:00)
+ Asie/Famagouste (UTC\$1 03:00)
+ SAMEDI (UTC\$1 03:00)
+ RENCONTRE (UTC\$1 03:00)
+ Asie/Hébron (UTC\$1 03:00)
+ Asie/Amman (UTC\$1 03:00)
+ Europe/Nicosie (UTC\$1 03:00)
+ Europe/Athènes (UTC\$1 03:00)
+ Afrique/Le Caire (UTC\$1 02:00)
+ Afrique/Mbabane (UTC\$1 02:00)
+ Europe/Bruxelles (UTC\$1 02:00)
+ Europe/Varsovie (UTC\$1 02:00)
+ HEURE DE PARIS (UTC\$1 02:00)
+ Europe/Luxembourg (UTC\$1 02:00)
+ Etc/GMT-2 (UTC\$1 02:00)
+ Libye (UTC\$1 02:00)
+ Afrique/Kigali (UTC\$1 02:00)
+ Afrique/Tripoli (UTC\$1 02:00)
+ Europe/Kaliningrad (UTC\$1 02:00)
+ Afrique/Windhoek (UTC\$1 02:00)
+ Europe/Malte (UTC\$1 02:00)
+ Europe/Büsingen (UTC\$1 02:00)
+ 
+ Europe/Skopje (UTC\$1 02:00)
+ Europe/Sarajevo (UTC\$1 02:00)
+ Europe/Rome (UTC\$1 02:00)
+ Europe/Zürich (UTC\$1 02:00)
+ Europe/Gibraltar (UTC\$1 02:00)
+ Afrique/Lubumbashi (UTC\$1 02:00)
+ Europe/Vaduz (UTC\$1 02:00)
+ Europe/Ljubljana (UTC\$1 02:00)
+ Europe/Berlin (UTC\$1 02:00)
+ Europe/Stockholm (UTC\$1 02:00)
+ Europe/Budapest (UTC\$1 02:00)
+ Europe/Zagreb (UTC\$1 02:00)
+ Europe/Paris (UTC\$1 02:00)
+ Afrique/Ceuta (UTC\$1 02:00)
+ Europe/Praha (UTC\$1 02:00)
+ Antarctique/Troll (UTC\$1 02:00)
+ Afrique/Gaborone (UTC\$1 02:00)
+ Europe/Copenhague (UTC\$1 02:00)
+ Europe/Vienne (UTC\$1 02:00)
+ Europe/Tirana (UTC\$1 02:00)
+ MET (UTC\$1 02:00)
+ Europe/Amsterdam (UTC\$1 02:00)
+ Afrique/Maputo (UTC\$1 02:00)
+ Europe/Saint-Marin (UTC\$1 02:00)
+ Pologne (UTC\$1 02:00)
+ Europe/Andorre (UTC\$1 02:00)
+ Europe/Oslo (UTC\$1 02:00)
+ Europe/Podgorica (UTC\$1 02:00)
+ Afrique/Bujumbura (UTC\$1 02:00)
+ Atlantic/Jan\$1Mayen (UTC\$1 02:00)
+ Afrique/Maseru (UTC\$1 02:00)
+ Europe/Madrid (UTC\$1 02:00)
+ Afrique/Blantyre (UTC\$1 02:00)
+ Afrique/Lusaka (UTC\$1 02:00)
+ Afrique/Harare (UTC\$1 02:00)
+ Afrique/Khartoum (UTC\$1 02:00)
+ Afrique/Johannesburg (UTC\$1 02:00)
+ Europe/Belgrade (UTC\$1 02:00)
+ Europe/Bratislava (UTC\$1 02:00)
+ Arctic/Longyearbyen (UTC\$1 02:00)
+ Égypte (UTC\$1 02:00)
+ Europe/Vatican (UTC\$1 02:00)
+ Europe/Monaco (UTC\$1 02:00)
+ Europe/Londres (UTC\$1 01:00)
+ Etc/GMT-1 (UTC\$1 01:00)
+ Europe/Jersey (UTC\$1 01:00)
+ Europe/Guernesey (UTC\$1 01:00)
+ Europe/Isle\$1of\$1Man (UTC\$1 01:00)
+ Afrique/Tunis (UTC\$1 01:00)
+ Afrique/Malabo (UTC\$1 01:00)
+ GB-Eire (UTC\$1 01:00)
+ Afrique/Lagos (UTC\$1 01:00)
+ Afrique/Alger (UTC\$1 01:00)
+ GB (UTC\$1 01:00)
+ Portugal (UTC\$1 01:00)
+ Afrique/Sao\$1Tome (UTC\$1 01:00)
+ Afrique/Ndjamena (UTC\$1 01:00)
+ Atlantique/Féroé (UTC\$1 01:00)
+ Irlande (UTC\$1 01:00)
+ Atlantique/Féroé (UTC\$1 01:00)
+ Europe/Dublin (UTC\$1 01:00)
+ Afrique/Libreville (UTC\$1 01:00)
+ Afrique/El\$1Aaiun (UTC\$1 01:00)
+ Afrique/El\$1Aaiun (UTC\$1 01:00)
+ Afrique/Douala (UTC\$1 01:00)
+ Afrique/Brazzaville (UTC\$1 01:00)
+ Afrique/Porto-Novo (UTC\$1 01:00)
+ Atlantique/Madère (UTC\$1 01:00)
+ Europe/Lisbonne (UTC\$1 01:00)
+ Atlantique/Canaries (UTC\$1 01:00)
+ Afrique/Casablanca (UTC\$1 01:00)
+ Europe/Belfast (UTC\$1 01:00)
+ Afrique/Luanda (UTC\$1 01:00)
+ Afrique/Kinshasa (UTC\$1 01:00)
+ Afrique/Bangui (UTC\$1 01:00)
+ HUMIDE (UTC\$1 01:00)
+ Afrique/Niamey (UTC\$1 01:00)
+ GMT (UTC\$1 00:00)
+ Etc/GMT-0 (UTC\$1 00:00)
+ Atlantic/Sainte-Hélène (UTC\$1 00:00)
+ Etc/GMT\$10 (UTC\$1 00:00)
+ Afrique/Banjul (UTC\$1 00:00)
+ Etc/GMT (UTC\$1 00:00)
+ Afrique/Freetown (UTC\$1 00:00)
+ Afrique/Bamako (UTC\$1 00:00)
+ Afrique/Conakry (UTC\$1 00:00)
+ Universel (UTC\$1 00:00)
+ Afrique/Nouakchott (UTC\$1 00:00)
+ UTC (UTC\$1 00:00)
+ Etc/Universal (UTC\$1 00:00)
+ Atlantique/Açores (UTC\$1 00:00)
+ Afrique/Abidjan (UTC\$1 00:00)
+ Afrique/Accra (UTC\$1 00:00)
+ Etc/UCT (UTC\$1 00:00)
+ GMT0 (UTC\$1 00:00)
+ Zoulou (UTC\$1 00:00) Zoulou (UTC\$1 00:00)
+ Afrique/Ouagadougou (UTC\$1 00:00)
+ Atlantique/Reykjavik (UTC\$1 00:00)
+ Etc/Zoulou (UTC\$1 00:00)
+ Islande (UTC\$1 00:00)
+ Afrique/Lomé (UTC\$1 00:00)
+ Greenwich (UTC\$1 00:00)
+ Etc/ GMT0 (UTC\$1 00:00)
+ America/Danmarkshavn (UTC\$1 00:00)
+ Afrique/Dakar (UTC\$1 00:00)
+ Afrique/Bissau (UTC\$1 00:00)
+ Etc/Greenwich (UTC\$1 00:00)
+ Afrique/Tombouctou (UTC\$1 00:00)
+ UTC (UTC\$1 00:00)
+ Afrique/Monrovia (UTC\$1 00:00)
+ Etc/UTC (UTC\$1 00:00)

# Tutoriels d'expression de formules
<a name="expression-tutorials"></a>

Vous pouvez suivre ces didacticiels pour utiliser des expressions de formule dans AWS IoT SiteWise.

**Topics**
+ [Utiliser des chaînes dans les formules](#use-strings-in-formulas)
+ [Filtrer les points de données](#filter-data)
+ [Compter les points de données qui correspondent à une condition](#count-filtered-data)
+ [Données tardives dans les formules](#late-data)
+ [Qualité des données dans les formules](#data-quality)
+ [Valeurs non définies, infinies et en dépassement](#undefined-values)

## Utiliser des chaînes dans les formules
<a name="use-strings-in-formulas"></a>

Vous pouvez opérer sur des chaînes dans vos expressions de formule. Vous pouvez également saisir des chaînes à partir de variables qui font référence à des propriétés d'attribut et de mesure.

**Important**  
<a name="formula-output-rules"></a>Les expressions de formule ne peuvent générer que des valeurs doubles ou des valeurs de chaîne. Les expressions imbriquées peuvent générer d'autres types de données, tels que des chaînes, mais la formule dans son ensemble doit être évaluée à un nombre ou à une chaîne. Vous pouvez utiliser la [fonction jp](expression-string-functions.md#jp-definition) pour convertir une chaîne en nombre. La valeur booléenne doit être 1 (vrai) ou 0 (faux). Pour de plus amples informations, veuillez consulter [Valeurs non définies, infinies et en dépassement](#undefined-values).

AWS IoT SiteWise fournit les fonctionnalités d'expression de formule suivantes que vous pouvez utiliser pour agir sur des chaînes :
+ [Littéraux de chaîne](expression-literals.md#string-literal-definition)
+ L'[opérateur d'index](expression-operators.md#index-operator-definition) (`s[index]`)
+ L'[opérateur de tranche](expression-operators.md#slice-operator-definition) (`s[start:end:step]`)
+ [Fonctions de comparaison](expression-comparison-functions.md), que vous pouvez utiliser pour comparer des chaînes par ordre [lexicographique](https://en.wikipedia.org/wiki/Lexicographic_order)
+ [Fonctions de chaîne](expression-string-functions.md), qui incluent la `jp` fonction capable d'analyser des objets JSON sérialisés et de convertir des chaînes en nombres

## Filtrer les points de données
<a name="filter-data"></a>

Vous pouvez utiliser la [fonction if](expression-conditional-functions.md#if-definition) pour filtrer les points de données qui ne répondent pas à une condition. La `if` fonction évalue une condition et renvoie des valeurs `true` et des `false` résultats différents. Vous pouvez utiliser la [constante none](expression-constants.md#none-definition) comme sortie pour un cas de `if` fonction afin de supprimer le point de données correspondant à ce cas.

**Pour filtrer les points de données qui correspondent à une condition**
+ Créez une transformation qui utilise la `if` fonction pour définir une condition qui vérifie si une condition est remplie et renvoie `none` la `result_if_false` valeur `result_if_true` ou.

**Example Exemple : filtrer les points de données où l'eau ne bout pas**  
Imaginons un scénario dans lequel vous avez une mesure qui fournit la température (en degrés Celsius) de l'eau dans une machine. `temp_c` Vous pouvez définir la transformation suivante pour filtrer les points de données où l'eau n'est pas en ébullition :  
+ Transformation : `boiling_temps = if(gte(temp_c, 100), temp_c, none)` — Renvoie la température si elle est supérieure ou égale à 100 degrés Celsius, sinon elle ne renvoie aucun point de données.

## Compter les points de données qui correspondent à une condition
<a name="count-filtered-data"></a>

Vous pouvez utiliser [les fonctions de comparaison](expression-comparison-functions.md) et [sum ()](expression-aggregation-functions.md#sum-definition) pour compter le nombre de points de données pour lesquels une condition est vraie.

**Pour compter les points de données qui correspondent à une condition**

1. Créez une transformation qui utilise une fonction de comparaison pour définir une condition de filtre sur une autre propriété.

1. Créez une métrique qui additionne les points de données lorsque cette condition est remplie.

**Example Exemple : Compter le nombre de points de données où l'eau bout**  
Imaginons un scénario dans lequel vous avez une mesure qui fournit la température (en degrés Celsius) de l'eau dans une machine. `temp_c` Vous pouvez définir les propriétés de transformation et de métrique suivantes pour compter le nombre de points de données où l'eau bout :  
+ Transformation : `is_boiling = gte(temp_c, 100)` — Renvoie `1` si la température est supérieure ou égale à 100 degrés Celsius, sinon elle renvoie la valeur`0`.
+ Métrique : `boiling_count = sum(is_boiling)` — Renvoie le nombre de points de données où l'eau est en ébullition.

## Données tardives dans les formules
<a name="late-data"></a>

AWS IoT SiteWise prend en charge l'ingestion tardive de données datant de moins de 7 jours. Lorsqu'il AWS IoT SiteWise reçoit des données tardives, il recalcule les valeurs existantes pour toute métrique qui saisit les données tardives dans une fenêtre précédente. Ces nouveaux calculs entraînent des frais de traitement des données.

**Note**  
Lorsqu'il AWS IoT SiteWise calcule des propriétés qui entrent des données tardives, il utilise l'expression de formule actuelle de chaque propriété.

Après avoir AWS IoT SiteWise recalculé une fenêtre passée pour une métrique, elle remplace la valeur précédente pour cette fenêtre. Si vous avez activé les notifications pour cette métrique, émet AWS IoT SiteWise également une notification de valeur de propriété. Cela signifie que vous pouvez recevoir une nouvelle notification de mise à jour de valeur de propriété pour la même propriété et le même horodatage que ceux pour lesquels vous avez déjà reçu une notification. Si vos applications ou lacs de données utilisent des notifications de valeur de propriété, vous devez mettre à jour la valeur précédente avec la nouvelle valeur afin que leurs données soient exactes.

## Qualité des données dans les formules
<a name="data-quality"></a>

Dans AWS IoT SiteWise, chaque point de données possède un code de qualité, qui peut être l'un des suivants :
+ `GOOD`— Les données ne sont affectées par aucun problème.
+ `BAD`— Les données sont affectées par un problème tel qu'une défaillance du capteur.
+ `UNCERTAIN`— Les données sont affectées par un problème tel que l'imprécision du capteur.

AWS IoT SiteWise ne consomme que des données `GOOD` de qualité lorsqu'il calcule les transformations et les métriques. AWS IoT SiteWise ne produit que des données `GOOD` de qualité pour des calculs réussis. Si un calcul échoue, aucun point de données AWS IoT SiteWise n'est généré pour ce calcul. Cela peut se produire si un calcul aboutit à une valeur non définie, infinie ou en dépassement.

Pour de plus amples informations sur l'interrogation des données et les filtres par qualité de données, veuillez consulter [Interrogez les données de AWS IoT SiteWise](query-industrial-data.md).

## Valeurs non définies, infinies et en dépassement
<a name="undefined-values"></a>

Certaines expressions de formule (telles que `x / 0``sqrt(-1)`, ou`log(0)`) calculent des valeurs non définies dans un système de nombres réels, infinies ou situées en dehors de la plage prise en charge par AWS IoT SiteWise. Lorsque l'expression d'une propriété d'actif calcule une valeur indéfinie, infinie ou de dépassement, AWS IoT SiteWise elle ne produit aucun point de données pour ce calcul.

AWS IoT SiteWise ne produit pas non plus de point de données s'il calcule une valeur non numérique à la suite d'une expression de formule. Cela signifie que si vous définissez une formule qui calcule une chaîne, un tableau ou la [constante none](expression-constants.md#none-definition), elle AWS IoT SiteWise ne produit aucun point de données pour ce calcul.

**Example Exemples**  
Chacune des expressions de formule suivantes génère une valeur qui ne AWS IoT SiteWise peut pas être représentée sous forme de nombre. AWS IoT SiteWise ne produit pas de point de données lorsqu'il calcule ces expressions de formule.  
+ `x / 0`n'est pas défini.
+ `log(0)`n'est pas défini.
+ `sqrt(-1)`n'est pas défini dans un système de nombres réels.
+ `"hello" + " world"`est une chaîne.
+ `jp('{"values":[3,6,7]}', '$.values')`est un tableau.
+ `if(gte(temp, 300), temp, none)`c'est `none` quand `temp` est inférieur à`300`.

# Création de modèles composites personnalisés (composants)
<a name="create-custom-composite-models"></a>

Les modèles composites personnalisés, ou composants si vous utilisez la console, fournissent un autre niveau d'organisation pour vos modèles d'actifs et vos modèles de composants. Vous pouvez les utiliser pour structurer vos modèles en regroupant les propriétés ou en référençant d'autres modèles. Pour plus d'informations sur l'utilisation de modèles composites personnalisés, consultez[Modèles composites personnalisés (composants)](custom-composite-models.md).

Vous créez un modèle composite personnalisé au sein d'un modèle d'actif ou d'un modèle de composant existant. Il existe deux types de modèles composites personnalisés. Pour regrouper les propriétés associées au sein d'un modèle, vous pouvez créer un modèle composite personnalisé **en ligne**. Pour référencer un modèle de composant dans votre modèle d'actif ou de composant, vous pouvez créer un modèle composite **component-model-based**personnalisé.

Les sections suivantes décrivent comment utiliser l' AWS IoT SiteWise API pour créer des modèles composites personnalisés.

**Topics**
+ [Création d'un composant intégré (console)](#create-inline-component-console)
+ [Création d'un modèle composite personnalisé en ligne ()AWS CLI](#create-inline-composite-models-cli)
+ [Création d'un component-model-based composant (console)](#create-component-console)
+ [Création d'un modèle composite component-model-based personnalisé (AWS CLI)](#create-component-based-composite-model-cli)

## Création d'un composant intégré (console)
<a name="create-inline-component-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour créer un composant en ligne qui définit ses propres propriétés.

**Note**  
Comme il s'agit d'un *composant intégré*, ces propriétés ne s'appliquent qu'au modèle d'actif actuel et ne sont partagées nulle part ailleurs.  
Si vous devez produire un modèle réutilisable (par exemple, pour le partager entre plusieurs modèles d'actifs ou pour inclure plusieurs instances au sein d'un même modèle d'actif), vous devez plutôt créer un composant basé sur un modèle de composant. Consultez la section suivante pour plus de détails.

**Pour créer un composant (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle d'actif auquel vous souhaitez ajouter un composant.

1. Dans l'onglet **Propriétés**, sélectionnez **Composants**.

1. Choisissez **Créer un composant**.

1. Sur la page **Créer un composant**, procédez comme suit :

   1. Entrez un **nom** pour le composant, tel que **ServoMotor** ou**ServoMotor Model**. Ce nom doit être unique pour tous les composants de votre compte dans cette région.

   1. (Facultatif) Ajoutez des **définitions d'attributs** pour le modèle. Les attributs représentent des informations qui changent rarement. Pour de plus amples informations, veuillez consulter [Définir des données statiques (attributs)](attributes.md).

   1. (Facultatif) Ajoutez des **définitions de mesures** pour le modèle. Les mesures représentent des flux de données provenant de votre équipement. Pour de plus amples informations, veuillez consulter [Définir les flux de données provenant de l'équipement (mesures)](measurements.md).

   1. (Facultatif) Ajoutez des **définitions de transformations** pour le modèle. Les transformations sont des formules qui font correspondre les données d'un formulaire à un autre. Pour de plus amples informations, veuillez consulter [Transformer les données (transformations)](transforms.md).

   1. (Facultatif) Ajoutez des **définitions de métriques** pour le modèle. Les métriques sont des formules qui regroupent les données sur des intervalles de temps. Les métriques peuvent saisir des données provenant des actifs associés, afin que vous puissiez calculer des valeurs représentant votre activité ou un sous-ensemble de celle-ci. Pour de plus amples informations, veuillez consulter [Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md).

   1. Choisissez **Créer un composant**.

## Création d'un modèle composite personnalisé en ligne ()AWS CLI
<a name="create-inline-composite-models-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour créer un modèle composite personnalisé en ligne qui définit ses propres propriétés.

Utilisez cette [CreateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html)opération pour créer un modèle en ligne avec des propriétés. Cette opération attend une charge utile avec la structure suivante.

**Note**  
Comme il s'agit d'un modèle composite *en ligne*, ces propriétés ne s'appliquent qu'au modèle d'actif actuel et ne sont partagées nulle part ailleurs. Ce qui le rend « intégré », c'est qu'il ne fournit pas de valeur pour le `composedAssetModelId` champ.  
Si vous devez produire un modèle réutilisable (par exemple, pour le partager entre plusieurs modèles d'actifs ou pour inclure plusieurs instances au sein d'un même modèle d'actif), vous devez plutôt créer un modèle *component-model-based*composite. Consultez la section suivante pour plus de détails.

```
{
    "assetModelCompositeModelName": "CNCLathe_ServoMotorA",
    "assetModelCompositeModelType": "CUSTOM",
    "assetModelCompositeModelProperties": [
        {
            "dataType": "DOUBLE",
            "name": "Servo Motor Temperature",
            "type": {
            "measurement": {}
            },
            "unit": "Celsius"
        },
        {
            "dataType": "DOUBLE",
            "name": "Spindle speed",
            "type": {
            "measurement": {}
            },
            "unit": "rpm"
        }
    ]
}
```

## Création d'un component-model-based composant (console)
<a name="create-component-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour créer un composant à partir d'un modèle de composant.

**Pour créer un component-model-based composant (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle d'actif auquel vous souhaitez ajouter un composant.

1. Dans l'onglet **Propriétés**, sélectionnez **Composants**.

1. Choisissez **Créer un composant**.

1. Sur la page **Créer un composant**, procédez comme suit :

   1. Sélectionnez le modèle de composant sur lequel vous souhaitez baser le composant.

   1. Entrez un **nom** pour le composant, tel que **ServoMotor** ou**ServoMotor Model**. Ce nom doit être unique pour tous les composants de votre compte dans cette région.

   1. Choisissez **Créer un composant**.

## Création d'un modèle composite component-model-based personnalisé (AWS CLI)
<a name="create-component-based-composite-model-cli"></a>

Vous pouvez utiliser le AWS CLI pour créer un modèle composite component-model-based personnalisé au sein de votre modèle d'actif. Un modèle composite component-model-based personnalisé est une référence à un modèle de composant que vous avez déjà défini ailleurs.

Utilisez cette [CreateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html)opération pour créer un modèle composite component-model-based personnalisé. Cette opération attend une charge utile avec la structure suivante.

**Note**  
Dans cet exemple, la valeur de `composedAssetModelId` est l'ID du modèle d'actif ou l'ID externe d'un modèle de composant existant. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *. Pour un exemple de création d'un modèle de composant, consultez[Création d'un modèle de composant (AWS CLI)](create-component-models.md#create-component-model-cli).

```
{
    "assetModelCompositeModelName": "CNCLathe_ServoMotorA",
    "assetModelCompositeModelType": "CUSTOM",
    "composedAssetModelId": component model ID
]
```

Comme il ne s'agit que d'une référence, un modèle composite component-model-based personnalisé ne possède aucune propriété propre, à part un nom.

Si vous souhaitez ajouter plusieurs instances du même composant à votre modèle d'actif (par exemple, une machine CNC dotée de plusieurs servomoteurs), vous pouvez ajouter plusieurs modèles composites component-model-based personnalisés portant chacun leur propre nom mais faisant tous référence au même`composedAssetModelId`.

Vous pouvez imbriquer des composants dans d'autres composants. Pour ce faire, vous pouvez ajouter un modèle component-model-based composite, comme indiqué dans cet exemple, à l'un de vos modèles de composants.

# Créez des actifs pour les modèles d'actifs dans AWS IoT SiteWise
<a name="create-assets"></a>

Vous pouvez créer une ressource à partir d'un modèle de ressource. Vous devez disposer d'un modèle de ressource avant de pouvoir créer une ressource. Si vous n'avez pas encore créé de modèle de ressource, veuillez consulter [Créez des modèles d'actifs dans AWS IoT SiteWise](create-asset-models.md). 

**Note**  
Vous pouvez uniquement créer des ressources à partir de modèles `ACTIVE`. Si l'état de votre modèle n'est pas `ACTIVE`, vous devrez peut-être attendre quelques minutes avant de pouvoir créer des ressources à partir de ce modèle. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

**Topics**
+ [Création d'un actif (console)](#create-asset-console)
+ [Création d'un actif (AWS CLI)](#create-asset-cli)
+ [Configuration d'un nouvel actif](create-asset-next-steps.md)

## Création d'un actif (console)
<a name="create-asset-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour créer un actif.

**Pour créer une ressource (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Dans le panneau de navigation, choisissez **Ressources**.

1. Choisissez **Create asset (Créer une ressource)**.

1. Sur la page **Créer une ressource**, procédez comme suit :

   1. Pour **Modèle**, choisissez le modèle de ressource à partir duquel créer une ressource.
**Note**  
Si votre modèle n'est pas **ACTIF**, vous devez attendre qu'il soit actif ou résoudre des problèmes s'il indique **ÉCHEC**.

   1. Saisissez un **nom** pour votre ressource.

   1. (Facultatif) Ajoutez des balises pour votre ressource. Pour de plus amples informations, veuillez consulter [Marquez vos AWS IoT SiteWise ressources](tag-resources.md).

   1. Choisissez **Create asset (Créer une ressource)**.

   Lorsque vous créez un actif, la AWS IoT SiteWise console accède à la page du nouvel actif. Sur cette page, vous pouvez voir l’**état** de la ressource, qui est initialement **CRÉATION**. Cette page est automatiquement mise à jour, de sorte que vous pouvez attendre la mise à jour de l'état de la ressource.
**Note**  
Le processus de création des ressources peut prendre jusqu'à une minute. Une fois que le **statut** est **ACTIF**, vous pouvez effectuer des opérations de mise à jour sur votre actif. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

Après avoir créé une ressource, veuillez consulter [Configuration d'un nouvel actif](create-asset-next-steps.md).

## Création d'un actif (AWS CLI)
<a name="create-asset-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour créer un actif à partir d'un modèle d'actif.

Vous devez avoir un `assetModelId` pour créer une ressource. Si vous avez créé un modèle d'actif, mais que vous ne le connaissez pas`assetModelId`, utilisez l'[ListAssetModels](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html)API pour afficher tous vos modèles d'actifs.

Pour créer un actif à partir d'un modèle d'actif, utilisez l'[CreateAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAsset.html)API avec les paramètres suivants :
+ `assetName`— Le nom du nouvel actif. Donnez un nom à votre actif pour vous aider à l'identifier.
+ `assetModelId`— L'ID de l'actif. Il s'agit de l'identifiant réel au format UUID, ou du `externalId:myExternalId` s'il en possède un. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

**Pour créer un actif (AWS CLI)**
+ Exécutez la commande suivante pour créer une ressource. *asset-name*Remplacez-le par le nom de l'actif et *asset-model-id* par l'ID ou l'ID externe du modèle d'actif. 

  ```
  aws iotsitewise create-asset \
    --asset-name asset-name \
    --asset-model-id asset-model-id
  ```

  L'opération renvoie une réponse qui contient les détails de votre nouvelle ressource et son état au format suivant.

  ```
  {
    "assetId": "String",
    "assetArn": "String",
    "assetStatus": {
      "state": "String",
      "error": {
        "code": "String",
        "message": "String"
      }
    }
  }
  ```

  L'`state` de la ressource est `CREATING` jusqu'à ce que la ressource soit créée.
**Note**  
Le processus de création des ressources peut prendre jusqu'à une minute. Pour vérifier l'état de votre actif, utilisez l'[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)opération avec l'ID de votre actif comme `assetId` paramètre. Une fois que l'actif `state` est en `ACTIVE` place, vous pouvez effectuer des opérations de mise à jour sur celui-ci. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

Après avoir créé une ressource, veuillez consulter [Configuration d'un nouvel actif](create-asset-next-steps.md).

# Configuration d'un nouvel actif
<a name="create-asset-next-steps"></a>

Après avoir créé un actif dans AWS IoT SiteWise, vous pouvez suivre plusieurs étapes pour utiliser pleinement l'actif et ses données. Ces étapes peuvent inclure la configuration de flux de données pour ingérer les données de l'actif, la configuration d'alarmes et de notifications pour surveiller les performances de l'actif, la création de visualisations et de tableaux de bord pour afficher les données de l'actif, et l'intégration de l'actif à d'autres AWS services ou applications tierces pour une analyse ou une automatisation plus poussées.

Terminez la configuration de votre actif avec les actions facultatives suivantes :
+ [Gérez les flux de données pour AWS IoT SiteWise](manage-data-streams.md) si votre ressource possède des propriétés de mesure.
+ [Mettre à jour les valeurs des attributs](update-attribute-values.md) si la ressource comporte des valeurs d'attribut uniques.
+ [Associer et dissocier des actifs](add-associated-assets.md) si votre ressource est une ressource parent.

# Rechercher des actifs sur Console AWS IoT SiteWise
<a name="asset-search"></a>

Utilisez la fonctionnalité Console AWS IoT SiteWise de recherche pour trouver des actifs en fonction des métadonnées et des filtres de valeur des propriétés en temps réel.

## Conditions préalables
<a name="prereqs-search"></a>

 AWS IoT SiteWise nécessite des autorisations d'intégration AWS IoT TwinMaker afin de mieux organiser et modéliser les données industrielles. Si vous avez accordé des autorisations à AWS IoT SiteWise, utilisez l'[ExecuteQuery](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExecuteQuery.html)API. Si vous n'avez pas accordé d' AWS IoT SiteWise autorisations et que vous avez besoin d'aide pour démarrer, consultez[Intégrer AWS IoT SiteWise et AWS IoT TwinMaker](integrate-tm.md).

## Recherche avancée sur Console AWS IoT SiteWise
<a name="advanced-search"></a>

### Recherche de métadonnées
<a name="advanced-metadata-search"></a>

1. Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Dans le volet de navigation, sélectionnez **Recherche avancée** sous **Ressources**.

1. Sous **Recherche avancée**, choisissez l'option **de recherche par métadonnées**.

1. Renseignez les paramètres. Remplissez autant de champs que possible pour une recherche efficace.

   1. **Nom de la ressource** : entrez le nom complet de la ressource ou un nom partiel pour une recherche étendue.

   1. **Nom de la propriété** : entrez le nom complet de la propriété ou un nom partiel pour une recherche étendue.

   1. **Opérateur** — Choisissez un opérateur parmi :
      + **=**
      + **<**
      + **>**
      + **<=**
      + **>=**

   1. **Valeur de la propriété** : cette valeur est comparée à la dernière valeur de la propriété.

   1. **Type de valeur de propriété** : type de données de la propriété. Choisissez parmi les options suivantes :
      + **Double\$1**
      + **Integer**
      + **String**
      + **Booléen**

1. Choisissez **Rechercher**.

1. Dans le tableau **des résultats de recherche**, sélectionnez l'actif dans la colonne **Nom**. Cela vous amène à la page détaillée de l'actif en question.

![\[résultats de recherche de métadonnées.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/search_results_all_fields.png)


#### Recherche partielle
<a name="advanced-metadata-partial-search"></a>

Il n'est pas nécessaire de fournir tous les paramètres pour une recherche de ressources. Voici quelques exemples de recherches partielles à l'aide de l'option de recherche de métadonnées :
+ Trouvez les actifs par leur nom :
  + Entrez une valeur uniquement dans le champ **Nom de l'actif**.
  + Les champs **Nom** de la **propriété et Valeur** de la propriété sont vides.
+ Trouvez des actifs contenant des propriétés portant un nom spécifique :
  + Entrez une valeur uniquement dans le champ **Nom de la propriété**.
  + Les champs **Nom de l'actif** et **Valeur de la propriété** sont vides.
+ Trouvez des actifs en fonction des dernières valeurs de leurs propriétés :
  + Entrez des valeurs dans les champs **Nom** de la **propriété et Valeur** de la propriété.
  + Sélectionnez un **opérateur** et un **type de valeur de propriété**.

### Recherche dans le générateur de requêtes
<a name="query-builder-search"></a>

1. Accédez à Console AWS IoT SiteWise.

1. Dans le volet de navigation, sélectionnez **Recherche avancée** sous **Ressources**.

1. Sous **Recherche avancée**, choisissez l'option **Générateur de requêtes**.

1. Dans le volet **Générateur de requêtes**, écrivez votre requête SQL pour récupérer un `asset_name` `asset_id` et`asset_description`.

1. Choisissez **Rechercher**.

1. Dans le tableau **des résultats de recherche**, sélectionnez l'actif dans la colonne **Nom**. Cela vous amène à la page détaillée de l'actif en question.

![\[résultats de recherche du générateur de requêtes.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/search_results_sql_query.png)


**Note**  
 La `SELECT` clause de la requête SQL doit inclure les `asset_id` champs `asset_name` et pour garantir la validité d'un actif dans la table des **résultats de recherche**. 
 Le **générateur de requêtes** affiche uniquement le **nom**, l'**identifiant de l'actif** et la **description** dans le tableau des résultats. L'ajout de champs supplémentaires à la `SELECT` clause n'ajoute pas de colonnes supplémentaires à la table de résultats 

# Mettre à jour les valeurs des attributs
<a name="update-attribute-values"></a>

Les ressources héritent des attributs de leur modèle de ressource, y compris la valeur par défaut de l'attribut. Dans certains cas, il vaudra mieux conserver l'attribut par défaut du modèle de ressource, par exemple pour une propriété de fabricant de ressource. Dans d'autres cas, il vaudra mieux actualiser l'attribut hérité, par exemple pour la latitude et la longitude spécifiques d'une ressource. 

------
#### [ Updating an attribute value (console) ]

Vous pouvez utiliser la AWS IoT SiteWise console pour mettre à jour la valeur d'une propriété d'actif attributaire.

**Pour mettre à jour la valeur d'un attribut (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Dans le panneau de navigation, choisissez **Ressources**.

1. Choisissez la ressource pour laquelle vous souhaitez mettre à jour un attribut.
**Astuce**  <a name="sitewise-expand-asset-hierarchy"></a>
Vous pouvez cliquer sur l'icône en forme de flèche pour développer une hiérarchie de ressources afin de trouver votre ressource.

1. Choisissez **Modifier**.

1. Recherchez l'attribut à mettre à jour, puis saisissez sa nouvelle valeur.  
![\[AWS IoT SiteWise Capture d'écran de la page « Modifier un actif » avec une valeur d'attribut surlignée.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/sitewise-update-asset-attribute-console.png)

1. Choisissez **Enregistrer**.

------
#### [ Updating an attribute value (AWS CLI) ]

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour mettre à jour la valeur d'un attribut.

Vous devez connaître l'`assetId` de votre ressource et le `propertyId`de la propriété pour effectuer cette procédure. Vous pouvez également utiliser l'identifiant externe. Si vous avez créé un actif et que vous ne le connaissez pas`assetId`, utilisez l'[ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html)API pour répertorier tous les actifs d'un modèle spécifique. Utilisez cette [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)opération pour afficher les propriétés de votre actif, y compris les propriétés IDs.

Utilisez l'opération [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) pour affecter des valeurs d'attributs à votre ressource. Vous pouvez utiliser cette opération pour définir plusieurs attributs à la fois. La charge utile de cette opération contient une liste d'entrées, chacune contenant l'ID de ressource, l'ID de propriété et la valeur d'attribut.<a name="attribute-id-update-cli"></a>

**Pour mettre à jour la valeur d'un attribut (AWS CLI)**

1. Créez un fichier nommé `batch-put-payload.json` et copiez l'objet JSON suivant dans le fichier. Cet exemple de charge utile montre comment définir la latitude et la longitude d'une éolienne. Mettez à jour IDs les valeurs et les horodatages pour modifier la charge utile en fonction de votre cas d'utilisation.

   ```
   {
     "entries": [
       {
         "entryId": "windfarm3-turbine7-latitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 47.6204
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       },
       {
         "entryId": "windfarm3-turbine7-longitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-55555EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 122.3491
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       }
     ]
   }
   ```
   + Chaque entrée de la charge utile contient un `entryId` que vous pouvez définir sous la forme d'une chaîne unique. Si des entrées de demande échouent, chaque erreur contiendra l'`entryId` de la demande correspondante afin que vous sachiez quelles demandes réessayer.
   + Pour définir une valeur d'attribut, vous pouvez inclure une structure timestamp-quality-value (TQV) dans la liste de chaque propriété `propertyValues` d'attribut. Cette structure doit contenir le nouveau `value` et le `timestamp` actuel.
     + `value`— Structure contenant l'un des champs suivants, en fonction du type de propriété défini :
       + `booleanValue`
       + `doubleValue`
       + `integerValue`
       + `stringValue`
       + `nullValue`
     + `timestamp`— Une structure qui contient l'heure actuelle d'Unix en secondes,. `timeInSeconds` AWS IoT SiteWise rejette tous les points de données dont l'horodatage existait depuis plus de 7 jours ou moins de 5 minutes dans le futur.

   Pour de plus amples informations sur la préparation d'une charge utile pour [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html), veuillez consulter [Ingérez des données avec AWS IoT SiteWise APIs](ingest-api.md).

1. Exécutez la commande suivante pour envoyer les valeurs d'attribut à AWS IoT SiteWise :

   ```
   aws iotsitewise batch-put-asset-property-value -\-cli-input-json file://batch-put-payload.json
   ```

------

# Associer et dissocier des actifs
<a name="add-associated-assets"></a>

Si le modèle de votre ressource définit des hiérarchies de modèles de ressources enfants, vous pouvez associer des ressources enfants à votre ressource. Les ressources parents peuvent accéder aux données des ressources associées et les agréger. Pour de plus amples informations sur les modèles de ressources hiérarchiques, veuillez consulter [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md). Si vous utilisez des interfaces, les hiérarchies définies dans l'interface sont appliquées aux modèles d'actifs qui implémentent l'interface. Pour plus d'informations sur les interfaces, consultez[Interfaces de modèles d'actifs](model-interfaces.md).

**Topics**
+ [Associer et dissocier des actifs (console)](#associate-asset-console)
+ [Associer et dissocier des actifs ()AWS CLI](#associate-asset-cli)

## Associer et dissocier des actifs (console)
<a name="associate-asset-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour associer et dissocier des actifs.

**Pour associer une ressource (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Dans le panneau de navigation, choisissez **Ressources**.

1. Choisissez la ressource parent à laquelle vous souhaitez associer une ressource enfant.
**Astuce**  <a name="sitewise-expand-asset-hierarchy"></a>
Vous pouvez cliquer sur l'icône en forme de flèche pour développer une hiérarchie de ressources afin de trouver votre ressource.

1. Choisissez **Modifier**.

1. Dans **Ressources associées à cette ressource**, choisissez **Ajouter une ressource associée**.  
![\[La page AWS IoT SiteWise Modifier un actif avec le texte de ce champ : Ajouter un actif associé.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/sitewise-associate-asset-console.png)

1. Pour **Hiérarchie**, choisissez la hiérarchie qui définit la relation entre la ressource parent et la ressource enfant.

1. Pour **Ressource**, choisissez la ressource enfant à associer.

1. Choisissez **Enregistrer**.

**Pour dissocier une ressource (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Dans le panneau de navigation, choisissez **Ressources**.

1. Choisissez la ressource parent pour laquelle vous souhaitez dissocier une ressource enfant.
**Astuce**  <a name="sitewise-expand-asset-hierarchy"></a>
Vous pouvez cliquer sur l'icône en forme de flèche pour développer une hiérarchie de ressources afin de trouver votre ressource.

1. Choisissez **Modifier**.

1. Dans **Ressources associées à cette ressource**, choisissez **Dissocier** pour la ressource.  
![\[AWS IoT SiteWise Capture d'écran de la page « Modifier un actif » avec « Dissocier » surligné.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/sitewise-disassociate-asset-console.png)

1. Choisissez **Enregistrer**.

## Associer et dissocier des actifs ()AWS CLI
<a name="associate-asset-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour associer et dissocier des actifs.

Pour cette procédure, vous devez connaître l'ID de la hiérarchie (`hierarchyId`) dans le modèle de ressource parent qui définit la relation avec le modèle de ressource enfant. Utilisez l'[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)opération pour trouver l'ID de hiérarchie dans la réponse.

**Pour rechercher un ID de hiérarchie**
+ Exécutez la commande suivante pour décrire la ressource parent. Remplacez *parent-asset-id* par l'ID de la ressource parent ou par l'ID externe.

  ```
  aws iotsitewise describe-asset --asset-id parent-asset-id
  ```

  L'opération renvoie une réponse qui contient les détails de la ressource. La réponse contient une `assetHierarchies` liste dont la structure est la suivante :

  ```
  {
    ...
    "assetHierarchies": [
      {
        "id": "String",
        "name": "String"
      }
    ],
    ...
  }
  ```

  L'ID de hiérarchie est la valeur `id` d'une hiérarchie dans la liste des hiérarchies de ressources.

Une fois que vous avez l'ID de hiérarchie, vous pouvez associer ou dissocier une ressource à/de cette hiérarchie.

Pour associer un actif enfant à un actif parent, utilisez l'[AssociateAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssociateAssets.html)opération. Pour dissocier un actif enfant d'un actif parent, utilisez l'[DisassociateAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DisassociateAssets.html)opération. Spécifiez les paramètres suivants, qui sont les mêmes pour les deux opérations :
+ `assetId`— L'ID de l'actif parent ou l'ID externe.
+ `hierarchyId`— L'ID de hiérarchie ou l'ID externe de la ressource parent.
+ `childAssetId`— L'identifiant ou l'identifiant externe de l'actif enfant.

**Pour associer un actif (AWS CLI)**
+ Exécutez la commande suivante pour associer une ressource enfant à une ressource parent. Remplacez *parent-asset-id**hierarchy-id*, et *child-asset-id* par le correspondant IDs :

  ```
  aws iotsitewise associate-assets \
    --asset-id parent-asset-id \
    --hierarchy-id hierarchy-id \
    --child-asset-id child-asset-id
  ```

**Pour dissocier un actif ()AWS CLI**
+ Exécutez la commande suivante pour dissocier une ressource enfant d'une ressource parent. Remplacez *parent-asset-id**hierarchy-id*, et *child-asset-id* par le correspondant IDs :

  ```
  aws iotsitewise disassociate-assets \
    --asset-id parent-asset-id \
    --hierarchy-id hierarchy-id \
    --child-asset-id child-asset-id
  ```

# Mettre à jour les actifs et les modèles
<a name="update-assets-and-models"></a>

Vous pouvez mettre à jour vos actifs, modèles d'actifs, modèles de composants et interfaces AWS IoT SiteWise afin de modifier leurs noms et leurs définitions. Ces opérations de mise à jour sont asynchrones et leur propagation prend du temps. AWS IoT SiteWise Vérifiez l'état de l'actif ou du modèle avant d'apporter des modifications supplémentaires. Vous devez attendre que les modifications soient propagées avant de continuer à utiliser la ressource ou le modèle mis à jour.

**Topics**
+ [Mettre à jour les actifs dans AWS IoT SiteWise](update-assets.md)
+ [Mettre à jour les modèles d'actifs, les modèles de composants et les interfaces](update-asset-models.md)
+ [Mettre à jour des modèles composites personnalisés (composants)](update-custom-composite-models.md)
+ [Verrouillage optimiste pour les écrits sur le modèle d'actifs](opt-locking-for-model.md)

# Mettre à jour les actifs dans AWS IoT SiteWise
<a name="update-assets"></a>

Vous pouvez utiliser la AWS IoT SiteWise console ou l'API pour mettre à jour le nom d'un actif.

Lorsque vous mettez à jour une ressource, son statut est maintenu `UPDATING` jusqu'à ce que les modifications se propagent. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

**Topics**
+ [Mettre à jour un actif (console)](#update-asset-console)
+ [Mettre à jour un actif (AWS CLI)](#update-asset-cli)

## Mettre à jour un actif (console)
<a name="update-asset-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour mettre à jour les détails des actifs.

**Pour mettre à jour une ressource (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Dans le panneau de navigation, choisissez **Ressources**.

1. Choisissez la ressource à mettre à jour.
**Astuce**  <a name="sitewise-expand-asset-hierarchy"></a>
Vous pouvez cliquer sur l'icône en forme de flèche pour développer une hiérarchie de ressources afin de trouver votre ressource.

1. Choisissez **Modifier**.

1. Mettez à jour le **nom**de la ressource.

1. (Facultatif) Sur cette page, mettez à jour les autres informations relatives à la ressource. Pour plus d’informations, consultez les ressources suivantes :
   + [Gérez les flux de données pour AWS IoT SiteWise](manage-data-streams.md)
   + [Mettre à jour les valeurs des attributs](update-attribute-values.md)
   + [Interagissez avec d'autres AWS services](interact-with-other-services.md)

1. Choisissez **Enregistrer**.

## Mettre à jour un actif (AWS CLI)
<a name="update-asset-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour mettre à jour le nom d'un actif.

Utilisez cette [UpdateAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAsset.html)opération pour mettre à jour un actif. Spécifiez les paramètres suivants :
+ `assetId`— L'ID de l'actif. Il s'agit de l'identifiant réel au format UUID, ou du `externalId:myExternalId` s'il en possède un. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.
+ `assetName`— Le nouveau nom de l'actif.

**Pour mettre à jour le nom d'un actif (AWS CLI)**
+ Exécutez la commande suivante pour mettre à jour le nom d'une ressource. Remplacez *asset-id* par l'ID ou l'ID externe de la ressource. Mettez à jour le *asset-name* avec le nouveau nom de l'actif.

  ```
  aws iotsitewise update-asset \
    --asset-id asset-id \
    --asset-name asset-name
  ```

# Mettre à jour les modèles d'actifs, les modèles de composants et les interfaces
<a name="update-asset-models"></a>

Utilisez la AWS IoT SiteWise console ou l'API pour mettre à jour un modèle d'actif, un modèle de composant ou une interface.

Vous ne pouvez pas modifier le type ou le type de données d'une propriété existante, ni la fenêtre d'une métrique existante. Vous ne pouvez pas non plus modifier le type du modèle d'actif en modèle de composant ou d'interface, ou inversement.

**Important**  
Si vous supprimez une propriété d'un modèle de ressource ou d'un modèle de composant, toutes les AWS IoT SiteWise données précédentes relatives à cette propriété sont supprimées. Pour les modèles de composants, cela concerne **tous les modèles d'actifs utilisant ce modèle de composant**. Veillez donc particulièrement à comprendre dans quelle mesure votre modification peut s'appliquer.
Si vous supprimez une définition de hiérarchie d'un modèle d'actifs, AWS IoT SiteWise dissociez tous les actifs de cette hiérarchie.

Lorsque vous mettez à jour un modèle de ressource, chaque ressource basée sur ce modèle reflète toutes les modifications que vous apportez au modèle sous-jacent. Jusqu'à ce que les modifications se propagent, l'état de chaque ressource est `UPDATING`. Attendez que l'état des ressources passe à `ACTIVE` pour pouvoir interagir avec elles. Pendant ce temps, le statut du modèle de ressource mis à jour est `PROPAGATING`.

Lorsque vous mettez à jour un modèle de composant, chaque modèle d'actif qui intègre ce modèle de composant reflète les modifications. Jusqu'à ce que les modifications du modèle de composant se propagent, chaque modèle d'actif concerné possède l'`UPDATING`état, suivi `PROPAGATING` de la mise à jour de ses actifs associés, comme décrit dans le paragraphe précédent. Vous devez attendre que ces modèles d'actifs reviennent à leur `ACTIVE` état normal avant d'interagir avec eux. Pendant ce temps, le statut du modèle de composant mis à jour sera`PROPAGATING`.

Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

**Topics**
+ [Mise à jour d'un modèle d'actif, d'un modèle de composant ou d'une interface (console)](#update-asset-model-console)
+ [Mettre à jour un modèle d'actif, un modèle de composant ou une interface (AWS CLI)](#update-asset-model-cli)

## Mise à jour d'un modèle d'actif, d'un modèle de composant ou d'une interface (console)
<a name="update-asset-model-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour mettre à jour un modèle de ressource, un modèle de composant ou une interface.

**Pour mettre à jour un modèle d'actif, un modèle de composant ou une interface (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle de ressource, le modèle de composant ou l'interface à mettre à jour.

1. Choisissez **Modifier**.

1. Sur la page **Modifier le modèle**, effectuez l'une des opérations suivantes :
   + Dans **Informations relatives au modèle**, modifiez le **nom** du modèle.
   + Modifiez l'une des **définitions d'attribut**. Vous ne pouvez pas modifier le **type de données** des attributs existants. Pour de plus amples informations, veuillez consulter [Définir des données statiques (attributs)](attributes.md).
   + Modifiez l'une des **définitions de mesure**. Vous ne pouvez pas modifier le **type de données** des mesures existantes. Pour de plus amples informations, veuillez consulter [Définir les flux de données provenant de l'équipement (mesures)](measurements.md).
   + Modifiez l'une des **définitions de transformation**. Pour de plus amples informations, veuillez consulter [Transformer les données (transformations)](transforms.md).
   + Modifiez l'une des **définitions de métrique**. Vous ne pouvez pas modifier l'**intervalle de temps** des métriques existantes. Pour de plus amples informations, veuillez consulter [Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md).
   + (Modèles d'actifs uniquement) Modifiez l'une des **définitions de hiérarchie**. Vous ne pouvez pas modifier le **modèle de hiérarchie** des hiérarchies existantes. Pour de plus amples informations, veuillez consulter [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md).

1. Choisissez **Enregistrer**.

**Note**  
 Les demandes de mise à jour effectuées dans la console sont rejetées si un autre utilisateur met à jour le modèle de ressource avec succès depuis que vous avez ouvert la page **Modifier le modèle** pour la dernière fois. La console invite l'utilisateur à **actualiser** la page **Modifier le modèle** pour récupérer le modèle mis à jour. Vous devez effectuer à nouveau vos mises à jour, puis réessayer de sauvegarder. Pour plus d’informations, consultez [Verrouillage optimiste pour les écrits sur le modèle d'actifs](opt-locking-for-model.md). 

## Mettre à jour un modèle d'actif, un modèle de composant ou une interface (AWS CLI)
<a name="update-asset-model-cli"></a>

Utilisez le AWS Command Line Interface (AWS CLI) pour mettre à jour un modèle d'actif, un modèle de composant ou une interface.

Utilisez l'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API pour mettre à jour le nom, la description et les propriétés d'un modèle d'actif, d'un modèle de composant ou d'une interface. Pour les modèles d'actifs uniquement, vous pouvez mettre à jour les hiérarchies. Pour les interfaces, vous pouvez mettre à jour les propriétés et les hiérarchies. Spécifiez les paramètres suivants :
+ `assetModelId`— L'ID de l'actif. Il s'agit de l'identifiant réel au format UUID, ou du `externalId:myExternalId` s'il en possède un. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

Spécifiez le modèle mis à jour dans la charge utile. Pour en savoir plus sur le format attendu d'un modèle d'actif ou d'un modèle de composant, voir[Créez des modèles d'actifs dans AWS IoT SiteWise](create-asset-models.md). 

**Avertissement**  
L'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API remplace le modèle existant par le modèle que vous fournissez dans la charge utile. Pour éviter de supprimer les propriétés ou les hiérarchies de votre modèle, vous devez inclure leurs définitions IDs et leurs propriétés dans la charge utile du modèle mise à jour. Pour savoir comment interroger la structure existante de votre modèle, consultez l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération.

**Note**  
La procédure suivante ne permet de mettre à jour que les modèles composites de type`AWS/ALARM`. Si vous souhaitez mettre à jour des modèles `CUSTOM` composites, utilisez [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)plutôt. Pour de plus amples informations, veuillez consulter [Mettre à jour des modèles composites personnalisés (composants)](update-custom-composite-models.md).

**Pour mettre à jour un modèle d'actif ou un modèle de composant (AWS CLI)**

1. Exécutez la commande suivante pour récupérer la définition du modèle existant. *asset-model-id*Remplacez-le par l'ID ou l'ID externe du modèle d'actif ou du modèle de composant à mettre à jour.

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id
   ```

   La commande ci-dessus renvoie la définition du modèle correspondant à la dernière version du modèle.

    Dans le cas d'utilisation où un modèle d'actif est dans un `FAILED` état, récupérez la définition de modèle valide correspondant à sa version active pour créer votre demande de mise à jour. Consultez [Versions du modèle d'actifs](model-active-version.md) pour plus de détails. Exécutez la commande suivante pour récupérer la définition du modèle actif :

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id --asset-model-version ACTIVE 
   ```

   L'opération renvoie une réponse contenant les détails du modèle. La réponse présente la structure suivante.

   ```
   {
       "assetModelId": "String",
       "assetModelArn": "String",
       "assetModelName": "String",
       "assetModelDescription": "String",
       "assetModelProperties": Array of AssetModelProperty,
       "assetModelHierarchies": Array of AssetModelHierarchyDefinition,
       "assetModelCompositeModels": Array of AssetModelCompositeModel,
       "assetModelCompositeModelSummaries": Array of AssetModelCompositeModelSummary,
       "assetModelCreationDate": "String",
       "assetModelLastUpdateDate": "String",
       "assetModelStatus": {
         "state": "String",
         "error": {
           "code": "String",
           "message": "String"
         },
       "assetModelType": "String"
       },
       "assetModelVersion": "String",
       "eTag": "String"
   }
   ```

   Pour plus d'informations, consultez l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération.

1. Créez un fichier appelé `update-asset-model.json` et copiez la réponse de la commande précédente dans le fichier.

1. Supprimez les paires clé-valeur suivantes de l'objet JSON dans `update-asset-model.json` :
   + `assetModelId`
   + `assetModelArn`
   + `assetModelCompositeModelSummaries`
   + `assetModelCreationDate`
   + `assetModelLastUpdateDate`
   + `assetModelStatus`
   + `assetModelType`
   + `assetModelVersion`
   + `eTag`

   L'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)opération attend une charge utile dont la structure est la suivante :

   ```
   {
     "assetModelName": "String",
     "assetModelDescription": "String",
     "assetModelProperties": Array of AssetModelProperty,
     "assetModelHierarchies": Array of AssetModelHierarchyDefinition,
     "assetModelCompositeModels": Array of AssetModelCompositeModel
   }
   ```

1. Dans `update-asset-model.json`, effectuez l’une des actions suivantes :
   + Modifiez le nom du modèle de ressource (`assetModelName`).
   + Modifiez, ajoutez ou supprimez la description du modèle de ressource (`assetModelDescription`).
   + Modifiez, ajoutez ou supprimez les propriétés du modèle de ressource (`assetModelProperties`). Vous ne pouvez pas modifier le `dataType` des propriétés existantes ou le `window` des métriques existantes. Pour de plus amples informations, veuillez consulter [Définir les propriétés des données](asset-properties.md).
   + Modifiez, ajoutez ou supprimez les hiérarchies du modèle de ressource (`assetModelHierarchies`). Vous ne pouvez pas modifier le `childAssetModelId` des hiérarchies existantes. Pour de plus amples informations, veuillez consulter [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md).
   + Modifiez, ajoutez ou supprimez l'un des modèles composites de type `AWS/ALARM` (`assetModelCompositeModels`) du modèle d'actifs. Les alarmes surveillent d'autres propriétés afin que vous puissiez identifier les équipements ou les processus nécessitant une attention particulière. Chaque définition d'alarme est un modèle composite qui normalise l'ensemble de propriétés utilisées par l'alarme. Pour plus d’informations, consultez [Surveillez les données avec des alarmes AWS IoT SiteWise](industrial-alarms.md) et [Définissez des alarmes sur les modèles d'actifs dans AWS IoT SiteWise](define-alarms.md).

1. Exécutez la commande suivante pour mettre à jour le modèle de ressource avec la définition stockée dans `update-asset-model.json`. Remplacez *asset-model-id* par l'ID du modèle d'actif :

   ```
   aws iotsitewise update-asset-model \
     --asset-model-id asset-model-id \
     --cli-input-json file://model-payload.json
   ```

**Important**  
 Lorsque plusieurs utilisateurs mettent à jour un modèle d'actif en même temps, les modifications apportées par un utilisateur peuvent être annulées par inadvertance par un autre utilisateur. Pour éviter cela, vous devez définir une demande de mise à jour conditionnelle. Consultez [Verrouillage optimiste pour les écrits sur le modèle d'actifs](opt-locking-for-model.md). 

# Mettre à jour des modèles composites personnalisés (composants)
<a name="update-custom-composite-models"></a>

Vous pouvez utiliser l' AWS IoT SiteWise API pour mettre à jour un modèle composite personnalisé ou la AWS IoT SiteWise console pour mettre à jour les composants.

**Topics**
+ [Mettre à jour un composant (console)](#update-custom-composite-model-console)
+ [Mettre à jour un modèle composite personnalisé (AWS CLI)](#update-custom-composite-model-cli)

## Mettre à jour un composant (console)
<a name="update-custom-composite-model-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour mettre à jour un composant.

**Pour mettre à jour un composant (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle d'actif dans lequel se trouve le composant.

1. Dans l'onglet **Propriétés**, sélectionnez **Composants**.

1. Choisissez le composant que vous souhaitez mettre à jour.

1. Choisissez **Modifier**.

1. Sur la page **Modifier le composant**, effectuez l'une des opérations suivantes :
   + Dans **Informations relatives au modèle**, modifiez le **nom** du modèle.
   + Modifiez l'une des **définitions d'attribut**. Vous ne pouvez pas modifier le **type de données** des attributs existants. Pour de plus amples informations, veuillez consulter [Définir des données statiques (attributs)](attributes.md).
   + Modifiez l'une des **définitions de mesure**. Vous ne pouvez pas modifier le **type de données** des mesures existantes. Pour de plus amples informations, veuillez consulter [Définir les flux de données provenant de l'équipement (mesures)](measurements.md).
   + Modifiez l'une des **définitions de transformation**. Pour de plus amples informations, veuillez consulter [Transformer les données (transformations)](transforms.md).
   + Modifiez l'une des **définitions de métrique**. Vous ne pouvez pas modifier l'**intervalle de temps** des métriques existantes. Pour de plus amples informations, veuillez consulter [Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md).

1. Choisissez **Enregistrer**.

## Mettre à jour un modèle composite personnalisé (AWS CLI)
<a name="update-custom-composite-model-cli"></a>

Utilisez le AWS Command Line Interface (AWS CLI) pour mettre à jour un modèle composite personnalisé.

Pour mettre à jour le nom ou la description, utilisez l'[UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)opération. Pour les modèles composites personnalisés en ligne uniquement, vous pouvez également mettre à jour les propriétés. Vous ne pouvez pas mettre à jour les propriétés d'un modèle composite component-model-based personnalisé, car son modèle de composant référencé fournit les propriétés associées.

**Important**  
Si vous supprimez une propriété d'un modèle composite personnalisé, toutes les données précédentes relatives à cette propriété sont AWS IoT SiteWise supprimées. Vous ne pouvez pas modifier le type ou le type de données d'une propriété existante.  
Pour remplacer une propriété de modèle composite existante par une nouvelle propriété identique`name`, procédez comme suit :  
Soumettez une `UpdateAssetModelCompositeModel` demande en supprimant l'intégralité de la propriété existante.
Soumettez une deuxième `UpdateAssetModelCompositeModel` demande qui inclut la nouvelle propriété. La nouvelle propriété de l'actif sera la même `name` que la précédente et AWS IoT SiteWise générera une nouvelle propriété unique`id`.

**Pour mettre à jour un modèle composite personnalisé (AWS CLI)**

1. Pour récupérer la définition du modèle composite existant, exécutez la commande suivante. Remplacez-le *composite-model-id* par l'ID ou l'ID externe du modèle composite personnalisé à mettre à jour, et *asset-model-id* par le modèle d'actif auquel le modèle composite personnalisé est associé. Pour plus d’informations, consultez le *Guide de l’utilisateur AWS IoT SiteWise *.

   1. Exécutez la commande ci-dessous :

      ```
      aws iotsitewise describe-asset-model-composite-model \
      --asset-model-composite-model-id composite-model-id \
      --asset-model-id asset-model-id
      ```

   1.  La commande ci-dessus renvoie la définition du modèle composite correspondant à la dernière version du modèle associé. Dans le cas d'utilisation où un modèle d'actif est dans un `FAILED` état, récupérez la définition de modèle valide correspondant à sa version active pour créer votre demande de mise à jour. Consultez [Versions du modèle d'actifs](model-active-version.md) pour plus de détails. 

   1. Exécutez la commande suivante pour récupérer la définition du modèle actif :

      ```
      aws iotsitewise describe-asset-model-composite-model \
      --asset-model-composite-model-id composite-model-id \
      --asset-model-id asset-model-id \
      --asset-model-version ACTIVE
      ```

   1. Pour plus d'informations, consultez l'[DescribeAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html)opération.

1. Créez un fichier appelé`update-custom-composite-model.json`, puis copiez la réponse de la commande précédente dans le fichier.

1. Supprimez toutes les paires clé-valeur de l'objet JSON, à `update-custom-composite-model.json` l'exception des champs suivants :
   + `assetModelCompositeModelName`
   + `assetModelCompositeModelDescription`(si présent)
   + `assetModelCompositeModelProperties`(si présent)

1. Dans `update-custom-composite-model.json`, effectuez l’une des actions suivantes :
   + Modifiez la valeur de`assetModelCompositeModelName`.
   + Ajoutez`assetModelCompositeModelDescription`, supprimez ou modifiez sa valeur.
   + Pour les modèles composites personnalisés en ligne uniquement : modifiez, ajoutez ou supprimez l'une des propriétés du modèle d'actif dans`assetModelCompositeModelProperties`.

   Pour plus d'informations sur le format requis pour ce fichier, consultez la syntaxe de demande pour [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html).

1. Exécutez la commande suivante pour mettre à jour le modèle composite personnalisé avec la définition stockée dans`update-custom-composite-model.json`. *composite-model-id*Remplacez-le par l'ID du modèle composite et *asset-model-id* par l'ID du modèle d'actif dans lequel il se trouve.

   ```
   aws iotsitewise update-asset-model-composite-model \
   --asset-model-composite-model-id composite-model-id \
   --asset-model-id asset-model-id \
   --cli-input-json file://update-custom-composite-model.json
   ```

**Important**  
 Lorsque plusieurs utilisateurs mettent à jour un modèle d'actif en même temps, les modifications apportées par un utilisateur peuvent être annulées par inadvertance par un autre utilisateur. Pour éviter cela, vous devez définir une demande de mise à jour conditionnelle. Consultez [Verrouillage optimiste pour les écrits sur le modèle d'actifs](opt-locking-for-model.md). 

# Verrouillage optimiste pour les écrits sur le modèle d'actifs
<a name="opt-locking-for-model"></a>

 Lors de la mise à jour d'un modèle d'actif, l'utilisateur effectue les opérations suivantes : 

1. Lisez la définition actuelle du modèle d'actifs.

1. Modifiez la définition du modèle d'actif avec les modifications requises.

1. Mettez à jour le modèle d'actif avec la nouvelle définition.

 Dans un scénario où deux utilisateurs mettent à jour un modèle, les opérations suivantes sont possibles : 
+ L'utilisateur A lit la définition du modèle d'actif X.
+ L'utilisateur B lit la définition du modèle d'actif X et valide les modifications, modifiant ainsi la définition de X.
+ L'utilisateur A valide et remplace les modifications apportées par l'utilisateur B pour le modèle d'actif X, sans vérifier ni intégrer les modifications apportées par l'utilisateur B.

 Le verrouillage optimiste est un mécanisme utilisé AWS IoT SiteWise pour empêcher les remplacements accidentels, comme dans le scénario ci-dessus. Le verrouillage optimiste est une stratégie visant à garantir que la version actuelle du modèle d'actif mise à jour ou supprimée est la même que sa version actuelle dans AWS IoT SiteWise. Cela empêche les écritures du modèle d'actifs d'être remplacées par des mises à jour accidentelles. 

Procédez comme suit pour effectuer des écritures de modèles d'actifs avec un verrouillage optimiste :

**Topics**
+ [Exécution d'écritures sur le modèle d'actifs avec un verrouillage optimiste (console)](#opt-locking-for-model-console)
+ [Exécution d'écritures sur le modèle d'actifs avec un verrou optimiste (AWS CLI)](#opt-locking-for-model-cli)

## Exécution d'écritures sur le modèle d'actifs avec un verrouillage optimiste (console)
<a name="opt-locking-for-model-console"></a>

La procédure ci-dessous décrit comment effectuer des écritures de modèles d'actifs avec un verrou optimiste sur la version active du modèle d'actif dans la console.

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle d'actif ou le modèle de composant à mettre à jour.

1. Choisissez **Modifier**.

1. Apportez des modifications sur la page **Modifier le modèle**.

1. Choisissez **Enregistrer**.
**Note**  
Parfois, une ou plusieurs mises à jour réussies du modèle ont eu lieu entre le moment où l'utilisateur commence à modifier le modèle et celui où il enregistre les modifications apportées au modèle.  
Pour éviter que l'utilisateur ne remplace accidentellement les nouvelles mises à jour réussies, l'écriture de l'utilisateur est rejetée. La console désactive le bouton **Enregistrer** et invite l'utilisateur à actualiser la page **Modifier le modèle**. L'utilisateur doit à nouveau mettre à jour la nouvelle version active du modèle. L'utilisateur doit effectuer les étapes supplémentaires suivantes : 

1. Choisissez **Refresh**.

1. Suivez à nouveau les étapes 5 et 6.

## Exécution d'écritures sur le modèle d'actifs avec un verrou optimiste (AWS CLI)
<a name="opt-locking-for-model-cli"></a>

La procédure ci-dessous décrit comment effectuer des écritures de modèles d'actifs avec un verrouillage optimiste dans le AWS CLI.

1. **Récupère la ETag définition du modèle actuel associée**

    `ETag`est un jeton unique généré pour chaque nouvelle représentation d'un modèle d'actif. Appelez [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)l'API pour récupérer la définition du modèle d'actif actuel et l'associer à `ETag` partir de la réponse. 

    Lors de mises à jour simultanées, les utilisateurs effectuent soit des mises à jour réussies (modèle dans `ACTIVE` l'état), soit des mises à jour infructueuses (modèle dans `FAILED` l'état). Pour éviter qu'un utilisateur ne remplace accidentellement une mise à jour réussie, vous devez récupérer la version active du modèle d'[Versions du modèle d'actifs](model-active-version.md)actif et en obtenir la `ETag` valeur. 

   Exécutez la commande suivante :

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id \
   --asset-model-version ACTIVE
   ```

    La réponse renvoie la structure suivante : 

   ```
   {
     "assetModelId": "String",
     "assetModelArn": "String",
     "assetModelName": "String",
     ...
     "eTag": "String"
   }
   ```
**Note**  
 Vous devez récupérer la dernière version du modèle d'actif et sa version `ETag` afin de ne pas remplacer les mises à jour. 

1. **Exécuter les opérations UPDATE et DELETE avec des conditions d'écriture**

   Les modèles d'actifs suivants APIs favorisent un verrouillage optimiste :
   + [UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)
   + [DeleteAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModel.html)
   + [CreateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html)
   + [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)
   + [DeleteAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModelCompositeModel.html)
**Note**  
 Les scénarios ci-dessous utilisent `UpdateAssetModel` l'API comme référence. Les conditions s'appliquent à toutes les opérations listées ci-dessus. 

   Les scénarios ci-dessous décrivent les différentes conditions d'écriture en fonction des exigences de contrôle de simultanéité :
   +  Exécutez la commande suivante afin de ne pas remplacer les mises à jour réussies. Aucune nouvelle version active ne doit exister depuis la dernière version active lue. Remplacez `e-tag` par le `ETag` renvoyé dans l'opération d'API utilisée lors de la lecture de la version active. 

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --if-match e-tag \
       --match-for-version-type ACTIVE \
       --cli-input-json file://model-payload.json
     ```
   +  Lorsque la création d'un modèle échoue, il n'existe pas encore de version active pour ce modèle, car il est dans un `FAILED` état. Il est toujours possible de remplacer une nouvelle version active déjà présente, avant que vos modifications ne soient validées. Exécutez la commande suivante pour ne pas remplacer une nouvelle version active lorsqu'aucune version active n'existe lors de votre dernière lecture.

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --if-none-match "*" \
       --match-for-version-type ACTIVE \
       --cli-input-json file://model-payload.json
     ```
   +  Exécutez la commande suivante pour éviter de remplacer les mises à jour réussies ou infructueuses. Cette commande définit une condition d'écriture qui garantit qu'aucune dernière version n'est créée depuis votre dernière lecture de la dernière version. Remplacez `e-tag` par le `ETag` renvoyé dans l'opération d'API utilisée lors de la lecture de la version active.

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --if-match eTag \
       --match-for-version-type LATEST \
       --cli-input-json file://model-payload.json
     ```

     Si la condition d'écriture est évaluée à`FALSE`, la demande d'écriture échoue avec le`PreconditionFailedException`.

# Supprimer des actifs et des modèles dans AWS IoT SiteWise
<a name="delete-assets-and-models"></a>

Vous pouvez supprimer vos actifs, modèles d'actifs, modèles de composants et interfaces AWS IoT SiteWise dès que vous en avez terminé avec eux. Les opérations de suppression sont asynchrones et leur propagation prend du temps. AWS IoT SiteWise

**Topics**
+ [Supprimer des actifs dans AWS IoT SiteWise](delete-assets.md)
+ [Supprimer des modèles d'actifs, des modèles de composants et des interfaces dans AWS IoT SiteWise](delete-asset-models.md)

# Supprimer des actifs dans AWS IoT SiteWise
<a name="delete-assets"></a>

Vous pouvez utiliser la AWS IoT SiteWise console ou l'API pour supprimer une ressource dont vous n'avez plus besoin dans votre environnement. La suppression d'un modèle de ressource entraîne également la suppression de tous les actifs et modèles de composants associés. Cependant, il est important de noter que la suppression d'un actif ou d'un modèle est une action permanente et que toutes les données associées aux ressources supprimées sont également supprimées. Avant de supprimer des actifs ou des modèles, il est recommandé de passer en revue les dépendances ou intégrations susceptibles d'être affectées et de vous assurer que vous disposez d'une sauvegarde de toutes les données importantes.

Avant de pouvoir supprimer une ressource, vous devez d'abord dissocier ses ressources enfants et la dissocier de sa ressource parent. Pour de plus amples informations, veuillez consulter [Associer et dissocier des actifs](add-associated-assets.md). Si vous utilisez le AWS Command Line Interface (AWS CLI), vous pouvez utiliser l'[ListAssociatedAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html)opération pour répertorier les enfants d'un actif.

Lorsque vous supprimez une ressource, son état est `DELETING` jusqu'à ce que les modifications soient propagées. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md). Une fois la ressource supprimée, vous ne pouvez plus l'interroger. Si vous le faites, l'API renvoie une réponse HTTP 404.

**Important**  
AWS IoT SiteWise supprime toutes les données de propriété des actifs supprimés.

**Topics**
+ [Supprimer un actif (console)](#delete-asset-console)
+ [Supprimer un actif (AWS CLI)](#delete-asset-cli)

## Supprimer un actif (console)
<a name="delete-asset-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour supprimer un actif.

**Pour supprimer une ressource (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Dans le panneau de navigation, choisissez **Ressources**.

1. Choisissez la ressource à supprimer.
**Astuce**  <a name="sitewise-expand-asset-hierarchy"></a>
Vous pouvez cliquer sur l'icône en forme de flèche pour développer une hiérarchie de ressources afin de trouver votre ressource.

1. Si la ressource comporte des **ressources associées**, supprimez chaque ressource. Vous pouvez choisir le nom d'une ressource pour accéder à sa page, où vous pouvez la supprimer.

1. Sur la page de la ressource, choisissez **Supprimer**.

1. Dans la boîte de dialogue **Supprimer la ressource**, procédez comme suit :

   1. Saisissez **Delete** pour confirmer la suppression.

   1. Sélectionnez **Delete (Supprimer)**.

## Supprimer un actif (AWS CLI)
<a name="delete-asset-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour supprimer un actif.

Utilisez cette [DeleteAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAsset.html)opération pour supprimer un actif. Spécifiez le paramètre suivant :
+ `assetId`— L'ID de l'actif. Il s'agit de l'identifiant réel au format UUID, ou du `externalId:myExternalId` s'il en possède un. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

**Pour supprimer un actif (AWS CLI)**

1. Exécutez la commande suivante pour répertorier les hiérarchies de la ressource. Remplacez *asset-id* par l'ID ou l'ID externe de l'actif :

   ```
   aws iotsitewise describe-asset --asset-id asset-id
   ```

   L'opération renvoie une réponse qui contient les détails de la ressource. La réponse contient une `assetHierarchies` liste dont la structure est la suivante :

   ```
   {
     ...
     "assetHierarchies": [
       {
         "id": "String",
         "name": "String"
       }
     ],
     ...
   }
   ```

   Pour plus d'informations, consultez l'[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)opération.

1. Pour chaque hiérarchie, exécutez la commande suivante pour répertorier les enfants de la ressource qui sont associés à cette hiérarchie. Remplacez *asset-id* par l'ID ou l'ID externe de la ressource et *hierarchy-id* par l'ID ou l'ID externe de la hiérarchie.

   ```
   aws iotsitewise list-associated-assets \
     --asset-id asset-id \
     --hierarchy-id hierarchy-id
   ```

   Pour plus d'informations, consultez l'[ListAssociatedAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html)opération.

1. Exécutez la commande suivante pour supprimer chaque ressource associée, puis pour supprimer la ressource. Remplacez *asset-id* par l'ID ou l'ID externe de la ressource.

   ```
   aws iotsitewise delete-asset --asset-id asset-id
   ```

# Supprimer des modèles d'actifs, des modèles de composants et des interfaces dans AWS IoT SiteWise
<a name="delete-asset-models"></a>

Vous pouvez utiliser la AWS IoT SiteWise console ou l'API pour supprimer un modèle de ressource, un modèle de composant ou une interface.

Avant de pouvoir supprimer un modèle d'actif, vous devez d'abord supprimer tous les actifs créés à partir du modèle d'actif. Avant de pouvoir supprimer une interface, vous devez d'abord la dissocier de tous les modèles d'actifs qui l'implémentent.

Lorsque vous supprimez un modèle d'actif ou une interface, son statut est maintenu `DELETING` jusqu'à ce que les modifications se propagent. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md). Une fois le modèle d'actif ou l'interface supprimé, vous ne pouvez pas interroger ce modèle d'actif ou cette interface. Si vous le faites, l'API renvoie une réponse HTTP 404.

**Topics**
+ [Supprimer un modèle de ressource, un modèle de composant ou une interface (console)](#delete-asset-model-console)
+ [Supprimer un modèle d'actif, un modèle de composant ou une interface (AWS CLI)](#delete-asset-model-cli)

## Supprimer un modèle de ressource, un modèle de composant ou une interface (console)
<a name="delete-asset-model-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour supprimer un modèle de ressource, un modèle de composant ou une interface.

**Topics**

**Pour supprimer un modèle de ressource, un modèle de composant ou une interface (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle de ressource, le modèle de composant ou l'interface à supprimer.

1. Si vous supprimez un modèle d'actif contenant des **actifs**, supprimez chaque actif. Choisissez le nom d'une ressource pour accéder à sa page, où vous pouvez la supprimer. Pour de plus amples informations, veuillez consulter [Supprimer un actif (console)](delete-assets.md#delete-asset-console).

1. Sur la page du modèle, choisissez **Supprimer**.

1. Dans la boîte de dialogue **Supprimer le modèle**, procédez comme suit :

   1. Saisissez **Delete** pour confirmer la suppression.

   1. Sélectionnez **Delete (Supprimer)**.

## Supprimer un modèle d'actif, un modèle de composant ou une interface (AWS CLI)
<a name="delete-asset-model-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour supprimer un modèle de ressource, un modèle de composant ou une interface.

Utilisez cette [DeleteAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModel.html)opération pour supprimer un modèle de ressource, un modèle de composant ou une interface. Spécifiez le paramètre suivant :
+ `assetModelId`— L'ID de l'actif. Il s'agit de l'identifiant réel au format UUID, ou du `externalId:myExternalId` s'il en possède un. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

**Pour supprimer un modèle de ressource (AWS CLI)**

1. Exécutez la commande suivante pour répertorier toutes les ressources créées à partir du modèle. Remplacez *asset-model-id* par l'ID ou l'ID externe du modèle d'actif.

   ```
   aws iotsitewise list-assets --asset-model-id asset-model-id
   ```

   Pour plus d'informations, consultez l'[ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html)opération.

1. Si la commande précédente renvoie des ressources du modèle, supprimez chaque ressource. Pour de plus amples informations, veuillez consulter [Supprimer un actif (AWS CLI)](delete-assets.md#delete-asset-cli).

1. Exécutez la commande suivante pour supprimer le modèle de ressource. Remplacez *asset-model-id* par l'ID ou l'ID externe du modèle d'actif.

   ```
   aws iotsitewise delete-asset-model --asset-model-id asset-model-id
   ```

**Important**  
 Pour éviter de supprimer un modèle de ressource qui a été mis à jour simultanément depuis la dernière opération de lecture, vous devez définir une demande de suppression conditionnelle. Consultez [Verrouillage optimiste pour les écrits sur le modèle d'actifs](opt-locking-for-model.md). 

# Opérations groupées avec actifs et modèles
<a name="bulk-operations-assets-and-models"></a>

Pour travailler avec un grand nombre de ressources ou de modèles d'actifs, utilisez des opérations groupées pour importer et exporter des ressources en masse vers un autre emplacement. Par exemple, vous pouvez créer un fichier de données qui définit les actifs ou les modèles d'actifs dans un compartiment Amazon S3, et utiliser l'importation en masse pour les créer ou les mettre à jour AWS IoT SiteWise. Sinon, si vous avez un grand nombre de ressources ou de modèles d'actifs AWS IoT SiteWise, vous pouvez les exporter vers Amazon S3. 

**Note**  
Vous effectuez des opérations AWS IoT SiteWise groupées en appelant des opérations dans l' AWS IoT TwinMaker API. Vous pouvez le faire sans configurer AWS IoT TwinMaker ni créer d' AWS IoT TwinMaker espace de travail. Tout ce dont vous avez besoin, c'est d'un compartiment Amazon S3 dans lequel vous pouvez placer votre AWS IoT SiteWise contenu.   


**Topics**
+ [Concepts clés et terminologie](#bulk-operations-terminology)
+ [Fonctionnalités prises en charge](#bulk-operations-functionality)
+ [Prérequis pour les opérations en masse](bulk-operations-prereqs.md)
+ [Exécuter une tâche d'importation groupée](running-bulk-operations-import.md)
+ [Exécuter une tâche d'exportation groupée](running-bulk-operations-export.md)
+ [Suivi de l'avancement des tâches et gestion des erreurs](jobs-progress-error-handling.md)
+ [Exemples d'importation de métadonnées](bulk-operations-import-metadata-example.md)
+ [Exemples de métadonnées d'exportation](bulk-operations-export-filter-examples.md)
+ [AWS IoT SiteWise schéma de tâche de transfert de métadonnées](bulk-operations-schema.md)

## Concepts clés et terminologie
<a name="bulk-operations-terminology"></a>

AWS IoT SiteWise les fonctionnalités d'importation et d'exportation en bloc reposent sur les concepts et la terminologie suivants :
+ **Importer** : action qui consiste à déplacer des actifs ou des modèles d'actifs d'un fichier d'un compartiment Amazon S3 vers AWS IoT SiteWise.
+ **Exporter** : action qui consiste à déplacer des actifs ou des modèles AWS IoT SiteWise d'actifs depuis un compartiment Amazon S3.
+ **Source** : point de départ à partir duquel vous souhaitez déplacer le contenu.

  Par exemple, un compartiment Amazon S3 est une source d'importation et AWS IoT SiteWise une source d'exportation.
+ **Destination** : emplacement souhaité vers lequel vous souhaitez déplacer votre contenu.

  Par exemple, un compartiment Amazon S3 est une destination d'exportation et AWS IoT SiteWise une destination d'importation.
+ **AWS IoT SiteWise Schéma** : Ce schéma est utilisé pour importer et exporter des métadonnées depuis AWS IoT SiteWise.
+ **Ressource de haut niveau :** AWS IoT SiteWise ressource que vous pouvez créer ou mettre à jour individuellement, telle qu'un actif ou un modèle d'actif.
+ **Sous-ressource : ressource** imbriquée au sein d'une AWS IoT SiteWise ressource de niveau supérieur. Les exemples incluent les propriétés, les hiérarchies et les modèles composites.
+ **Métadonnées** : informations clés requises pour importer ou exporter des ressources avec succès. Les définitions des actifs et des modèles d'actifs sont des exemples de métadonnées.
+ **metadataTransferJob**: objet créé lors de l'exécution`CreateMetadataTransferJob`.

## Fonctionnalités prises en charge
<a name="bulk-operations-functionality"></a>

Cette rubrique explique ce que vous pouvez faire lorsque vous exécutez une opération en masse. Les opérations groupées prennent en charge les fonctionnalités suivantes :
+ **Création de ressources de haut niveau :** lorsque vous importez un actif ou un modèle d'actif qui ne définit pas d'identifiant, ou dont l'identifiant ne correspond pas à celui d'un actif existant, il est créé en tant que nouvelle ressource.
+ **Remplacement des ressources de haut niveau :** lorsque vous importez un actif ou un modèle d'actif dont l'identifiant correspond à un actif qui existe déjà, il remplace la ressource existante.
+ **Création, remplacement ou suppression de sous-ressources :** lorsque votre importation remplace une ressource de haut niveau telle qu'un actif ou un modèle d'actif, la nouvelle définition remplace toutes les sous-ressources, telles que les propriétés, les hiérarchies ou les modèles composites. 

  Par exemple, si vous mettez à jour un modèle de ressource lors d'une importation en bloc et que la version mise à jour définit une propriété qui n'était pas présente dans l'original, une nouvelle propriété est créée. S'il définit une propriété qui existe déjà, la propriété existante sera mise à jour. Si le modèle d'actif mis à jour omet une propriété présente dans l'original, la propriété est supprimée.
+ **Aucune suppression de ressources de niveau supérieur :** les opérations groupées ne suppriment pas un actif ou un modèle d'actif. Les opérations groupées ne font que les créer ou les mettre à jour.

# Prérequis pour les opérations en masse
<a name="bulk-operations-prereqs"></a>

Cette section explique les conditions requises pour les opérations en masse, notamment les autorisations Gestion des identités et des accès AWS (IAM) pour l'échange de ressources entre les AWS services et votre machine locale. Avant de démarrer une opération en bloc, remplissez les conditions préalables suivantes :
+ Créez un compartiment Amazon S3 pour stocker les ressources. Pour plus d'informations sur l'utilisation d'Amazon S3, consultez [Qu'est-ce qu'Amazon S3 ?](https://docs.aws.amazon.com//AmazonS3/latest/userguide/Welcome.html)

## Autorisations IAM
<a name="bulk-operations-prereqs-permissions"></a>

Pour effectuer des opérations en masse, vous devez créer une politique Gestion des identités et des accès AWS (IAM) avec des autorisations permettant l'échange de AWS ressources entre Amazon S3 et votre machine locale. AWS IoT SiteWise Pour plus d'informations sur la création de politiques IAM, consultez [Création de politiques IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html). 

Pour effectuer des opérations groupées, vous avez besoin des règles suivantes.

### AWS IoT SiteWise politique
<a name="bluk-operations-prereqs-policy"></a>

Cette politique permet d'accéder aux actions d' AWS IoT SiteWise API requises pour les opérations groupées :

```
{
    "Sid": "SiteWiseApiAccess",
    "Effect": "Allow",
    "Action": [
        "iotsitewise:CreateAsset",
        "iotsitewise:CreateAssetModel",
        "iotsitewise:UpdateAsset",
        "iotsitewise:UpdateAssetModel",
        "iotsitewise:UpdateAssetProperty",
        "iotsitewise:ListAssets",
        "iotsitewise:ListAssetModels",
        "iotsitewise:ListAssetProperties",
        "iotsitewise:ListAssetModelProperties",
        "iotsitewise:ListAssociatedAssets",
        "iotsitewise:DescribeAsset",
        "iotsitewise:DescribeAssetModel",
        "iotsitewise:DescribeAssetProperty",
        "iotsitewise:AssociateAssets",
        "iotsitewise:DisassociateAssets",
        "iotsitewise:AssociateTimeSeriesToAssetProperty",
        "iotsitewise:DisassociateTimeSeriesFromAssetProperty",
        "iotsitewise:BatchPutAssetPropertyValue",
        "iotsitewise:BatchGetAssetPropertyValue",
        "iotsitewise:TagResource",
        "iotsitewise:UntagResource",
        "iotsitewise:ListTagsForResource",
        "iotsitewise:CreateAssetModelCompositeModel",
        "iotsitewise:UpdateAssetModelCompositeModel",
        "iotsitewise:DescribeAssetModelCompositeModel",
        "iotsitewise:DeleteAssetModelCompositeModel",
        "iotsitewise:ListAssetModelCompositeModels",
        "iotsitewise:ListCompositionRelationships",
        "iotsitewise:DescribeAssetCompositeModel"
    ],
    "Resource": "*"
}
```

### AWS IoT TwinMaker politique
<a name="bulk-operations-TwinMaker-policy"></a>

Cette politique permet d'accéder aux opérations AWS IoT TwinMaker d'API que vous utilisez pour travailler avec des opérations groupées :

```
{
    "Sid": "MetadataTransferJobApiAccess",
    "Effect": "Allow",
    "Action": [
        "iottwinmaker:CreateMetadataTransferJob",
        "iottwinmaker:CancelMetadataTransferJob",
        "iottwinmaker:GetMetadataTransferJob",
        "iottwinmaker:ListMetadataTransferJobs"
    ],
    "Resource": "*"
}
```

### Politique Amazon S3
<a name="bulk-operations-S3-policy"></a>

Cette politique donne accès aux compartiments Amazon S3 pour le transfert de métadonnées pour les opérations en masse.

------
#### [ For a specific Amazon S3 bucket ]

Si vous utilisez un bucket spécifique pour travailler avec les métadonnées de vos opérations groupées, cette politique permet d'accéder à ce bucket :

```
{
    "Effect": "Allow",
    "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:AbortMultipartUpload",
        "s3:ListBucketMultipartUploads",
        "s3:ListMultipartUploadParts"
    ],
    "Resource": [
        "arn:aws:s3:::bucket name",
        "arn:aws:s3:::bucket name/*"
    ]
}
```

------
#### [ To allow any Amazon S3 bucket ]

Si vous devez utiliser de nombreux compartiments différents pour travailler avec les métadonnées de vos opérations groupées, cette politique permet d'accéder à n'importe quel compartiment :

```
{
    "Effect": "Allow",
    "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:AbortMultipartUpload",
        "s3:ListBucketMultipartUploads",
        "s3:ListMultipartUploadParts"
    ],
    "Resource": "*"
}
```

------<a name="bulk-operations-troubleshooting"></a>

Pour plus d'informations sur la résolution des problèmes liés aux opérations d'importation et d'exportation, consultez[Résoudre les problèmes d'importation et d'exportation en masse](troubleshooting-bulk.md).

# Exécuter une tâche d'importation groupée
<a name="running-bulk-operations-import"></a>

 L'importation en masse consiste à déplacer des métadonnées dans un AWS IoT SiteWise espace de travail. Par exemple, l'importation en masse peut déplacer des métadonnées d'un fichier local ou d'un fichier d'un compartiment Amazon S3 vers un AWS IoT SiteWise espace de travail. 

## Étape 1 : Préparation du fichier à importer
<a name="preparing-import-file"></a>

Téléchargez le fichier au format AWS IoT SiteWise natif pour importer les actifs et les modèles d'actifs. Pour plus d’informations, consultez [AWS IoT SiteWise schéma de tâche de transfert de métadonnées](bulk-operations-schema.md). 

## Étape 2 : Chargez le fichier préparé sur Amazon S3
<a name="uploading-import-file"></a>

 Téléchargez le fichier sur Amazon S3. Consultez la section [Chargement d'un fichier vers Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#uploading-an-object-bucket) dans le *guide de l'utilisateur d'Amazon Simple Storage Service* pour plus de détails. 

## Importer des métadonnées (console)
<a name="import-metadata-console"></a>

Vous pouvez utiliser le Console AWS IoT SiteWise pour importer des métadonnées en bloc. Suivez [Étape 1 : Préparation du fichier à importer](#preparing-import-file) et [Étape 2 : Chargez le fichier préparé sur Amazon S3](#uploading-import-file) pour préparer un fichier prêt à être importé.

**Importez des données depuis Amazon S3 vers Console AWS IoT SiteWise**

1. Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Choisissez **Bulk operations New** dans le volet de navigation.

1. Choisissez **Nouvelle importation** pour démarrer le processus d'importation.

1. Sur la page **Importer des métadonnées** :
   + Choisissez **Parcourir Amazon S3** pour afficher le compartiment et les fichiers Amazon S3.
   + Accédez au compartiment Amazon S3 qui contient le fichier d'importation préparé.
   + Sélectionnez le fichier à importer.
   + Vérifiez le fichier sélectionné, puis choisissez **Importer**.

1. La page **Opérations groupées sur les SiteWise métadonnées** Console AWS IoT SiteWise affiche la tâche d'importation nouvellement créée dans le tableau de **progression des tâches**.

## Importer des métadonnées (AWS CLI)
<a name="import-metadata-cli"></a>

Pour effectuer une opération d'importation, procédez comme suit :

**Importez des données depuis Amazon S3 vers AWS CLI**

1. Créez un fichier de métadonnées qui indique les ressources que vous souhaitez importer, en suivant le[AWS IoT SiteWise schéma de tâche de transfert de métadonnées](bulk-operations-schema.md). Stockez ce fichier dans votre compartiment Amazon S3.

   Pour des exemples de fichiers de métadonnées à importer, consultez[Exemples d'importation de métadonnées](bulk-operations-import-metadata-example.md). 

1. Créez maintenant un fichier JSON avec le corps de la requête. Le corps de la demande indique la source et la destination de la tâche de transfert. Ce fichier est distinct du fichier de l'étape précédente. Assurez-vous de spécifier votre compartiment Amazon S3 en tant que source et `iotsitewise` en tant que destination. 

   L'exemple suivant montre le corps de la demande :

   ```
   {
         "metadataTransferJobId": "your-transfer-job-Id",
         "sources": [{
             "type": "s3",
             "s3Configuration": {
                 "location": "arn:aws:s3:::amzn-s3-demo-bucket/your_import_metadata.json"
             }
         }],
         "destination": {
             "type": "iotsitewise"
         }
     }
   ```

1. Appelez le `CreateMetadataTransferJob` en exécutant la AWS CLI commande suivante. Dans cet exemple, le fichier du corps de la demande de l'étape précédente est nommé`createMetadataTransferJobExport.json`.

   ```
   aws iottwinmaker create-metadata-transfer-job --region us-east-1 \
     --cli-input-json file://createMetadataTransferJobImport.json
   ```

   Cela créera une tâche de transfert de métadonnées et lancera le processus de transfert des ressources que vous avez sélectionnées.

# Exécuter une tâche d'exportation groupée
<a name="running-bulk-operations-export"></a>

 L'exportation en masse consiste à déplacer des métadonnées d'un AWS IoT SiteWise espace de travail vers un compartiment Amazon S3. 

Lorsque vous exportez votre AWS IoT SiteWise contenu en masse vers Amazon S3, vous pouvez définir des filtres pour limiter les modèles d'actifs et les actifs spécifiques que vous souhaitez exporter.

Les filtres doivent être spécifiés dans une `iotSiteWiseConfiguration` section de la section sources de votre requête JSON.

**Note**  
 Vous pouvez inclure plusieurs filtres dans votre demande. L'opération groupée exportera les modèles d'actifs et les actifs correspondant à l'un des filtres.   
 Si vous ne fournissez aucun filtre, l'opération groupée exporte tous vos modèles et actifs d'actifs. 

**Example corps de la demande avec filtres**  

```
{
      "metadataTransferJobId": "your-transfer-job-id",
      "sources": [
       {
        "type": "iotsitewise",
        "iotSiteWiseConfiguration": {
          "filters": [
           {
              "filterByAssetModel": {
                  "assetModelId": "asset model ID"
              }
            },
            {
              "filterByAssetModel": {
                  "assetModelId": "asset model ID",
                  "includeAssets": true
              }
            },
            {
              "filterByAssetModel": {
                  "assetModelId": "asset model ID",
                  "includeOffspring": true
               }
             }
           ]
          }
        }
       ],
       "destination": {
          "type": "s3",
          "s3Configuration": {
            "location": "arn:aws:s3:::amzn-s3-demo-bucket"
          }
      }
}
```

## Exporter les métadonnées (console)
<a name="export-metadata-console"></a>

La procédure suivante explique l'action d'exportation de la console :

**Créez une tâche d'exportation dans Console AWS IoT SiteWise**

1.  Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Choisissez **Bulk operations New** dans le volet de navigation.

1. Choisissez **Nouvelle exportation** pour démarrer le processus d'exportation.

1. Sur la page **Exporter les métadonnées** :
   +  Entrez le nom de la tâche d'exportation. Il s'agit du nom utilisé pour le fichier exporté dans votre compartiment Amazon S3. 
   + Choisissez les ressources à exporter, ce qui définit les filtres pour le travail :
     + Exportez tous les actifs et modèles d'actifs. Utilisez des filtres sur les actifs et les modèles d'actifs.
     + Exportez des actifs. Filtrez en fonction de vos actifs.
       + Sélectionnez la ressource à utiliser pour le filtre d'exportation.
       + (Facultatif) Ajoutez la descendance ou le modèle d'actif associé.
     + Exportez des modèles d'actifs. Filtrez en fonction de vos modèles d'actifs.
       + Sélectionnez le modèle de ressource à utiliser pour le filtre d'exportation.
       + (Facultatif) Ajoutez la progéniture, ou l'actif associé, ou les deux. 
     + Choisissez **Suivant**.
   + Accédez au compartiment Amazon S3 :
     + Choisissez **Parcourir Amazon S3** pour afficher le compartiment et les fichiers Amazon S3.
     + Accédez au compartiment Amazon S3 dans lequel le fichier doit être placé.
     + Choisissez **Suivant**.
   + Passez en revue la tâche d'exportation et choisissez **Exporter**.

1. La page **Opérations groupées sur les SiteWise métadonnées** Console AWS IoT SiteWise affiche la tâche d'importation nouvellement créée dans le tableau de **progression des tâches**.

Pour connaître les différentes manières d'utiliser les filtres lors de l'exportation de métadonnées, consultez[Exemples de métadonnées d'exportation](bulk-operations-export-filter-examples.md). 

## Exporter les métadonnées (AWS CLI)
<a name="export-metadata-cli"></a>

La procédure suivante explique l'opération AWS CLI d'exportation :

**Exporter des données depuis AWS IoT SiteWise Amazon S3**

1. Créez un fichier JSON avec le corps de votre requête. Le corps de la demande indique la source et la destination de la tâche de transfert. L'exemple suivant montre un exemple de corps de demande :

   ```
   {
       "metadataTransferJobId": "your-transfer-job-Id",
       "sources": [{
           "type": "iotsitewise"
       }],
       "destination": {
           "type": "s3",
           "s3Configuration": {
               "location": "arn:aws:s3:::amzn-s3-demo-bucket"
           }
       }
   }
   ```

   Assurez-vous de spécifier votre compartiment Amazon S3 comme destination de la tâche de transfert de métadonnées.
**Note**  
Cet exemple exportera tous vos modèles d'actifs et actifs. Pour limiter l'exportation à des modèles d'actifs ou à des actifs spécifiques, vous pouvez inclure des filtres dans le corps de votre demande. Pour plus d'informations sur l'application de filtres d'exportation, consultez[Exemples de métadonnées d'exportation](bulk-operations-export-filter-examples.md).

1. Enregistrez le corps du fichier de votre demande pour l'utiliser à l'étape suivante. Dans cet exemple, le fichier est nommé `createMetadataTransferJobExport.json`.

1. Appelez le `CreateMetadataTransferJob` en exécutant la AWS CLI commande suivante :

   ```
   aws iottwinmaker create-metadata-transfer-job --region us-east-1 \ 
            --cli-input-json file://createMetadataTransferJobExport.json
   ```

   Remplacez le fichier JSON d'entrée `createMetadataTransferJobExport.json` par votre propre nom de fichier de transfert.

# Suivi de l'avancement des tâches et gestion des erreurs
<a name="jobs-progress-error-handling"></a>

 Le traitement d'une tâche en masse prend du temps. Chaque tâche est traitée dans l'ordre de AWS IoT SiteWise réception de la demande. Il est traité one-at-a-time pour chaque compte. Lorsqu'une tâche est terminée, la suivante en file d'attente démarre automatiquement le traitement. AWS IoT SiteWise résout les tâches de manière asynchrone et met à jour le statut de chacune au fur et à mesure de son avancement. Chaque tâche possède un champ d'état qui contient l'état de la ressource et un message d'erreur, le cas échéant.

L'état peut prendre l'une des valeurs suivantes :
+ `VALIDATING`— Validation de la tâche, y compris le format de fichier soumis et son contenu.
+ `PENDING`— La tâche est dans une file d'attente. Vous pouvez annuler des tâches dans cet état depuis la AWS IoT SiteWise console, mais tous les autres états continueront jusqu'à la fin.
+ `RUNNING`— Traitement de la tâche. Il s'agit de créer et de mettre à jour des ressources telles que définies par le fichier d'importation, ou d'exporter des ressources en fonction des filtres de tâches d'exportation choisis. En cas d'annulation, aucune ressource importée par cette tâche n'est supprimée. Pour plus d’informations, consultez [Consulter la progression et les détails des tâches (console)](review-job-progress.md#review-job-progress-console).
+ `CANCELLING`— L'offre d'emploi est en cours d'annulation.
+ `ERROR`— Une ou plusieurs ressources n'ont pas pu être traitées. Consultez le rapport de travail détaillé pour plus d'informations. Pour plus d’informations, consultez [Inspecter les détails de l'erreur (console)](inspect-errors.md#inspect-errors-console).
+ `COMPLETED`— Job terminé sans erreur.
+ `CANCELLED`— La tâche est annulée et n'est pas mise en file d'attente. Si vous avez annulé une `RUNNING` tâche, les ressources déjà importées par cette tâche au moment de l'annulation ne sont pas supprimées de AWS IoT SiteWise.

**Topics**
+ [Suivi de l'avancement des tâches](review-job-progress.md)
+ [Inspectez les erreurs pour AWS IoT SiteWise](inspect-errors.md)

# Suivi de l'avancement des tâches
<a name="review-job-progress"></a>

## Consulter la progression et les détails des tâches (console)
<a name="review-job-progress-console"></a>

Consultez [Importer des métadonnées (console)](running-bulk-operations-import.md#import-metadata-console) ou [Exporter les métadonnées (console)](running-bulk-operations-export.md#export-metadata-console) pour démarrer une tâche groupée.

**Vue d'ensemble de l'avancement des tâches dans la AWS IoT SiteWise console :**

1. Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Choisissez **Bulk operations New** dans le volet de navigation.

1. Le tableau de **progression des tâches** de la AWS IoT SiteWise console affiche la liste des tâches exécutées en bloc.

1. La colonne **Type de tâche** indique s'il s'agit d'une tâche d'exportation ou d'importation. Les colonnes **Date d'importation** indiquent la date de début de la tâche.

1. La colonne **Status** affiche le statut de la tâche. Vous pouvez sélectionner une tâche pour en voir les détails.

1. La tâche sélectionnée affiche **Success** en cas de réussite, ou une liste d'échecs en cas d'échec de la tâche. Une description de l'erreur est également affichée pour chaque type de ressource.

**Vue d'ensemble des détails du job dans la AWS IoT SiteWise console :**

Le tableau de **progression des tâches** de la AWS IoT SiteWise console affiche la liste des tâches exécutées en bloc.

1. Choisissez un poste pour obtenir plus de détails.

1. Pour une tâche d'**importation**, `Data source ARN` représente l'emplacement du fichier d'importation sur Amazon S3.

1. Pour une tâche d'**exportation**, le `Data destination ARN` représente l'emplacement du fichier sur Amazon S3 après l'exportation.

1. Les `Status` et`Status reason`, fournissent des détails supplémentaires sur le travail en cours. Pour plus d’informations, consultez [Suivi de l'avancement des tâches et gestion des erreurs](jobs-progress-error-handling.md).

1. Le `Queued position` représente la position de la tâche dans la file d'attente des processus. Les tâches sont traitées une par une. Une position en file d'attente de 1 indique que le travail sera traité ensuite.

1.  La page de détails des tâches affiche également le nombre d'avancement des tâches.

   1. Les types de comptage de l'avancement des tâches sont les suivants :

     1. `Total resources`— Indique le nombre total d'actifs dans le processus de transfert.

     1. `Succeeded`— Indique le nombre d'actifs transférés avec succès au cours du processus.

     1. `Failed`— Indique le nombre d'actifs défaillants au cours du processus.

     1. `Skipped`— Indique le nombre d'actifs ignorés au cours du processus.

1. Un statut de tâche `PENDING` égal ou `VALIDATING` affiche la progression de toutes les tâches`–`. Cela indique que le nombre de progrès des tâches est en cours d'évaluation.

1. Un statut de tâche de `RUNNING` affiche le `Total resources` nombre de tâches soumises pour traitement. Les dénombrements détaillés (`Succeeded``Failed`, et`Skipped`) s'appliquent aux ressources traitées. La somme des dénombrements détaillés est inférieure au `Total resources` nombre, jusqu'à ce que le statut du poste soit `COMPLETED` ou`ERROR`.

1.  Si le statut d'une tâche est `COMPLETED` ou`ERROR`, le `Total resources` nombre est égal à la somme des dénombrements détaillés (`Succeeded``Failed`, et`Skipped`). 

1.  Si le statut d'une tâche est défini comme `ERROR` tel, consultez le tableau **des échecs des tâches** pour plus de détails sur les erreurs et les échecs spécifiques. Pour plus d’informations, consultez [Inspecter les détails de l'erreur (console)](inspect-errors.md#inspect-errors-console). 

## Examiner l'avancement et les détails du travail (AWS CLI)
<a name="review-job-progress-cli"></a>

Après avoir démarré une opération groupée, vous pouvez vérifier ou mettre à jour son statut à l'aide des actions d'API suivantes :
+ Pour récupérer des informations sur une tâche spécifique, utilisez l'action [ GetMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_GetMetadataTransferJob.html)API.

**Récupérez des informations avec l'`GetMetadataTransferJob`API :**

  1. Créez et exécutez une tâche de transfert. Appelez l'API `GetMetadataTransferJob`.  
**Example AWS CLI commande :**  

     ```
     aws iottwinmaker get-metadata-transfer-job \ 
             --metadata-transfer-job-id your_metadata_transfer_job_id \
             --region your_region
     ```

  1.  L'`GetMetadataTransferJob`API renvoie un `MetadataTransferJobProgress` objet avec les paramètres suivants : 
     + **SucceededCount** — Indique le nombre d'actifs transférés avec succès au cours du processus.
     + **FailedCount** — Indique le nombre d'actifs défaillants au cours du processus.
     + **SkippedCount** — Indique le nombre d'actifs ignorés au cours du processus.
     + **TotalCount** — Indique le nombre total d'actifs dans le processus de transfert.

     Ces paramètres indiquent l'état d'avancement de la tâche. Si le statut est le cas`RUNNING`, ils permettent de suivre le nombre de ressources restant à traiter.

     Si vous rencontrez des erreurs de validation du schéma, ou si **FailedCount** est supérieur ou égal à 1, l'état d'avancement de la tâche passe à. `ERROR` Un rapport d'erreur complet relatif à la tâche est placé dans votre compartiment Amazon S3. Pour plus d’informations, consultez [Inspectez les erreurs pour AWS IoT SiteWise](inspect-errors.md).
+ Pour répertorier les tâches en cours, utilisez l'action [ListMetadataTransferJobs](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ListMetadataTransferJobs.html)API.

  Utilisez un fichier JSON pour filtrer les tâches renvoyées en fonction de leur état actuel. Consultez la procédure suivante :

  1. Pour spécifier les filtres que vous souhaitez utiliser, créez un fichier JSON AWS CLI d'entrée. Vous souhaitez utiliser :

     ```
     {
         "sourceType": "s3",
         "destinationType": "iottwinmaker",
         "filters": [{
             "state": "COMPLETED"
         }]
     }
     ```

     Pour obtenir la liste des `state` valeurs valides, consultez le *Guide [ListMetadataTransferJobsFilter](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ListMetadataTransferJobsFilter.html)de référence de l'AWS IoT TwinMaker API*.

  1.  Utilisez le fichier JSON comme argument dans l' AWS CLI exemple de commande suivant :

     ```
     aws iottwinmaker list-metadata-transfer-job --region your_region \
             --cli-input-json file://ListMetadataTransferJobsExample.json
     ```
+ Pour annuler une tâche, utilisez l'action [CancelMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CancelMetadataTransferJob.html)API. Cette API annule la tâche de transfert de métadonnées spécifique, sans affecter les ressources déjà exportées ou importées :

  ```
  aws iottwinmaker cancel-metadata-transfer-job \ 
          --region your_region \ 
          --metadata-transfer-job-id job-to-cancel-id
  ```

# Inspectez les erreurs pour AWS IoT SiteWise
<a name="inspect-errors"></a>

## Inspecter les détails de l'erreur (console)
<a name="inspect-errors-console"></a>

**Détails de l'erreur dans la AWS IoT SiteWise console :**

1. Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Consultez le tableau de **progression des tâches** Console AWS IoT SiteWise pour obtenir la liste des tâches liées aux opérations groupées.

1. Sélectionnez une tâche pour afficher les détails de la tâche.

1. Si le statut d'une tâche est `COMPLETED` ou`ERROR`, le `Total resources` nombre est égal à la somme des dénombrements détaillés (`Succeeded``Failed`, et`Skipped`).

1.  Si le statut d'une tâche est défini comme `ERROR` tel, consultez le tableau **des échecs des tâches** pour plus de détails sur les erreurs et les échecs spécifiques.

1. Le tableau **des échecs de tâches** affiche le contenu du rapport de tâche. Le `Resource type` champ indique l'emplacement de l'erreur ou des défaillances, par exemple :
   + Par exemple, une erreur de validation `Bulk operations template` dans le `Resource type` champ indique que le modèle d'importation et le format de fichier du schéma de métadonnées ne correspondent pas. Pour plus d’informations, consultez [AWS IoT SiteWise schéma de tâche de transfert de métadonnées](bulk-operations-schema.md). 
   + Un échec `Asset` dans le `Resource type` champ indique que l'actif n'a pas été créé en raison d'un conflit avec un autre actif. Consultez la section [Erreurs courantes](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/CommonErrors.html) pour plus d'informations sur les erreurs et les conflits liés aux AWS IoT SiteWise ressources. 

## Inspecter les détails de l'erreur (AWS CLI)
<a name="inspect-errors-cli"></a>

Pour gérer et diagnostiquer les erreurs produites lors d'une tâche de transfert, consultez la procédure suivante concernant l'utilisation de l'action `GetMetadataTransferJob` API :

1. Après avoir créé et exécuté une tâche de transfert, appelez [GetMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_GetMetadataTransferJob.html):

   ```
   aws iottwinmaker get-metadata-transfer-job \
           --metadata-transfer-job-id your_metadata_transfer_job_id \
           --region us-east-1
   ```

1. Une fois que l'état de la tâche est passé à zéro`COMPLETED`, vous pouvez commencer à vérifier les résultats de la tâche.

1. Lorsque vous appelez`GetMetadataTransferJob`, il renvoie un objet appelé [https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_MetadataTransferJobProgress.html](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_MetadataTransferJobProgress.html).

   L' MetadataTransferJobProgress objet contient les paramètres suivants :
   + **FailedCount :** indique le nombre d'actifs défaillants pendant le processus de transfert.
   + **SkippedCount :** indique le nombre d'actifs ignorés pendant le processus de transfert.
   + **SucceededCount :** indique le nombre d'actifs qui ont réussi pendant le processus de transfert.
   + **TotalCount :** indique le nombre total d'actifs impliqués dans le processus de transfert.

1. En outre, l'appel d'API renvoie un élément `reportUrl` contenant une URL présignée. Si votre tâche de transfert présente des problèmes que vous devez approfondir, consultez cette URL. 

# Exemples d'importation de métadonnées
<a name="bulk-operations-import-metadata-example"></a>

Cette section explique comment créer des fichiers de métadonnées pour importer des modèles d'actifs et des actifs en une seule opération d'importation en bloc.

## Exemple d'importation en masse
<a name="example-metadata-file"></a>

Vous pouvez importer de nombreux modèles et actifs en une seule opération d'importation en bloc. L'exemple suivant montre comment créer un fichier de métadonnées à cette fin.

 Dans cet exemple de scénario, plusieurs sites de travail contiennent des robots industriels dans des cellules de travail. 

L'exemple définit deux modèles d'actifs :
+ `RobotModel1`: Ce modèle d'actif représente un type particulier de robot que vous avez sur vos sites de travail. Le robot possède une propriété de mesure,`Temperature`. 
+ `WorkCell`: Ce modèle d'actif représente un ensemble de robots au sein de l'un de vos sites de travail. Le modèle d'actifs définit une hiérarchie pour représenter la relation entre une cellule de travail et des robots. `robotHierarchyOEM1` 

L'exemple définit également certains actifs :
+ `WorkCell1`: une cellule de travail au sein de votre site de Boston
+ `RobotArm123456`: un robot dans cette cellule de travail
+ `RobotArm987654`: un autre robot au sein de cette cellule de travail

Le fichier de métadonnées JSON suivant définit ces modèles et actifs d'actifs. L'exécution d'une importation groupée avec ces métadonnées crée les modèles d'actifs et les actifs qu'ils contiennent AWS IoT SiteWise, y compris leurs relations hiérarchiques.

### Fichier de métadonnées pour l'importation
<a name="bulk-import-metadata-file"></a>

```
{
    "assetModels": [
        {
            "assetModelExternalId": "Robot.OEM1.3536",
            "assetModelName": "RobotModel1",
            "assetModelProperties": [
                {
                    "dataType": "DOUBLE",
                    "externalId": "Temperature",
                    "name": "Temperature",
                    "type": {
                        "measurement": {
                            "processingConfig": {
                                "forwardingConfig": {
                                    "state": "ENABLED"
                                }
                            }
                        }
                    },
                    "unit": "fahrenheit"
                }
            ]
        },
        {
            "assetModelExternalId": "ISA95.WorkCell",
            "assetModelName": "WorkCell",
            "assetModelProperties": [],
            "assetModelHierarchies": [
                {
                    "externalId": "workCellHierarchyWithOEM1Robot",
                    "name": "robotHierarchyOEM1",
                    "childAssetModelExternalId": "Robot.OEM1.3536"
                }
            ]
        }
    ],
    "assets": [
        {
            "assetExternalId": "Robot.OEM1.3536.123456",
            "assetName": "RobotArm123456",
            "assetModelExternalId": "Robot.OEM1.3536"
        },
        {
            "assetExternalId": "Robot.OEM1.3536.987654",
            "assetName": "RobotArm987654",
            "assetModelExternalId": "Robot.OEM1.3536"
        },
        {
            "assetExternalId": "BostonSite.Area1.Line1.WorkCell1",
            "assetName": "WorkCell1",
            "assetModelExternalId": "ISA95.WorkCell",
            "assetHierarchies": [
                {
                    "externalId": "workCellHierarchyWithOEM1Robot",
                    "childAssetExternalId": "Robot.OEM1.3536.123456"
                },
                {
                    "externalId": "workCellHierarchyWithOEM1Robot",
                    "childAssetExternalId": "Robot.OEM1.3536.987654"
                }
            ]
        }
    ]
}
```

## Exemple d'intégration initiale de modèles et d'actifs
<a name="example-scenario1"></a>

Dans cet exemple de scénario, vous avez plusieurs sites de travail qui contiennent des robots industriels dans une entreprise.

L'exemple définit plusieurs modèles d'actifs :
+ `Sample_Enterprise`— Ce modèle d'actifs représente l'entreprise dont les sites font partie. Le modèle d'actifs définit une hiérarchie pour représenter la relation entre les sites et l'entreprise. `Enterprise to Site`
+ `Sample_Site`— Ce modèle d'actifs représente les sites de fabrication de l'entreprise. Le modèle d'actifs définit une hiérarchie pour représenter la relation entre les lignes et le site. `Site to Line`
+ `Sample_Welding Line`— Ce modèle d'actifs représente une chaîne de montage sur les sites de travail. Le modèle d'actifs définit une hiérarchie pour représenter la relation entre les robots et la ligne. `Line to Robot`
+ `Sample_Welding Robot`— Ce modèle d'actifs représente un type particulier de robot sur vos sites de travail.

L'exemple définit également les actifs en fonction des modèles d'actifs.
+ `Sample_AnyCompany Motor`— Cet actif est créé à partir du modèle `Sample_Enterprise` d'actif.
+ `Sample_Chicago`— Cet actif est créé à partir du modèle `Sample_Site` d'actif.
+ `Sample_Welding Line 1`— Cet actif est créé à partir du modèle `Sample_Welding Line` d'actif.
+ `Sample_Welding Robot 1`— Cet actif est créé à partir du modèle `Sample_Welding Robot` d'actif.
+ `Sample_Welding Robot 2`— Cet actif est créé à partir du modèle `Sample_Welding Robot` d'actif.

Le fichier de métadonnées JSON suivant définit ces modèles et actifs d'actifs. L'exécution d'une importation groupée avec ces métadonnées crée les modèles d'actifs et les actifs qu'ils contiennent AWS IoT SiteWise, y compris leurs relations hiérarchiques.

### Fichier JSON pour intégrer les actifs et les modèles à importer
<a name="bulk-import-JSON-file"></a>

```
{
    "assetModels": [
        {
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetModelName": "Sample_Welding Robot",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "name": "Serial Number",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "name": "CycleCount",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "EA"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "name": "Joint 1 Current",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "Amps"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Max_Current",
                    "name": "Max Joint 1 Current",
                    "type": {
                        "metric": {
                            "expression": "max(joint1current)",
                            "variables": [
                                {
                                    "name": "joint1current",
                                    "value": {
                                        "propertyExternalId": "External_Id_Welding_Robot_Joint_1_Current"
                                    }
                                }
                            ],
                            "window": {
                                "tumbling": {
                                    "interval": "5m"
                                }
                            }
                        }
                    },
                    "unit": "Amps"
                }
            ]
        },
        {
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetModelName": "Sample_Welding Line",
            "assetModelProperties": [
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Line_Availability",
                    "name": "Availability",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "%"
                }
            ],
            "assetModelHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "name": "Line to Robot",
                    "childAssetModelExternalId": "External_Id_Welding_Robot"
                }
            ]
        },
        {
            "assetModelExternalId": "External_Id_Site",
            "assetModelName": "Sample_Site",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "externalId": "External_Id_Site_Street_Address",
                    "name": "Street Address",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                }
            ],
            "assetModelHierarchies": [
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "name": "Site to Line",
                    "childAssetModelExternalId": "External_Id_Welding_Line"
                }
            ]
        },
        {
            "assetModelExternalId": "External_Id_Enterprise",
            "assetModelName": "Sample_Enterprise",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "name": "Company Name",
                    "externalId": "External_Id_Enterprise_Company_Name",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                }
            ],
            "assetModelHierarchies": [
                {
                    "externalId": "External_Id_Enterprise_TO_Site",
                    "name": "Enterprise to Site",
                    "childAssetModelExternalId": "External_Id_Site"
                }
            ]
        }
    ],
    "assets": [
        {
            "assetExternalId": "External_Id_Welding_Robot_1",
            "assetName": "Sample_Welding Robot 1",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S1000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S1000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S1000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Robot_2",
            "assetName": "Sample_Welding Robot 2",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S2000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S2000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S2000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Line_1",
            "assetName": "Sample_Welding Line 1",
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Line_Availability",
                    "alias": "AnyCompany/Chicago/Welding Line/Availability"
                }
            ],
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_1"
                },
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_2"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Site_Chicago",
            "assetName": "Sample_Chicago",
            "assetModelExternalId": "External_Id_Site",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "childAssetExternalId": "External_Id_Welding_Line_1"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Enterprise_AnyCompany",
            "assetName": "Sample_AnyEnterprise Motor",
            "assetModelExternalId": "External_Id_Enterprise",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Enterprise_TO_Site",
                    "childAssetExternalId": "External_Id_Site_Chicago"
                }
            ]
        }
    ]
}
```

La capture d'écran suivante montre les modèles qui s'affichent Console AWS IoT SiteWise après l'exécution de l'exemple de code précédent.

![\[AWS IoT SiteWise modèles avec modèles d'actifs et d'actifs.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/import-example-asset.png)


La capture d'écran suivante montre les modèles, les actifs et les hiérarchies qui s'affichent Console AWS IoT SiteWise après l'exécution de l'exemple de code précédent.

![\[AWS IoT SiteWise modèles avec actifs, modèles d'actifs et hiérarchies.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/hierarchy-example-import.png)


## Exemple d'intégration d'actifs supplémentaires
<a name="example-scenario2"></a>

Cet exemple définit les actifs supplémentaires à importer dans un modèle d'actif existant dans votre compte :
+ `Sample_Welding Line 2`— Cet actif est créé à partir du modèle `Sample_Welding Line` d'actif.
+ `Sample_Welding Robot 3`— Cet actif est créé à partir du modèle `Sample_Welding Robot` d'actif.
+ `Sample_Welding Robot 4`— Cet actif est créé à partir du modèle `Sample_Welding Robot` d'actif.

Pour créer les actifs initiaux pour cet exemple, reportez-vous à[Exemple d'intégration initiale de modèles et d'actifs](#example-scenario1).

Le fichier de métadonnées JSON suivant définit ces modèles et actifs d'actifs. L'exécution d'une importation groupée avec ces métadonnées crée les modèles d'actifs et les actifs qu'ils contiennent AWS IoT SiteWise, y compris leurs relations hiérarchiques.

### Fichier JSON pour intégrer des ressources supplémentaires
<a name="bulk-import-JSON-file-additional-assets"></a>

```
{
    "assets": [
        {
            "assetExternalId": "External_Id_Welding_Robot_3",
            "assetName": "Sample_Welding Robot 3",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S3000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S3000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S3000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Robot_4",
            "assetName": "Sample_Welding Robot 4",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S4000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S4000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S4000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Line_1",
            "assetName": "Sample_Welding Line 1",
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_1"
                },
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_2"
                },
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_3"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Line_2",
            "assetName": "Sample_Welding Line 2",
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_4"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Site_Chicago",
            "assetName": "Sample_Chicago",
            "assetModelExternalId": "External_Id_Site",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "childAssetExternalId": "External_Id_Welding_Line_1"
                },
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "childAssetExternalId": "External_Id_Welding_Line_2"
                }
            ]
        }
    ]
}
```

La capture d'écran suivante montre les modèles, les actifs et les hiérarchies qui s'affichent Console AWS IoT SiteWise après l'exécution de l'exemple de code précédent.

![\[AWS IoT SiteWise modèles avec modèles d'actifs et d'actifs.\]](http://docs.aws.amazon.com/fr_fr/iot-sitewise/latest/userguide/images/additional-assets-import.png)


## Exemple d'intégration de nouvelles propriétés
<a name="example-scenario3"></a>

Cet exemple définit de nouvelles propriétés sur les modèles d'actifs existants. Veillez [Exemple d'intégration d'actifs supplémentaires](#example-scenario2) à intégrer des actifs et des modèles supplémentaires.
+ `Joint 1 Temperature`— Cette propriété est ajoutée au modèle `Sample_Welding Robot` d'actif. Cette nouvelle propriété se propagera également à chaque actif créé à partir du modèle `Sample_Welding Robot` d'actif. 

Pour ajouter une nouvelle propriété à un modèle d'actif existant, consultez l'exemple de fichier de métadonnées JSON suivant. Comme indiqué dans le JSON, la définition complète du modèle `Sample_Welding Robot` d'actif existant doit être fournie avec la nouvelle propriété. Si la liste complète des propriétés de la définition existante n'est pas fournie, AWS IoT SiteWise supprime les propriétés omises. 

### Fichier JSON pour intégrer de nouvelles propriétés
<a name="bulk-import-JSON-file-new-properties"></a>

Cet exemple ajoute une nouvelle propriété `Joint 1 Temperature` au modèle d'actif.

```
{
    "assetModels": [
        {
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetModelName": "Sample_Welding Robot",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "name": "Serial Number",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "name": "CycleCount",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "EA"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "name": "Joint 1 Current",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "Amps"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Max_Current",
                    "name": "Max Joint 1 Current",
                    "type": {
                        "metric": {
                            "expression": "max(joint1current)",
                            "variables": [
                                {
                                    "name": "joint1current",
                                    "value": {
                                        "propertyExternalId": "External_Id_Welding_Robot_Joint_1_Current"
                                    }
                                }
                            ],
                            "window": {
                                "tumbling": {
                                    "interval": "5m"
                                }
                            }
                        }
                    },
                    "unit": "Amps"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Temperature",
                    "name": "Joint 1 Temperature",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "degC"
                }
            ]
        }
    ]
}
```

## Exemple de gestion de flux de données
<a name="example-managing-data-streams"></a>

 Cet exemple montre deux manières de gérer les flux de données associés à une propriété d'actif. Lorsque vous renommez un alias de propriété d'actif, il existe deux options pour les données historiques actuellement stockées dans le flux de données de la propriété d'actif.
+  Option 1 — Conserver le flux de données actuel et renommer uniquement l'alias, afin que les données historiques soient accessibles avec le nouvel alias. 

   Dans l'exemple de fichier de métadonnées JSON, la propriété de l'actif avec ID `External_Id_Welding_Robot_Cycle_Count` change son alias en`AnyCompany/Chicago/Welding Line/S3000/Count-Updated`. Les données historiques de cette propriété d'actif restent les mêmes après cette modification. 
+  Deuxième option : attribuez un nouveau flux de données à la propriété de l'actif accessible avec le nouvel alias. L'ancien flux de données ainsi que ses données historiques sont toujours accessibles avec l'ancien alias, mais ils ne sont associés à aucune propriété d'actif. 

   Dans l'exemple de fichier de métadonnées JSON, la propriété de l'actif avec ID `External_Id_Welding_Robot_Joint_1_Current` change son alias en`AnyCompany/Chicago/Welding Line/S4999/1/Current`. Cette fois, la valeur supplémentaire `retainDataOnAliasChange` est présente et définie sur`False`. Avec ce paramètre, le flux de données d'origine est dissocié de la propriété de l'actif et un nouveau flux de données ne contenant aucune donnée historique est créé. 

 Pour accéder à l'ancien flux de données contenant les données historiques d'origine AWS Console Home, rendez-vous sur la page *Flux de données* et recherchez l'ancien alias`AnyCompany/Chicago/Welding Line/S3000/1/Current`. 

### Fichier JSON pour mettre à jour les alias de propriété
<a name="bulk-import-JSON-file-update-aliases"></a>

```
{
    "assetExternalId": "External_Id_Welding_Robot_3",
    "assetName": "Sample_Welding Robot 3",
    "assetModelExternalId": "External_Id_Welding_Robot",
    "assetProperties": [
        {
            "externalId": "External_Id_Welding_Robot_Serial_Number",
            "attributeValue": "S3000"
        },
        {
            "externalId": "External_Id_Welding_Robot_Cycle_Count",
            "alias": "AnyCompany/Chicago/Welding Line/S3000/Count-Updated"
        },
        {
            "externalId": "External_Id_Welding_Robot_Joint_1_Current",
            "alias": "AnyCompany/Chicago/Welding Line/S4999/1/Current",
            "retainDataOnAliasChange": "FALSE"
        }
    ]
}
```

# Exemples de métadonnées d'exportation
<a name="bulk-operations-export-filter-examples"></a>

Lorsque vous exportez votre AWS IoT SiteWise contenu en masse vers Amazon S3, vous pouvez définir des *filtres* pour limiter les modèles d'actifs et les actifs spécifiques que vous souhaitez exporter. 

Vous spécifiez les filtres dans une `iotSiteWiseConfiguration` section de la `sources` section du corps de votre demande.

**Note**  
Vous pouvez inclure plusieurs filtres. L'opération groupée exportera tout modèle de ressource ou ressource correspondant à l'un des filtres.  
Si vous ne fournissez aucun filtre, l'opération exportera tous vos modèles et actifs d'actifs.

```
{
    "metadataTransferJobId": "your-transfer-job-id",
    "sources": [{
        "type": "iotsitewise",
        "iotSiteWiseConfiguration": {
            "filters": [{
                list of filters
            }]
        }
    }],
    "destination": {
        "type": "s3",
        "s3Configuration": {
            "location": "arn:aws:s3:::amzn-s3-demo-bucket"
        }
    }
}
```



## Filtrer par modèle d'actif
<a name="bulk-export-filter-asset-model"></a>

Vous pouvez filtrer un modèle d'actif spécifique. Vous pouvez également inclure tous les actifs utilisant ce modèle, ou tous les modèles d'actifs au sein de sa hiérarchie. Vous ne pouvez pas inclure à la fois les actifs et la hiérarchie.

Pour plus d'informations sur les hiérarchies, consultez [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md).

------
#### [ Asset model ]

Ce filtre inclut le modèle d'actif spécifié :

```
"filterByAssetModel": {
    "assetModelId": "asset model ID"
}
```

------
#### [ Asset model and its assets ]

Ce filtre inclut le modèle d'actif spécifié, ainsi que tous les actifs utilisant ce modèle d'actif :

```
"filterByAssetModel": {
    "assetModelId": "asset model ID",
    "includeAssets": true
}
```

------
#### [ Asset model and its hierarchy ]

Ce filtre inclut le modèle d'actif spécifié, ainsi que tous les modèles d'actifs associés dans sa hiérarchie :

```
"filterByAssetModel": {
    "assetModelId": "asset model ID",
    "includeOffspring": true
}
```

------

## Filtrer par actif
<a name="bulk-export-filter-asset"></a>

Vous pouvez filtrer un actif spécifique. Vous pouvez également inclure son modèle d'actif ou tous les actifs associés dans sa hiérarchie. Vous ne pouvez pas inclure à la fois le modèle et la hiérarchie des actifs.

Pour plus d'informations sur les hiérarchies, consultez [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md).

------
#### [ Asset ]

Ce filtre inclut l'actif spécifié :

```
"filterByAsset": {
    "assetId": "asset ID"
}
```

------
#### [ Asset and its asset model ]

Ce filtre inclut l'actif spécifié, ainsi que le modèle d'actif qu'il utilise :

```
"filterByAsset": {
    "assetId": "asset ID",
    "includeAssetModel": true
}
```

------
#### [ Asset and its hierarchy ]

Ce filtre inclut l'actif spécifié, ainsi que tous les actifs associés dans sa hiérarchie :

```
"filterByAsset": {
    "assetId": "asset ID",
    "includeOffspring": true
}
```

------

# AWS IoT SiteWise schéma de tâche de transfert de métadonnées
<a name="bulk-operations-schema"></a>

Utilisez le schéma des tâches de transfert de AWS IoT SiteWise métadonnées à titre de référence lorsque vous effectuez vos propres opérations d'importation et d'exportation en bloc :

```
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "IoTSiteWise",
  "description": "Metadata transfer job resource schema for IoTSiteWise",
  "definitions": {
    "Name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "Description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048,
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "ID": {
      "type": "string",
      "minLength": 36,
      "maxLength": 36,
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
    },
    "ExternalId": {
      "type": "string",
      "minLength": 2,
      "maxLength": 128,
      "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+"
    },
    "AttributeValue": {
      "description": "The value of the property attribute.",
      "type": "string",
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "PropertyUnit": {
      "description": "The unit of measure (such as Newtons or RPM) of the asset property.",
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "PropertyAlias": {
      "description": "The property alias that identifies the property.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "AssetProperty": {
      "description": "The asset property's definition, alias, unit, and notification state.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id"
          ]
        },
        {
          "required": [
            "externalId"
          ]
        }
      ],
      "properties": {
        "id": {
          "description": "The ID of the asset property.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of the asset property.",
          "$ref": "#/definitions/ExternalId"
        },
        "alias": {
          "$ref": "#/definitions/PropertyAlias"
        },
        "unit": {
          "$ref": "#/definitions/PropertyUnit"
        },
        "attributeValue": {
          "$ref": "#/definitions/AttributeValue"
        },
        "retainDataOnAliasChange": {
          "type": "string",
          "default": "TRUE",
          "enum": [
            "TRUE",
            "FALSE"
          ]
        },
        "propertyNotificationState": {
          "description": "The MQTT notification state (ENABLED or DISABLED) for this asset property.",
          "type": "string",
          "enum": [
            "ENABLED",
            "DISABLED"
          ]
        }
      }
    },
    "AssetHierarchy": {
      "description": "A hierarchy specifies allowed parent/child asset relationships.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id",
            "childAssetId"
          ]
        },
        {
          "required": [
            "externalId",
            "childAssetId"
          ]
        },
        {
          "required": [
            "id",
            "childAssetExternalId"
          ]
        },
        {
          "required": [
            "externalId",
            "childAssetExternalId"
          ]
        }
      ],
      "properties": {
        "id": {
          "description": "The ID of a hierarchy in the parent asset's model.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of a hierarchy in the parent asset's model.",
          "$ref": "#/definitions/ExternalId"
        },
        "childAssetId": {
          "description": "The ID of the child asset to be associated.",
          "$ref": "#/definitions/ID"
        },
        "childAssetExternalId": {
          "description": "The ExternalID of the child asset to be associated.",
          "$ref": "#/definitions/ExternalId"
        }
      }
    },
    "Tag": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "key",
        "value"
      ],
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "AssetModelType": {
      "type": "string",
      "default": null,
      "enum": [
        "ASSET_MODEL",
        "COMPONENT_MODEL"
      ]
    },
    "AssetModelCompositeModel": {
      "description": "Contains a composite model definition in an asset model. This composite model definition is applied to all assets created from the asset model.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id"
          ]
        },
        {
          "required": [
            "externalId"
          ]
        }
      ],
      "required": [
        "name",
        "type"
      ],
      "properties": {
        "id": {
          "description": "The ID of the asset model composite model.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of the asset model composite model.",
          "$ref": "#/definitions/ExternalId"
        },
        "parentId": {
          "description": "The ID of the parent asset model composite model.",
          "$ref": "#/definitions/ID"
        },
        "parentExternalId": {
          "description": "The ExternalID of the parent asset model composite model.",
          "$ref": "#/definitions/ExternalId"
        },
        "composedAssetModelId": {
          "description": "The ID of the composed asset model.",
          "$ref": "#/definitions/ID"
        },
        "composedAssetModelExternalId": {
          "description": "The ExternalID of the composed asset model.",
          "$ref": "#/definitions/ExternalId"
        },
        "description": {
          "description": "A description for the asset composite model.",
          "$ref": "#/definitions/Description"
        },
        "name": {
          "description": "A unique, friendly name for the asset composite model.",
          "$ref": "#/definitions/Name"
        },
        "type": {
          "description": "The type of the composite model. For alarm composite models, this type is AWS/ALARM.",
          "$ref": "#/definitions/Name"
        },
        "properties": {
          "description": "The property definitions of the asset model.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetModelProperty"
          }
        }
      }
    },
    "AssetModelProperty": {
      "description": "Contains information about an asset model property.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id"
          ]
        },
        {
          "required": [
            "externalId"
          ]
        }
      ],
      "required": [
        "name",
        "dataType",
        "type"
      ],
      "properties": {
        "id": {
          "description": "The ID of the asset model property.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of the asset model property.",
          "$ref": "#/definitions/ExternalId"
        },
        "name": {
          "description": "The name of the asset model property.",
          "$ref": "#/definitions/Name"
        },
        "dataType": {
          "description": "The data type of the asset model property.",
          "$ref": "#/definitions/DataType"
        },
        "dataTypeSpec": {
          "description": "The data type of the structure for this property.",
          "$ref": "#/definitions/Name"
        },
        "unit": {
          "description": "The unit of the asset model property, such as Newtons or RPM.",
          "type": "string",
          "minLength": 1,
          "maxLength": 256,
          "pattern": "[^\\u0000-\\u001F\\u007F]+"
        },
        "type": {
          "description": "The property type",
          "$ref": "#/definitions/PropertyType"
        }
      }
    },
    "DataType": {
      "type": "string",
      "enum": [
        "STRING",
        "INTEGER",
        "DOUBLE",
        "BOOLEAN",
        "STRUCT"
      ]
    },
    "PropertyType": {
      "description": "Contains a property type, which can be one of attribute, measurement, metric, or transform.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "attribute": {
          "$ref": "#/definitions/Attribute"
        },
        "transform": {
          "$ref": "#/definitions/Transform"
        },
        "metric": {
          "$ref": "#/definitions/Metric"
        },
        "measurement": {
          "$ref": "#/definitions/Measurement"
        }
      }
    },
    "Attribute": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "defaultValue": {
          "type": "string",
          "pattern": "[^\\u0000-\\u001F\\u007F]+"
        }
      }
    },
    "Transform": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "expression",
        "variables"
      ],
      "properties": {
        "expression": {
          "description": "The mathematical expression that defines the transformation function.",
          "type": "string",
          "minLength": 1,
          "maxLength": 1024
        },
        "variables": {
          "description": "The list of variables used in the expression.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExpressionVariable"
          }
        },
        "processingConfig": {
          "$ref": "#/definitions/TransformProcessingConfig"
        }
      }
    },
    "TransformProcessingConfig": {
      "description": "The processing configuration for the given transform property.",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "computeLocation"
      ],
      "properties": {
        "computeLocation": {
          "description": "The compute location for the given transform property.",
          "$ref": "#/definitions/ComputeLocation"
        },
        "forwardingConfig": {
          "description": "The forwarding configuration for a given property.",
          "$ref": "#/definitions/ForwardingConfig"
        }
      }
    },
    "Metric": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "expression",
        "variables",
        "window"
      ],
      "properties": {
        "expression": {
          "description": "The mathematical expression that defines the metric aggregation function.",
          "type": "string",
          "minLength": 1,
          "maxLength": 1024
        },
        "variables": {
          "description": "The list of variables used in the expression.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExpressionVariable"
          }
        },
        "window": {
          "description": "The window (time interval) over which AWS IoT SiteWise computes the metric's aggregation expression",
          "$ref": "#/definitions/MetricWindow"
        },
        "processingConfig": {
          "$ref": "#/definitions/MetricProcessingConfig"
        }
      }
    },
    "MetricProcessingConfig": {
      "description": "The processing configuration for the metric.",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "computeLocation"
      ],
      "properties": {
        "computeLocation": {
          "description": "The compute location for the given metric property.",
          "$ref": "#/definitions/ComputeLocation"
        }
      }
    },
    "ComputeLocation": {
      "type": "string",
      "enum": [
        "EDGE",
        "CLOUD"
      ]
    },
    "ForwardingConfig": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "state"
      ],
      "properties": {
        "state": {
          "type": "string",
          "enum": [
            "ENABLED",
            "DISABLED"
          ]
        }
      }
    },
    "MetricWindow": {
      "description": "Contains a time interval window used for data aggregate computations (for example, average, sum, count, and so on).",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "tumbling": {
          "description": "The tumbling time interval window.",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "interval"
          ],
          "properties": {
            "interval": {
              "description": "The time interval for the tumbling window.",
              "type": "string",
              "minLength": 2,
              "maxLength": 23
            },
            "offset": {
              "description": "The offset for the tumbling window.",
              "type": "string",
              "minLength": 2,
              "maxLength": 25
            }
          }
        }
      }
    },
    "ExpressionVariable": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "name",
        "value"
      ],
      "properties": {
        "name": {
          "description": "The friendly name of the variable to be used in the expression.",
          "type": "string",
          "minLength": 1,
          "maxLength": 64,
          "pattern": "^[a-z][a-z0-9_]*$"
        },
        "value": {
          "description": "The variable that identifies an asset property from which to use values.",
          "$ref": "#/definitions/VariableValue"
        }
      }
    },
    "VariableValue": {
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "propertyId"
          ]
        },
        {
          "required": [
            "propertyExternalId"
          ]
        }
      ],
      "properties": {
        "propertyId": {
          "$ref": "#/definitions/ID"
        },
        "propertyExternalId": {
          "$ref": "#/definitions/ExternalId"
        },
        "hierarchyId": {
          "$ref": "#/definitions/ID"
        },
        "hierarchyExternalId": {
          "$ref": "#/definitions/ExternalId"
        }
      }
    },
    "Measurement": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "processingConfig": {
          "$ref": "#/definitions/MeasurementProcessingConfig"
        }
      }
    },
    "MeasurementProcessingConfig": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "forwardingConfig"
      ],
      "properties": {
        "forwardingConfig": {
          "description": "The forwarding configuration for the given measurement property.",
          "$ref": "#/definitions/ForwardingConfig"
        }
      }
    },
    "AssetModelHierarchy": {
      "description": "Contains information about an asset model hierarchy.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id",
            "childAssetModelId"
          ]
        },
        {
          "required": [
            "id",
            "childAssetModelExternalId"
          ]
        },
        {
          "required": [
            "externalId",
            "childAssetModelId"
          ]
        },
        {
          "required": [
            "externalId",
            "childAssetModelExternalId"
          ]
        }
      ],
      "required": [
        "name"
      ],
      "properties": {
        "id": {
          "description": "The ID of the asset model hierarchy.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of the asset model hierarchy.",
          "$ref": "#/definitions/ExternalId"
        },
        "name": {
          "description": "The name of the asset model hierarchy.",
          "$ref": "#/definitions/Name"
        },
        "childAssetModelId": {
          "description": "The ID of the asset model. All assets in this hierarchy must be instances of the child AssetModelId asset model.",
          "$ref": "#/definitions/ID"
        },
        "childAssetModelExternalId": {
          "description": "The ExternalID of the asset model. All assets in this hierarchy must be instances of the child AssetModelId asset model.",
          "$ref": "#/definitions/ExternalId"
        }
      }
    },
    "AssetModel": {
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "assetModelId"
          ]
        },
        {
          "required": [
            "assetModelExternalId"
          ]
        }
      ],
      "required": [
        "assetModelName"
      ],
      "properties": {
        "assetModelId": {
          "description": "The ID of the asset model.",
          "$ref": "#/definitions/ID"
        },
        "assetModelExternalId": {
          "description": "The ID of the asset model.",
          "$ref": "#/definitions/ExternalId"
        },
        "assetModelName": {
          "description": "A unique, friendly name for the asset model.",
          "$ref": "#/definitions/Name"
        },
        "assetModelDescription": {
          "description": "A description for the asset model.",
          "$ref": "#/definitions/Description"
        },
        "assetModelType": {
          "description": "The type of the asset model.",
          "$ref": "#/definitions/AssetModelType"
        },
        "assetModelProperties": {
          "description": "The property definitions of the asset model.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetModelProperty"
          }
        },
        "assetModelCompositeModels": {
          "description": "The composite asset models that are part of this asset model. Composite asset models are asset models that contain specific properties.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetModelCompositeModel"
          }
        },
        "assetModelHierarchies": {
          "description": "The hierarchy definitions of the asset model. Each hierarchy specifies an asset model whose assets can be children of any other assets created from this asset model.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetModelHierarchy"
          }
        },
        "tags": {
          "description": "A list of key-value pairs that contain metadata for the asset model.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tag"
          }
        }
      }
    },
    "Asset": {
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "assetId",
            "assetModelId"
          ]
        },
        {
          "required": [
            "assetExternalId",
            "assetModelId"
          ]
        },
        {
          "required": [
            "assetId",
            "assetModelExternalId"
          ]
        },
        {
          "required": [
            "assetExternalId",
            "assetModelExternalId"
          ]
        }
      ],
      "required": [
        "assetName"
      ],
      "properties": {
        "assetId": {
          "description": "The ID of the asset",
          "$ref": "#/definitions/ID"
        },
        "assetExternalId": {
          "description": "The external ID of the asset",
          "$ref": "#/definitions/ExternalId"
        },
        "assetModelId": {
          "description": "The ID of the asset model from which to create the asset.",
          "$ref": "#/definitions/ID"
        },
        "assetModelExternalId": {
          "description": "The ExternalID of the asset model from which to create the asset.",
          "$ref": "#/definitions/ExternalId"
        },
        "assetName": {
          "description": "A unique, friendly name for the asset.",
          "$ref": "#/definitions/Name"
        },
        "assetDescription": {
          "description": "A description for the asset",
          "$ref": "#/definitions/Description"
        },
        "assetProperties": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetProperty"
          }
        },
        "assetHierarchies": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetHierarchy"
          }
        },
        "tags": {
          "description": "A list of key-value pairs that contain metadata for the asset.",
          "type": "array",
          "uniqueItems": false,
          "items": {
            "$ref": "#/definitions/Tag"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "properties": {
    "assetModels": {
      "type": "array",
      "uniqueItems": false,
      "items": {
        "$ref": "#/definitions/AssetModel"
      }
    },
    "assets": {
      "type": "array",
      "uniqueItems": false,
      "items": {
        "$ref": "#/definitions/Asset"
      }
    }
  }
}
```