AWS IoT TwinMaker contoh pabrik cookie konektor deret waktu - AWS IoT TwinMaker

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

AWS IoT TwinMaker contoh pabrik cookie konektor deret waktu

Kode lengkap fungsi Lambda pabrik cookie tersedia di. GitHub Meskipun Anda masih dapat memperbarui implementasi setelah Anda menautkan konektor ke jenis komponen, kami sangat menyarankan Anda memverifikasi konektor Lambda sebelum mengintegrasikan dengan. AWS IoT TwinMaker Anda dapat menguji fungsi Lambda Anda di konsol Lambda atau secara lokal di. AWS CDKUntuk informasi selengkapnya tentang menguji fungsi Lambda Anda, lihat Menguji fungsi Lambda, dan aplikasi pengujian Lokal. AWS CDK

Contoh jenis komponen pabrik cookie

Dalam tipe komponen, kita mendefinisikan properti umum yang dibagi di seluruh komponen. Untuk contoh pabrik cookie, komponen fisik dari jenis yang sama berbagi pengukuran yang sama, sehingga kita dapat menentukan skema pengukuran dalam tipe komponen. Sebagai contoh, jenis mixer didefinisikan dalam contoh berikut.

{ "componentTypeId": "com.example.cookiefactory.mixer" "propertyDefinitions": { "RPM": { "dataType": { "type": "DOUBLE" }, "isTimeSeries": true, "isRequiredInEntity": false, "isExternalId": false, "isStoredExternally": true }, "Temperature": { "dataType": { "type": "DOUBLE" }, "isTimeSeries": true, "isRequiredInEntity": false, "isExternalId": false, "isStoredExternally": true } } }

Misalnya, komponen fisik mungkin memiliki pengukuran dalam database Timestream, catatan pemeliharaan dalam database SQL, atau data alarm dalam sistem alarm. Membuat beberapa komponen dan mengaitkannya dengan entitas menghubungkan sumber data yang berbeda ke entitas dan mengisi grafik komponen entitas. Dalam konteks ini, setiap komponen membutuhkan telemetryId properti untuk mengidentifikasi kunci unik komponen dalam sumber data yang sesuai. Menentukan telemetryId properti memiliki dua manfaat: properti dapat digunakan dalam konektor data sebagai kondisi filter untuk hanya menanyakan nilai komponen yang diberikan dan, jika Anda menyertakan nilai telemetryId properti dalam respons API bidang data, maka sisi klien mengambil ID dan dapat melakukan pencarian terbalik jika perlu.

Jika Anda menambahkan TelemetryId ke jenis komponen sebagai id eksternal, itu mengidentifikasi komponen dalam TimeStream tabel.

{ "componentTypeId": "com.example.cookiefactory.mixer" "propertyDefinitions": { "telemetryId": { "dataType": { "type": "STRING" }, "isTimeSeries": false, "isRequiredInEntity": true, "isExternalId": true, "isStoredExternally": false }, "RPM": { "dataType": { "type": "DOUBLE" }, "isTimeSeries": true, "isRequiredInEntity": false, "isExternalId": false, "isStoredExternally": true }, "Temperature": { "dataType": { "type": "DOUBLE" }, "isTimeSeries": true, "isRequiredInEntity": false, "isExternalId": false, "isStoredExternally": true } } }

Demikian pula kita memiliki tipe komponen untukWaterTank, seperti yang ditunjukkan dalam contoh JSON berikut.

