

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 구성 요소 유형 예
<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)에서 더 많은 예를 사용할 수 있습니다.

## Timestream 원격측정
<a name="twinmaker-component-types-examples-telemetry"></a>

다음 예는 외부 소스에서 특정 유형의 구성 요소 (예: 경보 또는 쿠키 믹서) 에 대한 원격 분석 데이터를 검색하는 간단한 구성 요소 유형입니다. 구성 요소 유형이 상속하는 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>

다음 예제는 타임스트림 텔레메트리 구성 요소 유형으로 부터 상속합니다. 쿠키 믹서의 회전 속도 및 온도에 대한 추가 시계열 속성을 지정합니다.

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