

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

# 创建组件模型
<a name="create-component-models"></a>

使用 AWS IoT SiteWise 组件模型定义子组件，您可以从资产模型或其他组件模型中引用这些子组件。这样，您就可以在多个其他模型中重复使用组件的定义，也可以在同一个模型中多次重复使用该组件的定义。

定义组件模型的过程与定义资产模型非常相似。与资产模型一样，组件模型也有名称、描述和资产属性。但是，组件模型不能包含资产层次结构定义，因为组件模型本身不能直接用于创建资产。组件模型也无法定义警报。

例如，您可以使用电机温度、编码器温度和绝缘电阻属性为伺服电机定义组件。然后，您可以为包含伺服电机的设备（例如数控机床）定义资产模型。

**注意**  
我们建议您从最低级别的节点开始对运营进行建模。例如，在创建数控机床的资产模型之前，先创建伺服电机组件。资产模型包含对现有组件模型的引用。
您无法直接从组件模型创建资源。要创建使用您的组件的资产，您必须为该资产创建资产模型。然后，为其创建引用您的组件的自定义复合模型。有关创建资产模型的更多信息，请参阅[在中创建资产模型 AWS IoT SiteWise](create-asset-models.md)。有关创建自定义复合模型的更多信息，请参阅[创建自定义复合模型（组件）](create-custom-composite-models.md)。

以下各节介绍如何使用 AWS IoT SiteWise API 创建组件模型。

**Topics**
+ [创建组件模型（AWS CLI）](#create-component-model-cli)
+ [示例组件模型](#component-model-example)

## 创建组件模型（AWS CLI）
<a name="create-component-model-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 来创建组件模型。

使用[CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html)操作创建具有属性的组件模型。此操作需要具有以下结构的有效载荷：

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

**要创建组件模型（AWS CLI），请执行以下步骤：**

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

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

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

   1. 为组件模型输入一个名称（`assetModelName`），如 **Servo Motor** 或 **Servo Motor Model**。此名称对于您账户在此 AWS 区域的所有资产模型和组件模型都必须是唯一的。

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

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

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

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

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

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

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

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

## 示例组件模型
<a name="component-model-example"></a>

本节包含一个组件模型定义示例，您可以使用该示例创建带有 AWS CLI 和的组件模型 AWS IoT SiteWise SDKs。此组件模型表示可以在其他设备（例如数控机床）中使用的伺服电机。

**Topics**
+ [伺服电机组件模型](#example-servo-motor)

### 伺服电机组件模型
<a name="example-servo-motor"></a>

以下组件模型表示可在数控机床等设备中使用的伺服电机。伺服电机提供各种测量值，例如温度和电阻。这些测量值可用作从引用伺服电机组件模型的资产模型创建的资产的属性。

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