Exemples d'importation de métadonnées - AWS IoT SiteWise

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.

Exemples d'importation de métadonnées

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

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 sur 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 au sein de cette cellule de travail

  • RobotArm987654: un autre robot au sein de cette cellule de travail

Le fichier de JSON métadonnées 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.

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

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 JSON métadonnées 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.

{ "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.

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.

Exemple d'intégration d'actifs supplémentaires

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.

Le fichier de JSON métadonnées 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.

{ "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.

Exemple d'intégration de nouvelles propriétés

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 à 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 de ressource existant, consultez l'exemple de fichier de JSON métadonnées suivant. Comme indiqué dans leJSON, 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.

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

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 du fichier de JSON métadonnées, la propriété de l'actif avec ID External_Id_Welding_Robot_Cycle_Count change son alias enAnyCompany/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 du fichier de JSON métadonnées, la propriété de l'actif avec ID External_Id_Welding_Robot_Joint_1_Current change son alias enAnyCompany/Chicago/Welding Line/S4999/1/Current. Cette fois, la valeur supplémentaire retainDataOnAliasChange est présente et définie surFalse. 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 aliasAnyCompany/Chicago/Welding Line/S3000/1/Current.

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