

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 範例元件類型
<a name="twinmaker-component-types-examples"></a>

本主題包含示範如何實作元件類型重要概念的範例。

## 警報 (摘要)
<a name="twinmaker-component-types-examples-alarm"></a>

下列範例是顯示在 AWS IoT TwinMaker 主控台中的抽象警示元件類型。它包含`functions`一個包含沒`dataReader`有`implementedBy`值的列表。

```
{
  "componentTypeId": "com.example.alarm.basic:1",
  "workspaceId": "{{MyWorkspace}}",
  "description": "Abstract alarm component type",
  "functions": {
    "dataReader": {
         "isInherited": false
    }
  },
  "isSingleton": false,
  "propertyDefinitions": {
    "alarm_key": {
      "dataType": { "type": "STRING" },
      "isExternalId": true,
      "isRequiredInEntity": true,
      "isStoredExternally": false,
      "isTimeSeries": false
    },
    "alarm_status": {
      "dataType": {
        "allowedValues": [
          {
            "stringValue": "ACTIVE"
          },
          {
            "stringValue": "SNOOZE_DISABLED"
          },
          {
            "stringValue": "ACKNOWLEDGED"
          },
          {
            "stringValue": "NORMAL"
          }
        ],
        "type": "STRING"
      },
      "isRequiredInEntity": false,
      "isStoredExternally": true,
      "isTimeSeries": true
    }
  }
}
```

備註：

`componentTypeId`和的值`workspaceID`是必要的。的值對您的工作區`componentTypeId`必須是唯一的。的值`alarm_key`是唯一識別碼，函數可用來從外部來源擷取警示資料。密鑰的值是必需的，並存儲在中 AWS IoT TwinMaker。時`alarm_status`間序列值儲存在外部來源中。

[範例中AWS IoT TwinMaker 提供更多範例。](https://github.com/aws-samples/aws-iot-twinmaker-samples)

## 時間流遙測
<a name="twinmaker-component-types-examples-telemetry"></a>

下列範例是簡單的元件類型，可從外部來源擷取特定元件類型 (例如警示或 Cookie 混合器) 的遙測資料。它指定了組件類型繼承的 Lambda 函數。

```
{
    "componentTypeId": "com.example.timestream-telemetry",
    "workspaceId": "{{MyWorkspace}}",
    "functions": {
        "dataReader": {
            "implementedBy": {
                "lambda": {
                    "arn": "{{lambdaArn}}"
                }
            }
        }
    },
    "propertyDefinitions": {
        "telemetryType": {
            "dataType": { "type": "STRING" },
            "isExternalId": false,
            "isStoredExternally": false,
            "isTimeSeries": false,
            "isRequiredInEntity": true
        },
        "telemetryId": {
            "dataType": { "type": "STRING" },
            "isExternalId": false,
            "isStoredExternally": false,
            "isTimeSeries": false,
            "isRequiredInEntity": true
        }
    }
}
```

## 報警（從抽象報警繼承）
<a name="twinmaker-component-types-examples-alarm-implementation"></a>

下列範例會繼承抽象警示和時間串流遙測元件類型。它指定了自己的 Lambda 函數來檢索警報數據。

```
{
    "componentTypeId": "com.example.cookiefactory.alarm",
    "workspaceId": "{{MyWorkspace}}",
    "extendsFrom": [
        "com.example.timestream-telemetry",
        "com.amazon.iottwinmaker.alarm.basic"
    ],
    "propertyDefinitions": {
        "telemetryType": {
            "defaultValue": {
                "stringValue": "Alarm"
            }
        }
    },
    "functions": {
        "dataReader": {
            "implementedBy": {
                "lambda": {
                    "arn": "{{lambdaArn}}"
                }
            }
        }
    }
}
```

**注意**  
由於警示連接器繼承自抽象警示元件類型，因此 Lambda 函數必須傳回`alarm_key`值。如果您沒有傳回此值，Grafana 將無法將其識別為鬧鐘。這是所有返回警報的組件都必需的。

## 設備實例
<a name="twinmaker-component-types-examples-equipment"></a>

本節中的範例說明如何建立潛在設備的模型。您可以使用這些範例來獲得有關如何在自己的流程中建模設備的一些想法。

### 餅乾攪拌機
<a name="twinmaker-component-types-examples-mixer"></a>

下列範例會繼承自時間串流遙測元件類型。它為 Cookie 混合器的旋轉速率和溫度指定其他時間序列屬性。

```
{
    "componentTypeId": "com.example.cookiefactory.mixer",
    "workspaceId": "{{MyWorkspace}}",
    "extendsFrom": [
        "com.example.timestream-telemetry"
    ],
    "propertyDefinitions": {
        "telemetryType": {
            "defaultValue" : { "stringValue": "Mixer" }
        },
        "RPM": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        },
        "Temperature": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        }
    }
}
```

### 水箱
<a name="twinmaker-component-types-examples-watertank"></a>

下列範例會繼承自時間串流遙測元件類型。它為水箱的體積和流量指定其他時間序列屬性。

```
{
    "componentTypeId": "com.example.cookiefactory.watertank",
    "workspaceId": "{{MyWorkspace}}",
    "extendsFrom": [
        "com.example.timestream-telemetry"
    ],
    "propertyDefinitions": {
        "telemetryType": {
            "defaultValue" : { "stringValue": "WaterTank" }
        },
        "tankVolume1": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        },
        "tankVolume2": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        },
        "flowRate1": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        },
        "flowrate2": {
            "dataType": { "type": "DOUBLE" },
            "isTimeSeries": true,
            "isStoredExternally": true
        }
    }
}
```

### 空間位置
<a name="twinmaker-component-types-examples-space"></a>

下列範例包含屬性，其值會儲存在中 AWS IoT TwinMaker。由於這些值是由使用者指定並儲存在內部，因此不需要任何函數即可擷取它們。此範例也會使用資`RELATIONSHIP`料類型來指定與其他元件類型的關係。

此元件提供輕量型機制，用於將上下文加入至數位孿生。您可以使用它來添加元數據，指示某些東西的位置。您也可以在邏輯上使用此資訊，以判斷哪些攝影機可以看到某個設備或空間，或知道如何將某人派往某個位置。

```
{
    "componentTypeId": "com.example.cookiefactory.space",
    "workspaceId": "{{MyWorkspace}}",
    "propertyDefinitions": {
        "position":  {"dataType": {"nestedType": {"type": "DOUBLE"},"type": "LIST"}},
        "rotation":  {"dataType": {"nestedType": {"type": "DOUBLE"},"type": "LIST"}},
        "bounds":  {"dataType": {"nestedType": {"type": "DOUBLE"},"type": "LIST"}},
        "parent_space" : { "dataType": {"type": "RELATIONSHIP"}}
    }
}
```