

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Komponententypen verwenden und erstellen
<a name="twinmaker-component-types"></a>

Dieses Thema führt Sie durch die Werte und Strukturen, die Sie zum Erstellen eines AWS IoT TwinMaker Komponententyps verwenden. Es zeigt Ihnen, wie Sie ein Anforderungsobjekt erstellen, das Sie an die [CreateComponentType](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_CreateComponentType.html)API oder mithilfe des Komponententyp-Editors in der AWS IoT TwinMaker Konsole übergeben können.

Komponenten bieten Kontext für Eigenschaften und Daten für die zugehörigen Entitäten.

## Integrierte Komponententypen
<a name="twinmaker-component-types-built-in"></a>

Wenn Sie in der AWS IoT TwinMaker Konsole einen Workspace auswählen und dann im linken Bereich **Komponententypen** auswählen, werden Ihnen die folgenden Komponententypen angezeigt.
+ **com.amazon.iotsitewise.resourcesync**: Ein Komponententyp, der Ihre AWS IoT SiteWise Ressourcen und Objektmodelle automatisch synchronisiert und sie in Entitätskomponenten und Komponententypen konvertiert. AWS IoT TwinMaker [Weitere Informationen zur Verwendung der Asset-Synchronisierung finden Sie unter Asset-Synchronisierung mit. AWS IoT SiteWiseAWS IoT SiteWise](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/tm-sw-asset-sync.html)
+ **com.amazon.iottwinmaker.alarm.basic: Eine grundlegende Alarmkomponente**, die Alarmdaten aus einer externen Quelle an eine Entität überträgt. Diese Komponente enthält keine Funktion, die eine Verbindung zu einer bestimmten Datenquelle herstellt. Das bedeutet, dass die Alarmkomponente abstrakt ist und von einem anderen Komponententyp vererbt werden kann, der eine Datenquelle und eine Funktion angibt, die aus dieser Quelle liest.
+ **com.amazon.iottwinmaker.documents: Eine einfache Zuordnung von Titeln zu URLs Dokumenten**, die Informationen über eine Entität enthalten.
+ **com.amazon.iotsitewise.connector.edgevideo: Eine Komponente, die mithilfe der Komponente Edge Connector for Kinesis Video** Streams Video Videos von einem IoT-Gerät in eine Entität überträgt. AWS IoT Greengrass Die [AWS IoT Greengrass Komponente Edge Connector for Kinesis Video Streams](https://docs.aws.amazon.com/greengrass/v2/developerguide/kvs-edge-connector-component.html) ist keine AWS IoT TwinMaker Komponente, sondern eine vorgefertigte AWS IoT Greengrass Komponente, die lokal auf Ihrem IoT-Gerät bereitgestellt wird.
+ **com.amazon.iotsitewise.connector**: Eine Komponente, die Daten in eine Entität überträgt. AWS IoT SiteWise 
+ **com.amazon.iottwinmaker.parameters**: Eine Komponente, die einer Entität statische Schlüssel-Wert-Paare hinzufügt.
+ **com.amazon.kvs.video**: Eine Komponente, die Videos aus Kinesis Video Streams in eine Entität überträgt. AWS IoT TwinMaker 

![\[Die Konsolenseite mit den Komponententypen mit einer Liste mehrerer vordefinierter Komponententypen.\]](http://docs.aws.amazon.com/de_de/iot-twinmaker/latest/guide/images/ComponentTypesPredefined.png)


## Kernmerkmale der AWS IoT TwinMaker Komponententypen
<a name="twinmaker-component-types-core"></a>

In der folgenden Liste werden die Kernfunktionen der Komponententypen beschrieben.
+ **Eigenschaftsdefinitionen**: Das [PropertyDefinitionRequest](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_PropertyDefinitionRequest.html)Objekt definiert eine Eigenschaft, die Sie im Scene Composer auffüllen können, oder sie kann mit Daten aus externen Datenquellen gefüllt werden. Statische Eigenschaften, die Sie festlegen, werden in AWS IoT TwinMaker gespeichert. Zeitreiheneigenschaften und andere Eigenschaften, die aus Datenquellen abgerufen werden, werden extern gespeichert.

  Sie geben Eigenschaftsdefinitionen innerhalb einer Zeichenfolge für die `PropertyDefinitionRequest` Map an. Jede Zeichenfolge muss für die Map eindeutig sein.
+ **Funktionen**: Das [FunctionRequest](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_FunctionRequest.html)Objekt spezifiziert eine Lambda-Funktion, die aus einer externen Datenquelle liest und möglicherweise in eine externe Datenquelle schreibt.

  Ein Komponententyp, der eine Eigenschaft mit einem Wert enthält, der extern gespeichert ist, für den jedoch keine entsprechende Funktion zum Abrufen der Werte vorhanden ist, ist ein abstrakter Komponententyp. Sie können konkrete Komponententypen von einem abstrakten Komponententyp aus erweitern. Sie können einer Entität keine abstrakten Komponententypen hinzufügen. Sie erscheinen nicht im Scene Composer.

  Sie geben Funktionen innerhalb einer Zeichenfolge an, die zugeordnet werden `FunctionRequest` sollen. Die Zeichenfolge muss einen der folgenden vordefinierten Funktionstypen angeben.
  + `dataReader`: Eine Funktion, die Daten aus einer externen Quelle bezieht.
  + `dataReaderByEntity`: Eine Funktion, die Daten aus einer externen Quelle bezieht.

    Wenn Sie diese Art von Datenlesegerät verwenden, unterstützt der [GetPropertyValueHistory](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_GetPropertyValueHistory.html)API-Vorgang nur entitätsspezifische Abfragen für Eigenschaften in diesem Komponententyp. (Sie können den Verlauf der Eigenschaftswerte nur für `componentName` \$1 `entityId` anfordern.)
  + `dataReaderByComponentType`: Eine Funktion, die Daten aus einer externen Quelle bezieht.

    Wenn Sie diese Art von Datenlesegerät verwenden, unterstützt der [GetPropertyValueHistory](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_GetPropertyValueHistory.html)API-Vorgang nur entitätsübergreifende Abfragen für Eigenschaften in diesem Komponententyp. (Sie können nur die Historie der Eigenschaftswerte für anfordern`componentTypeId`.)
  + `dataWriter`: Eine Funktion, die Daten in eine externe Quelle schreibt.
  + `schemaInitializer`: Eine Funktion, die Eigenschaftswerte automatisch initialisiert, wenn Sie eine Entität erstellen, die den Komponententyp enthält.

  Bei einem nicht abstrakten Komponententyp ist einer der drei Typen von Datenlesefunktionen erforderlich.

  [Ein Beispiel für eine Lambda-Funktion, die Time-Stream-Telemetriekomponenten, einschließlich Alarme, implementiert, finden Sie im Datenlesegerät unter Beispiele.AWS IoT TwinMaker](https://github.com/aws-samples/aws-iot-twinmaker-samples/blob/main/src/modules/timestream_telemetry/lambda_function/udq_data_reader.py) 
**Anmerkung**  
Da der Alarmanschluss vom abstrakten Alarmkomponententyp erbt, muss die Lambda-Funktion den `alarm_key` Wert zurückgeben. Wenn Sie diesen Wert nicht zurückgeben, erkennt Grafana ihn nicht als Alarm. Dies ist für alle Komponenten erforderlich, die Alarme zurückgeben.
+ **Vererbung**: Komponententypen fördern die Wiederverwendbarkeit von Code durch Vererbung. Ein Komponententyp kann bis zu 10 übergeordnete Komponententypen erben.

  Verwenden Sie den `extendsFrom` Parameter, um die Komponententypen anzugeben, von denen Ihr Komponententyp Eigenschaften und Funktionen erbt.
+  **isSingleton**: Einige Komponenten enthalten Eigenschaften, wie z. B. Ortskoordinaten, die einer Entität nicht mehr als einmal hinzugefügt werden können. Setzen Sie den Wert des `isSingleton` Parameters auf, `true` um anzugeben, dass Ihr Komponententyp nur einmal in einer Entität enthalten sein kann.

## Eigenschaftsdefinitionen erstellen
<a name="twinmaker-component-types-property-def"></a>

In der folgenden Tabelle werden die Parameter von a beschrieben`PropertyDefinitionRequest`.


| Parameter | Beschreibung | 
| --- | --- | 
| `isExternalId` | Ein boolescher Wert, der angibt, ob es sich bei der Eigenschaft um einen eindeutigen Bezeichner (z. B. eine AWS IoT SiteWise Asset-ID) eines extern gespeicherten Eigenschaftswerts handelt. Standardmäßig wird der Wert dieser Eigenschaft auf `false` gesetzt. | 
| `isStoredExternally` | Ein boolescher Wert, der angibt, ob der Eigenschaftswert extern gespeichert wird. Standardmäßig wird der Wert dieser Eigenschaft auf `false` gesetzt. | 
| `isTimeSeries` | Ein boolescher Wert, der angibt, ob die Eigenschaft Zeitreihendaten speichert. Der Standardwert dieser Eigenschaft ist `false` | 
| `isRequiredInEntity` | Ein boolescher Wert, der angibt, ob die Eigenschaft einen Wert in einer Entität haben muss, die den Komponententyp verwendet. | 
| `dataType` | Ein [DataType](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_DataType.html)Objekt, das den Datentyp (z. B. Zeichenfolge, Map, Liste und Maßeinheit) der Eigenschaft angibt.  | 
| `defaultValue` | Ein [DataValue](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_DataValue.html)Objekt, das den Standardwert der Eigenschaft angibt.  | 
| `configuration` | Eine string-to-string Map, die zusätzliche Informationen angibt, die Sie für die Verbindung mit einer externen Datenquelle benötigen.  | 

## Erstellung von Funktionen
<a name="twinmaker-component-types-function"></a>

In der folgenden Tabelle werden die Parameter von a beschrieben`FunctionRequest`.


| Parameter | Beschreibung | 
| --- | --- | 
| ` implementedBy` | Ein [DataConnector](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_DataConnector.html)Objekt, das die Lambda-Funktion spezifiziert, die eine Verbindung zur externen Datenquelle herstellt.  | 
| `requiredProperties` | Eine Liste von Eigenschaften, die die Funktion benötigt, um aus einer externen Datenquelle zu lesen und in diese zu schreiben. | 
| `scope` | Der Geltungsbereich der Funktion. Wird `Workspace` für Funktionen verwendet, deren Geltungsbereich sich über einen gesamten Workspace erstreckt. Wird `Entity` für Funktionen verwendet, deren Gültigkeitsbereich auf die Entität beschränkt ist, die die Komponente enthält. | 

Beispiele, die zeigen, wie Komponententypen erstellt und erweitert werden, finden Sie unter[Beispiele für Komponententypen](twinmaker-component-types-examples.md).

# Beispiele für Komponententypen
<a name="twinmaker-component-types-examples"></a>

Dieses Thema enthält Beispiele, die zeigen, wie wichtige Konzepte von Komponententypen implementiert werden.

## Alarm (Zusammenfassung)
<a name="twinmaker-component-types-examples-alarm"></a>

Das folgende Beispiel ist der abstrakte Alarmkomponententyp, der in der AWS IoT TwinMaker Konsole angezeigt wird. Er enthält eine `functions` Liste, die aus einer besteht`dataReader`, die keinen `implementedBy` Wert hat.

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

Hinweise:

Werte für `componentTypeId` und `workspaceID` sind erforderlich. Der Wert von `componentTypeId` muss für Ihren Workspace eindeutig sein. Der Wert von `alarm_key` ist eine eindeutige Kennung, die eine Funktion verwenden kann, um Alarmdaten von einer externen Quelle abzurufen. Der Wert des Schlüssels ist erforderlich und wird in gespeichert AWS IoT TwinMaker. Die `alarm_status` Zeitreihenwerte werden in der externen Quelle gespeichert.

Weitere Beispiele sind unter [AWS IoT TwinMaker Beispiele](https://github.com/aws-samples/aws-iot-twinmaker-samples) verfügbar.

## Timestream-Telemetrie
<a name="twinmaker-component-types-examples-telemetry"></a>

Das folgende Beispiel ist ein einfacher Komponententyp, der Telemetriedaten über einen bestimmten Komponententyp (z. B. einen Alarm oder einen Cookie-Mixer) aus einer externen Quelle abruft. Es spezifiziert eine Lambda-Funktion, die Komponententypen erben.

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

## Alarm (erbt vom abstrakten Alarm)
<a name="twinmaker-component-types-examples-alarm-implementation"></a>

Das folgende Beispiel erbt sowohl vom abstrakten Alarm- als auch vom Timestream-Telemetrie-Komponententyp. Es spezifiziert eine eigene Lambda-Funktion, die Alarmdaten abruft.

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

**Anmerkung**  
Da der Alarmanschluss vom abstrakten Alarmkomponententyp erbt, muss die Lambda-Funktion den `alarm_key` Wert zurückgeben. Wenn Sie diesen Wert nicht zurückgeben, erkennt Grafana ihn nicht als Alarm. Dies ist für alle Komponenten erforderlich, die Alarme zurückgeben.

## Beispiele für Geräte
<a name="twinmaker-component-types-examples-equipment"></a>

Die Beispiele in diesem Abschnitt zeigen, wie potenzielle Geräte modelliert werden. Sie können diese Beispiele verwenden, um Anregungen zu erhalten, wie Sie Geräte in Ihren eigenen Prozessen modellieren können.

### Keksmischer
<a name="twinmaker-component-types-examples-mixer"></a>

Das folgende Beispiel erbt vom Komponententyp Timestream-Telemetrie. Es spezifiziert zusätzliche Zeitreiheneigenschaften für die Rotationsgeschwindigkeit und Temperatur eines Cookie-Mixers.

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

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

Das folgende Beispiel erbt vom Komponententyp Timestream-Telemetrie. Es gibt zusätzliche Zeitreiheneigenschaften für das Volumen und die Durchflussrate eines Wassertanks an.

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

### Standort des Weltraums
<a name="twinmaker-component-types-examples-space"></a>

Das folgende Beispiel enthält Eigenschaften, deren Werte in gespeichert sind AWS IoT TwinMaker. Da die Werte von Benutzern angegeben und intern gespeichert werden, ist keine Funktion erforderlich, um sie abzurufen. In dem Beispiel wird der `RELATIONSHIP` Datentyp auch verwendet, um eine Beziehung zu einem anderen Komponententyp anzugeben.

Diese Komponente bietet einen einfachen Mechanismus, um einem digitalen Zwilling Kontext hinzuzufügen. Sie können damit Metadaten hinzufügen, die angeben, wo sich etwas befindet. Sie können diese Informationen auch in der Logik verwenden, um zu bestimmen, welche Kameras ein Gerät oder einen Raum sehen können, oder um zu wissen, wie eine Person an einen Ort geschickt werden kann.

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