

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在中创建资产模型 Amazon IoT SiteWise
<a name="create-asset-models"></a>

Amazon IoT SiteWise 资产模型推动工业数据的标准化。资产模型包含名称、描述、资产属性和资产层次结构定义。例如，您可以使用温度、每分钟旋转次数 (RPM) 和功率属性来定义风力涡轮机模型。然后，可以使用净功率输出属性和风力涡轮机层次结构定义来定义风电场模型。

**注意**  
我们建议您从最低级别的节点开始对运营进行建模。例如，在创建风电场模型之前创建风力涡轮机模型。资产层次结构定义包含对现有资产模型的引用。通过这种方法，您可以在创建模型时定义资产层次结构。
资产模型无法包含其他资产模型。如果必须定义一个可以在另一个模型中作为子装配件引用的模型，则应改为创建一个组件--> 模型。有关更多信息，请参阅 [创建组件模型](create-component-models.md)。

以下各节介绍如何使用 Amazon IoT SiteWise 控制台或 API 创建资产模型。以及可用于创建模型的不同类型的资产属性和资产层次结构。

**Topics**
+ [创建资产模型（控制台）](#create-asset-model-console)
+ [创建资产模型（Amazon CLI）](#create-asset-model-cli)
+ [资产模型示例](#asset-model-examples)
+ [定义资产模型层次结构](define-asset-hierarchies.md)

## 创建资产模型（控制台）
<a name="create-asset-model-console"></a>

您可以使用 Amazon IoT SiteWise 控制台创建资产模型。 Amazon IoT SiteWise 控制台提供各种功能，例如公式 auto 补全，可以帮助您定义有效的资产模型。

**创建资产模型（控制台）**

1. <a name="sitewise-open-console"></a>导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

1. <a name="sitewise-choose-models"></a>在导航窗格中，选择**模型**。

1. 选择 “**创建资产模型**”。

1. 在 **创建模型** 页面上，执行以下操作：

   1. 为资产模型输入 **名称**，例如 **Wind Turbine** 或 **Wind Turbine Model**。此名称对于您账户在此区域的所有模型都必须是唯一的。

   1. （可选）为模型添加**外部 ID**。这是用户定义的 ID。有关更多信息，请参阅《Amazon IoT SiteWise 用户指南》**中的 [使用外部引用对象 IDs](object-ids.md#external-id-references)。

   1. （可选）为模型添加 **测量值定义**。测量值代表来自您的设备的数据流。有关更多信息，请参阅 [定义来自设备的数据流（测量值）](measurements.md)。

   1. （可选）为模型添加 **转换定义**。转换是将数据从一种表单映射到另一种表单的公式。有关更多信息，请参阅 [转换数据（转换）](transforms.md)。

   1. （可选）为模型添加 **指标定义**。指标是按时间间隔汇总数据的公式。指标可以从关联资产的指标中输入数据，这样您可以计算统计信息，从而提供对整个操作或部分操作的见解。有关更多信息，请参阅 [聚合来自属性和其他资产（指标）的数据](metrics.md)。

   1. （可选）为模型添加 **层次结构定义**。层次结构是资产之间的关系。有关更多信息，请参阅 [定义资产模型层次结构](define-asset-hierarchies.md)。

   1. （可选）为资产模型添加标签。有关更多信息，请参阅 [标记您的 Amazon IoT SiteWise 资源](tag-resources.md)。

   1. 选择**创建模型**。

   创建资产模型时， Amazon IoT SiteWise 控制台会导航到新模型的页面。在此页面上，您可以查看模型的 **状态**，最初为 **创建**。此页面会自动更新，因此您可以等待模型的状态更新。
**注意**  
复杂模型的资产模型创建流程最多可能需要几分钟时间。在资产模型状态为**活动**后，您可以使用资产模型创建资产。有关更多信息，请参阅 [资产和模型状态](asset-and-model-states.md)。

## 创建资产模型（Amazon CLI）
<a name="create-asset-model-cli"></a>

您可以使用 Amazon Command Line Interface (Amazon CLI) 来创建资产模型。

使用 [CreateAssetModel](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) 操作创建具有属性和层次结构的资产模型。此操作需要具有以下结构的负载。

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

**要创建资产模型（Amazon CLI），请执行以下操作：**

1. 创建一个名为 `asset-model-payload.json` 的文件，然后将以下 JSON 对象复制到该文件中。

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

1. 使用首选的 JSON 文本编辑器编辑 `asset-model-payload.json` 文件的以下内容：

   1. 输入资产模型的名称 (`assetModelName`)，如 **Wind Turbine** 或 **Wind Turbine Model**。此名称对于您账户在此 Amazon Web Services 区域的所有资产模型和组件模型都必须是唯一的。

   1. （可选）输入该资产模型的外部 ID（`assetModelExternalId`）。这是用户定义的 ID。有关更多信息，请参阅《Amazon IoT SiteWise 用户指南》**中的 [使用外部引用对象 IDs](object-ids.md#external-id-references)。

   1. （可选）输入资产模型的说明（`assetModelDescription`），或删除 `assetModelDescription` 键/值对。

   1. （可选）定义模型的资产属性 (`assetModelProperties`)。有关更多信息，请参阅 [定义数据属性](asset-properties.md)。

   1. （可选）定义模型的资产层次结构 (`assetModelHierarchies`)。有关更多信息，请参阅 [定义资产模型层次结构](define-asset-hierarchies.md)。

   1. （可选）为资产模型添加标签（`tags`）。有关更多信息，请参阅 [标记您的 Amazon IoT SiteWise 资源](tag-resources.md)。

1. 运行以下命令，根据 JSON 文件中的定义创建资产模型。

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

   此操作将返回包含您在创建资产时引用的 `assetModelId` 的响应。响应中还包含模型的状态（`assetModelStatus.state`），最初为 `CREATING`。在传播更改之前，资产模型的状态为 `CREATING`。
**注意**  
复杂模型的资产模型创建流程最多可能需要几分钟时间。要检查资产模型的当前状态，请[DescribeAssetModel](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)通过指定`assetModelId`。在资产模型状态为 `ACTIVE` 后，您可以使用资产模型创建资产。有关更多信息，请参阅 [资产和模型状态](asset-and-model-states.md)。

1. （可选）为您的资产模型创建自定义复合模型。借助自定义复合模型，您可以在模型内对属性进行分组，也可以通过引用组件模型来包含子装配件。有关更多信息，请参阅 [创建自定义复合模型（组件）](create-custom-composite-models.md)。

## 资产模型示例
<a name="asset-model-examples"></a>

本节包含资产模型定义示例，您可以使用这些示例使用 Amazon CLI 和创建资产模型 Amazon IoT SiteWise SDKs。这些资产模型代表风力涡轮机和风电场。风力涡轮机资产会摄取原始传感器数据并计算功率和平均风速等值。风电场资产计算诸如风电场中所有风力涡轮机的总功率之类的值。

**Topics**
+ [风力涡轮机资产模型](#example-wind-turbine)
+ [风电场资产模型](#example-wind-farm)

### 风力涡轮机资产模型
<a name="example-wind-turbine"></a>

以下资产模型表示风电场中的涡轮机。风力涡轮机摄取传感器数据来计算功率和平均风速等值。

**注意**  
此示例模型类似于 Amazon IoT SiteWise 演示中的风力涡轮机模型。有关更多信息，请参阅 [使用演 Amazon IoT SiteWise 示](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": []
}
```

### 风电场资产模型
<a name="example-wind-farm"></a>

以下资产模型表示由多台风力涡轮机组成的风电场。该资产模型定义了风力涡轮机模型的[层次结构](define-asset-hierarchies.md)。这使风电场能够根据风电场中所有风力涡轮机的数据计算值（例如平均功率）。

**注意**  
此示例模型类似于 Amazon IoT SiteWise 演示中的风力发电场模型。有关更多信息，请参阅 [使用演 Amazon IoT SiteWise 示](getting-started-demo.md)。

此资产模型依赖于[风力涡轮机资产模型](#example-wind-turbine)。将 `propertyId` 和 `childAssetModelId` 值替换为现有风力涡轮机资产模型中的对应值。

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