

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan dan membuat tipe komponen
<a name="twinmaker-component-types"></a>

Topik ini memandu Anda melalui nilai dan struktur yang Anda gunakan untuk membuat tipe AWS IoT TwinMaker komponen. Ini menunjukkan cara membuat objek permintaan yang dapat Anda teruskan ke [CreateComponentType](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_CreateComponentType.html)API atau dengan menggunakan editor tipe komponen di AWS IoT TwinMaker konsol.

Komponen menyediakan konteks untuk properti dan data untuk entitas terkait mereka.

## Jenis komponen bawaan
<a name="twinmaker-component-types-built-in"></a>

Di AWS IoT TwinMaker konsol, saat Anda memilih ruang kerja dan kemudian memilih **Jenis komponen** di panel kiri, Anda akan melihat jenis komponen berikut.
+ **com.amazon.iotsitewise.resourcesync**: Jenis komponen yang secara otomatis menyinkronkan aset dan model aset Anda dan mengubahnya menjadi komponen entitas dan tipe komponen. AWS IoT SiteWise AWS IoT TwinMaker Untuk informasi selengkapnya tentang penggunaan sinkronisasi AWS IoT SiteWise aset, lihat [Sinkronisasi aset dengan AWS IoT SiteWise](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/tm-sw-asset-sync.html).
+ **com.amazon.iottwinmaker.alarm.basic: Komponen alarm dasar** yang menarik data alarm dari sumber eksternal ke entitas. Komponen ini tidak berisi fungsi yang menghubungkan ke sumber data tertentu. Ini berarti bahwa komponen alarm abstrak dan dapat diwarisi oleh jenis komponen lain yang menentukan sumber data dan fungsi yang membaca dari sumber itu.
+ **com.amazon.iottwinmaker.documents: Pemetaan sederhana judul ke URL untuk dokumen** yang berisi informasi tentang entitas.
+ **com.amazon.iotsitewise.connector.edgevideo**: Komponen yang menarik video dari perangkat IoT menggunakan komponen Edge Connector for Kinesis Video Streams ke dalam entitas. AWS IoT Greengrass Komponen [Konektor Tepi untuk Kinesis AWS IoT Greengrass Video](https://docs.aws.amazon.com/greengrass/v2/developerguide/kvs-edge-connector-component.html) Streams AWS IoT TwinMaker bukanlah komponen, melainkan komponen bawaan AWS IoT Greengrass yang digunakan secara lokal di perangkat IoT Anda.
+ **com.amazon.iotsitewise.connector**: Komponen yang menarik data ke dalam entitas. AWS IoT SiteWise 
+ **com.amazon.iottwinmaker.parameters**: Komponen yang menambahkan pasangan nilai kunci statis ke entitas.
+ **com.amazon.kvs.video: Komponen yang menarik video** dari Kinesis Video Streams ke entitas. AWS IoT TwinMaker 

![\[Halaman konsol tipe Component dengan daftar beberapa tipe komponen yang telah ditentukan sebelumnya.\]](http://docs.aws.amazon.com/id_id/iot-twinmaker/latest/guide/images/ComponentTypesPredefined.png)


## Fitur inti dari jenis AWS IoT TwinMaker komponen
<a name="twinmaker-component-types-core"></a>

Daftar berikut menjelaskan fitur inti dari jenis komponen.
+ **Definisi properti**: [PropertyDefinitionRequest](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_PropertyDefinitionRequest.html)Objek mendefinisikan properti yang dapat Anda isi di komposer adegan atau dapat diisi dengan data yang ditarik dari sumber data eksternal. Properti statis yang Anda atur disimpan di AWS IoT TwinMaker. Properti deret waktu dan properti lain yang ditarik dari sumber data disimpan secara eksternal.

  Anda menentukan definisi properti di dalam string ke `PropertyDefinitionRequest` peta. Setiap string harus unik untuk peta.
+ **Fungsi**: [FunctionRequest](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_FunctionRequest.html)Objek menentukan fungsi Lambda yang membaca dari dan berpotensi menulis ke sumber data eksternal.

  Tipe komponen yang berisi properti dengan nilai yang disimpan secara eksternal tetapi tidak memiliki fungsi yang sesuai untuk mengambil nilai adalah tipe komponen abstrak. Anda dapat memperluas tipe komponen konkret dari tipe komponen abstrak. Anda tidak dapat menambahkan tipe komponen abstrak ke entitas. Mereka tidak muncul di komposer adegan.

  Anda menentukan fungsi di dalam string untuk `FunctionRequest` memetakan. String harus menentukan salah satu jenis fungsi standar berikut.
  + `dataReader`: Fungsi yang menarik data dari sumber eksternal.
  + `dataReaderByEntity`: Fungsi yang menarik data dari sumber eksternal.

    Bila Anda menggunakan jenis pembaca data ini, operasi [GetPropertyValueHistory](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_GetPropertyValueHistory.html)API hanya mendukung kueri khusus entitas untuk properti dalam tipe komponen ini. (Anda hanya dapat meminta riwayat nilai properti untuk `componentName` \$1`entityId`.)
  + `dataReaderByComponentType`: Fungsi yang menarik data dari sumber eksternal.

    Saat Anda menggunakan jenis pembaca data ini, operasi [GetPropertyValueHistory](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_GetPropertyValueHistory.html)API hanya mendukung kueri lintas entitas untuk properti dalam tipe komponen ini. (Anda hanya dapat meminta riwayat nilai properti untuk`componentTypeId`.)
  + `dataWriter`: Fungsi yang menulis data ke sumber eksternal.
  + `schemaInitializer`: Fungsi yang secara otomatis menginisialisasi nilai properti setiap kali Anda membuat entitas yang berisi tipe komponen.

  Salah satu dari tiga jenis fungsi pembaca data diperlukan dalam tipe komponen non-abstrak.

  [Untuk contoh fungsi Lambda yang mengimplementasikan komponen telemetri aliran waktu, termasuk alarm, lihat pembaca data di Sampel.AWS IoT TwinMaker](https://github.com/aws-samples/aws-iot-twinmaker-samples/blob/main/src/modules/timestream_telemetry/lambda_function/udq_data_reader.py) 
**catatan**  
Karena konektor alarm mewarisi dari jenis komponen alarm abstrak, fungsi Lambda harus mengembalikan `alarm_key` nilainya. Jika Anda tidak mengembalikan nilai ini, Grafana tidak akan mengenalinya sebagai alarm. Ini diperlukan untuk semua komponen yang mengembalikan alarm.
+ **Warisan**: Jenis komponen mempromosikan penggunaan kembali kode melalui pewarisan. Tipe komponen dapat mewarisi hingga 10 jenis komponen induk.

  Gunakan `extendsFrom` parameter untuk menentukan tipe komponen dari mana tipe komponen Anda mewarisi properti dan fungsi.
+  **isSingleTon**: Beberapa komponen berisi properti, seperti koordinat lokasi, yang tidak dapat disertakan lebih dari sekali dalam entitas. Tetapkan nilai `isSingleton` parameter `true` untuk menunjukkan bahwa tipe komponen Anda hanya dapat disertakan sekali dalam entitas.

## Membuat definisi properti
<a name="twinmaker-component-types-property-def"></a>

Tabel berikut menjelaskan parameter dari a`PropertyDefinitionRequest`.


| Parameter | Deskripsi | 
| --- | --- | 
| `isExternalId` | Boolean yang menentukan apakah properti adalah pengidentifikasi unik (seperti Id AWS IoT SiteWise aset) dari nilai properti yang disimpan secara eksternal. Nilai default properti ini adalah `false`. | 
| `isStoredExternally` | Sebuah Boolean yang menentukan apakah nilai properti disimpan secara eksternal. Nilai default properti ini adalah `false`. | 
| `isTimeSeries` | Boolean yang menentukan apakah properti menyimpan data deret waktu. Nilai default properti ini adalah `false` | 
| `isRequiredInEntity` | Boolean yang menentukan apakah properti harus memiliki nilai dalam entitas yang menggunakan tipe komponen. | 
| `dataType` | [DataType](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_DataType.html)Objek yang menentukan tipe data (seperti string, peta, daftar, dan satuan ukuran) dari properti.  | 
| `defaultValue` | Sebuah [DataValue](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_DataValue.html)objek yang menentukan nilai default dari properti.  | 
| `configuration` |  string-to-string Peta yang menentukan informasi tambahan yang perlu Anda sambungkan ke sumber data eksternal.  | 

## Membuat fungsi
<a name="twinmaker-component-types-function"></a>

Tabel berikut menjelaskan parameter dari a`FunctionRequest`.


| Parameter | Deskripsi | 
| --- | --- | 
| ` implementedBy` | [DataConnector](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_DataConnector.html)Objek yang menentukan fungsi Lambda yang menghubungkan ke sumber data eksternal.  | 
| `requiredProperties` | Daftar properti yang dibutuhkan fungsi untuk membaca dan menulis ke sumber data eksternal. | 
| `scope` | Ruang lingkup fungsi. Gunakan `Workspace` untuk fungsi dengan cakupan yang mencakup seluruh ruang kerja. Gunakan `Entity` untuk fungsi dengan cakupan yang terbatas pada entitas yang berisi komponen. | 

Untuk contoh yang menunjukkan cara membuat dan memperluas tipe komponen, lihat[Contoh jenis komponen](twinmaker-component-types-examples.md).

# Contoh jenis komponen
<a name="twinmaker-component-types-examples"></a>

Topik ini berisi contoh yang menunjukkan bagaimana menerapkan konsep kunci dari tipe komponen.

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

Contoh berikut adalah jenis komponen alarm abstrak yang muncul di AWS IoT TwinMaker konsol. Ini berisi `functions` daftar yang terdiri dari `dataReader` yang tidak memiliki `implementedBy` nilai.

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

Catatan:

Nilai untuk `componentTypeId` dan `workspaceID` diperlukan. Nilai `componentTypeId` harus unik untuk ruang kerja Anda. Nilai `alarm_key` adalah pengidentifikasi unik yang dapat digunakan fungsi untuk mengambil data alarm dari sumber eksternal. Nilai kunci diperlukan dan disimpan di AWS IoT TwinMaker. Nilai deret `alarm_status` waktu disimpan di sumber eksternal.

Lebih banyak contoh tersedia di [AWS IoT TwinMaker Sampel](https://github.com/aws-samples/aws-iot-twinmaker-samples).

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

Contoh berikut adalah jenis komponen sederhana yang mengambil data telemetri tentang jenis komponen tertentu (seperti alarm atau mixer cookie) dari sumber eksternal. Ini menentukan fungsi Lambda yang jenis komponen mewarisi.

```
{
    "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 (mewarisi dari alarm abstrak)
<a name="twinmaker-component-types-examples-alarm-implementation"></a>

Contoh berikut mewarisi dari kedua alarm abstrak dan tipe komponen telemetri timestream. Ini menentukan fungsi Lambda sendiri yang mengambil data alarm.

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

**catatan**  
Karena konektor alarm mewarisi dari jenis komponen alarm abstrak, fungsi Lambda harus mengembalikan `alarm_key` nilainya. Jika Anda tidak mengembalikan nilai ini, Grafana tidak akan mengenalinya sebagai alarm. Ini diperlukan untuk semua komponen yang mengembalikan alarm.

## Contoh peralatan
<a name="twinmaker-component-types-examples-equipment"></a>

Contoh di bagian ini menunjukkan bagaimana memodelkan peralatan potensial. Anda dapat menggunakan contoh-contoh ini untuk mendapatkan beberapa ide tentang cara memodelkan peralatan dalam proses Anda sendiri.

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

Contoh berikut mewarisi dari tipe komponen telemetri timestream. Ini menentukan properti deret waktu tambahan untuk tingkat rotasi dan suhu mixer 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
        }
    }
}
```

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

Contoh berikut mewarisi dari tipe komponen telemetri timestream. Ini menentukan sifat deret waktu tambahan untuk volume dan laju aliran tangki air.

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

### Lokasi ruang
<a name="twinmaker-component-types-examples-space"></a>

Contoh berikut berisi properti, nilai-nilai yang disimpan dalam AWS IoT TwinMaker. Karena nilai ditentukan oleh pengguna dan disimpan secara internal, tidak ada fungsi yang diperlukan untuk mengambilnya. Contoh ini juga menggunakan tipe `RELATIONSHIP` data untuk menentukan hubungan dengan tipe komponen lain.

Komponen ini menyediakan mekanisme ringan untuk menambahkan konteks ke kembar digital. Anda dapat menggunakannya untuk menambahkan metadata yang menunjukkan di mana sesuatu berada. Anda juga dapat menggunakan informasi ini dalam logika yang digunakan untuk menentukan kamera mana yang dapat melihat peralatan atau ruang, atau untuk mengetahui cara mengirim seseorang ke suatu lokasi.

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