{ "componentTypeId": "com.example.cookiefactory.watertank", "propertyDefinitions": { "flowRate1": { "dataType": { "type": "DOUBLE" }, "isTimeSeries": true, "isRequiredInEntity": false, "isExternalId": false, "isStoredExternally": true }, "flowrate2": { "dataType": { "type": "DOUBLE" }, "isTimeSeries": true, "isRequiredInEntity": false, "isExternalId": false, "isStoredExternally": true }, "tankVolume1": { "dataType": { "type": "DOUBLE" }, "isTimeSeries": true, "isRequiredInEntity": false, "isExternalId": false, "isStoredExternally": true }, "tankVolume2": { "dataType": { "type": "DOUBLE" }, "isTimeSeries": true, "isRequiredInEntity": false, "isExternalId": false, "isStoredExternally": true }, "telemetryId": { "dataType": { "type": "STRING" }, "isTimeSeries": false, "isRequiredInEntity": true, "isExternalId": true, "isStoredExternally": false } } }

TelemetryTypeIni adalah properti opsional dalam tipe komponen jika ditujukan untuk menanyakan nilai properti dalam lingkup entitas. Sebagai contoh, lihat tipe komponen yang ditentukan dalam GitHub repositori AWS IoT TwinMaker sampel. Ada jenis alarm yang juga disematkan ke dalam tabel yang sama, sehingga TelemetryType didefinisikan dan Anda mengekstrak properti umum seperti TelemetryId dan TelemetryType ke tipe komponen induk untuk tipe anak lain untuk dibagikan.

Contoh Lambda

Konektor Lambda perlu mengakses sumber data dan menghasilkan pernyataan kueri berdasarkan input dan meneruskannya ke sumber data. Contoh permintaan yang dikirim ke Lambda ditampilkan dalam contoh JSON berikut.

{ 'workspaceId': 'CookieFactory', 'selectedProperties': ['Temperature'], 'startDateTime': 1648796400, 'startTime': '2022-04-01T07:00:00.000Z', 'endDateTime': 1650610799, 'endTime': '2022-04-22T06:59:59.000Z', 'properties': { 'telemetryId': { 'definition': { 'dataType': { 'type': 'STRING' }, 'isTimeSeries': False, 'isRequiredInEntity': True, 'isExternalId': True, 'isStoredExternally': False, 'isImported': False, 'isFinal': False, 'isInherited': True, }, 'value': { 'stringValue': 'Mixer_22_680b5b8e-1afe-4a77-87ab-834fbe5ba01e' } } 'Temperature': { 'definition': { 'dataType': { 'type': 'DOUBLE' }, 'isTimeSeries': True, 'isRequiredInEntity': False, 'isExternalId': False, 'isStoredExternally': True, 'isImported': False, 'isFinal': False, 'isInherited': False } } 'RPM': { 'definition': { 'dataType': { 'type': 'DOUBLE' }, 'isTimeSeries': True, 'isRequiredInEntity': False, 'isExternalId': False, 'isStoredExternally': True, 'isImported': False, 'isFinal':False, 'isInherited': False } }, 'entityId': 'Mixer_22_d133c9d0-472c-48bb-8f14-54f3890bc0fe', 'componentName': 'MixerComponent', 'maxResults': 100, 'orderByTime': 'ASCENDING' }

Tujuan dari fungsi Lambda adalah untuk menanyakan data pengukuran historis untuk entitas tertentu. AWS IoT TwinMaker menyediakan peta komponen-properti, dan Anda harus menentukan nilai instantiated untuk ID komponen. Misalnya, untuk menangani kueri tingkat tipe komponen (yang umum untuk kasus penggunaan alarm) dan mengembalikan status alarm semua komponen di ruang kerja, maka peta properti memiliki definisi properti tipe komponen.

Untuk kasus yang paling mudah, seperti pada permintaan sebelumnya, kami menginginkan serangkaian sampel suhu selama jendela waktu yang diberikan untuk komponen yang diberikan, dalam urutan waktu menaik. Pernyataan query dapat diringkas sebagai berikut:

... SELECT measure_name, time, measure_value::double FROM {database_name}.{table_name} WHERE time < from_iso8601_timestamp('{request.start_time}') AND time >= from_iso8601_timestamp('{request.end_time}') AND TelemetryId = '{telemetry_id}' AND measure_name = '{selected_property}' ORDER BY time {request.orderByTime} ...