本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
本节介绍了如何通过一次批量导入操作创建元数据文件,以导入资产模型和资产。
批量导入示例
通过一次批量导入操作导入多个资产模型和资产。以下示例说明了如何创建元数据文件来完成此操作。
在此示例场景中,您拥有不同的工作场所,其工作单元中包含工业机器人。
此示例定义了两种资产模型:
-
RobotModel1
:此资产模型表示您在工作场所拥有的一种特定类型的机器人。机器人具有测量值属性Temperature
。 -
WorkCell
:此资产模型表示您的一个工作场所中的机器人集合。此资产模型定义了一个层次结构robotHierarchyOEM1
,用于表示工作单元包含机器人的关系。
此示例还定义了一些资产:
-
WorkCell1
:波士顿站点内的一个工作单元 -
RobotArm123456
:该工作单元中的一个机器人 -
RobotArm987654
:该工作单元中的另一个机器人
以下 JSON 元数据文件定义了这些资产模型和资产。使用此元数据进行批量导入会在其中创建资产模型和资产 AWS IoT SiteWise,包括它们的层次关系。
{
"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"
}
]
}
]
}
模型和资产的初始载入示例
在此示例场景中,您拥有不同的工作场所,包含一家公司的工业机器人。
此示例定义了多个资产模型:
-
Sample_Enterprise
— 此资产模型表示这些站点所属的公司。此资产模型定义了一个层次结构Enterprise to Site
,用于表示站点与企业的关系。 -
Sample_Site
— 此资产模型表示公司内部的制造站点。此资产模型定义了一个层次结构Site to Line
,用于表示装配线与站点的关系。 -
Sample_Welding Line
— 此资产模型表示工作场所内的装配线。此资产模型定义了一个层次结构Line to Robot
,用于表示机器人与装配线的关系。 -
Sample_Welding Robot
— 此资产模型表示您的工作场所中的一种特定类型的机器人。
此示例还根据资产模型定义资产。
-
Sample_AnyCompany Motor
– 此资产是从Sample_Enterprise
资产模型创建的。 -
Sample_Chicago
– 此资产是从Sample_Site
资产模型创建的。 -
Sample_Welding Line 1
– 此资产是从Sample_Welding Line
资产模型创建的。 -
Sample_Welding Robot 1
– 此资产是从Sample_Welding Robot
资产模型创建的。 -
Sample_Welding Robot 2
– 此资产是从Sample_Welding Robot
资产模型创建的。
以下 JSON 元数据文件定义了这些资产模型和资产。使用此元数据进行批量导入会在其中创建资产模型和资产 AWS IoT SiteWise,包括它们的层次关系。
{
"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"
}
]
}
]
}
以下屏幕截图显示的是运行前面的代码示例 AWS IoT SiteWise 控制台 之后显示的模型。

以下屏幕截图显示了运行上一个代码示例 AWS IoT SiteWise 控制台 之后显示在中的模型、资产和层次结构。

载入额外资产的示例
此示例定义了要导入到您账户中现有资产模型的其他资产:
-
Sample_Welding Line 2
– 此资产是从Sample_Welding Line
资产模型创建的。 -
Sample_Welding Robot 3
– 此资产是从Sample_Welding Robot
资产模型创建的。 -
Sample_Welding Robot 4
– 此资产是从Sample_Welding Robot
资产模型创建的。
要为此示例创建初始资产,请参阅模型和资产的初始载入示例。
以下 JSON 元数据文件定义了这些资产模型和资产。使用此元数据进行批量导入会在其中创建资产模型和资产 AWS IoT SiteWise,包括它们的层次关系。
{
"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"
}
]
}
]
}
以下屏幕截图显示了运行上一个代码示例 AWS IoT SiteWise 控制台 之后显示在中的模型、资产和层次结构。

载入新属性的示例
此示例定义了现有资产模型上的新属性。请参阅载入额外资产的示例,以载入其他资产和模型。
-
Joint 1 Temperature
– 此属性已添加到Sample_Welding Robot
资产模型中。此新属性还将传播到从Sample_Welding Robot
资产模型创建的每个资产。
要向现有资产模型添加新属性,请参阅以下 JSON 元数据文件示例。如 JSON 所示,必须提供新属性以及现有 Sample_Welding Robot
资产模型的完整定义。如果未提供现有定义中的整个属性列表,则 AWS IoT SiteWise 删除省略的属性。
此示例向资产模型添加了一个新属性 Joint 1 Temperature
。
{
"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"
}
]
}
]
}
管理数据流的示例
此示例介绍了管理与资产属性关联的数据流的两种方法。重命名资产属性别名时,对于当前存储在资产属性的数据流中的历史数据,有两个选项。
-
选项一 — 保留当前数据流并仅重命名别名,这会支持使用新别名访问历史数据。
在 JSON 元数据文件示例中,带有 ID
External_Id_Welding_Robot_Cycle_Count
的资产属性将其别名更改为AnyCompany/Chicago/Welding Line/S3000/Count-Updated
。该资产属性的历史数据不受此次更改的影响,将保持不变。 -
选项二 — 为资产属性分配新的数据流,该数据流可使用新别名进行访问。旧数据流及其历史数据仍可使用旧别名进行访问,但不与任何资产属性相关联。
在 JSON 元数据文件示例中,带有 ID
External_Id_Welding_Robot_Joint_1_Current
的资产属性将其别名更改为AnyCompany/Chicago/Welding Line/S4999/1/Current
。这次,存在其他值retainDataOnAliasChange
并将其设置为False
。通过此设置,原始数据流将与资产属性断开关联,并会创建一个不包含历史数据的新数据流。
要使用原始历史数据访问旧数据流,请在中 AWS Console Home,转到 “数据流” 页面并搜索旧别名AnyCompany/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"
}
]
}