Panduan pemodelan IoT Plug and Play

Inti dari IoT Plug and Play, adalah model perangkat yang menjelaskan kemampuan perangkat ke aplikasi yang mengaktifkan IoT Plug and Play. Model ini disusun sebagai set antarmuka yang menentukan:

  • Properti yang mewakili status baca-saja atau bisa-tulis dari perangkat atau entitas lain. Misalnya, nomor seri perangkat mungkin merupakan properti baca-saja dan suhu target pada termostat mungkin merupakan properti bisa-tulis.
  • Bidang telemetri yang menentukan data yang dipancarkan oleh perangkat, apakah data adalah aliran reguler pembacaan sensor, kesalahan sesekali, atau pesan informasi.
  • Perintah yang menjelaskan fungsi atau operasi yang bisa dilakukan pada perangkat. Misalnya, perintah bisa me-reboot gateway atau mengambil gambar menggunakan kamera jarak jauh.

Untuk mempelajari selengkapnya tentang cara IoT Plug and Play menggunakan model perangkat, lihat panduan pengembang perangkat IoT Plug and Play dan panduan pengembang layanan IoT Plug and Play.

Untuk menentukan model, Anda menggunakan Digital Twins Definition Language (DTDL). DTDL menggunakan varian JSON yang disebut JSON-LD. Cuplikan berikut menunjukkan model untuk perangkat termostat yang:

  • Memiliki ID model yang unik: dtmi:com:example:Thermostat;1.
  • Mengirim telemetri suhu.
  • Memiliki properti yang dapat ditulis untuk mengatur suhu target.
  • Memiliki properti baca-saja untuk melaporkan suhu maksimum sejak boot ulang terakhir.
  • Merespons perintah yang meminta suhu maksimum, minimum, dan rata-rata selama periode waktu tertentu.
{
  "@context": "dtmi:dtdl:context;2",
  "@id": "dtmi:com:example:Thermostat;1",
  "@type": "Interface",
  "displayName": "Thermostat",
  "description": "Reports current temperature and provides desired temperature control.",
  "contents": [
    {
      "@type": [
        "Telemetry",
        "Temperature"
      ],
      "name": "temperature",
      "displayName": "Temperature",
      "description": "Temperature in degrees Celsius.",
      "schema": "double",
      "unit": "degreeCelsius"
    },
    {
      "@type": [
        "Property",
        "Temperature"
      ],
      "name": "targetTemperature",
      "schema": "double",
      "displayName": "Target Temperature",
      "description": "Allows to remotely specify the desired target temperature.",
      "unit": "degreeCelsius",
      "writable": true
    },
    {
      "@type": [
        "Property",
        "Temperature"
      ],
      "name": "maxTempSinceLastReboot",
      "schema": "double",
      "unit": "degreeCelsius",
      "displayName": "Max temperature since last reboot.",
      "description": "Returns the max temperature since last device reboot."
    },
    {
      "@type": "Command",
      "name": "getMaxMinReport",
      "displayName": "Get Max-Min report.",
      "description": "This command returns the max, min and average temperature from the specified time to the current time.",
      "request": {
        "name": "since",
        "displayName": "Since",
        "description": "Period to return the max-min report.",
        "schema": "dateTime"
      },
      "response": {
        "name": "tempReport",
        "displayName": "Temperature Report",
        "schema": {
          "@type": "Object",
          "fields": [
            {
              "name": "maxTemp",
              "displayName": "Max temperature",
              "schema": "double"
            },
            {
              "name": "minTemp",
              "displayName": "Min temperature",
              "schema": "double"
            },
            {
              "name": "avgTemp",
              "displayName": "Average Temperature",
              "schema": "double"
            },
            {
              "name": "startTime",
              "displayName": "Start Time",
              "schema": "dateTime"
            },
            {
              "name": "endTime",
              "displayName": "End Time",
              "schema": "dateTime"
            }
          ]
        }
      }
    }
  ]
}

Model termostat memiliki satu antarmuka. Contoh selanjutnya dalam artikel ini menunjukkan model yang lebih kompleks yang menggunakan komponen dan pewarisan.

Artikel ini menjelaskan cara merancang dan menulis model Anda sendiri dan membahas topik seperti jenis data, struktur model, dan alat.

Untuk mempelajari lebih lanjut, lihat spesifikasi Digital Twins Definition Language .

Nota

IoT Central saat ini mendukung DTDL v2 dengan ekstensi IoT Central.

Struktur model

Properti, telemetri, dan perintah dikelompokkan ke dalam antarmuka. Bagian ini menjelaskan bagaimana Anda dapat menggunakan antarmuka untuk menjelaskan model sederhana dan kompleks dengan menggunakan komponen dan pewarisan.

ID Model

Setiap antarmuka memiliki pengidentifikasi model kembar digital (DTMI) yang unik. Model kompleks menggunakan DTMIs untuk mengidentifikasi komponen. Aplikasi dapat menggunakan DTMIs yang dikirim perangkat untuk menemukan definisi model di repositori.

DTMIs harus menggunakan konvensi penamaan berikut:

  • Awalan DTMI adalah dtmi:.
  • Akhiran DTMI adalah nomor versi untuk model seperti ;2.
  • Badan DTMI dipetakan ke folder dan file di repositori model tempat model tersebut disimpan. Nomor versi adalah bagian dari nama file.

Misalnya, model yang diidentifikasi oleh DTMI dtmi:com:Example:Thermostat;2 disimpan dalam file dtmi/com/example/thermostat-2.json .

Cuplikan berikut menunjukkan kerangka definisi antarmuka dengan DTMI uniknya:

{
  "@context": "dtmi:dtdl:context;2",
  "@id": "dtmi:com:example:Thermostat;2",
  "@type": "Interface",
  "displayName": "Thermostat",
  "description": "Reports current temperature and provides desired temperature control.",
  "contents": [
    ...
  ]
}

Tidak ada komponen

Model sederhana, seperti termostat yang ditampilkan sebelumnya, tidak menggunakan komponen yang disematkan atau bertingkat. Telemetri, properti, dan perintah didefinisikan dalam simpul contents antarmuka.

Contoh berikut menunjukkan bagian dari model sederhana yang tidak menggunakan komponen:

{
  "@context": "dtmi:dtdl:context;2",
  "@id": "dtmi:com:example:Thermostat;1",
  "@type": "Interface",
  "displayName": "Thermostat",
  "description": "Reports current temperature and provides desired temperature control.",
  "contents": [
    {
      "@type": [
        "Telemetry",
        "Temperature"
      ],
      "name": "temperature",
      "displayName": "Temperature",
      "description": "Temperature in degrees Celsius.",
      "schema": "double",
      "unit": "degreeCelsius"
    },
    {
      "@type": [
        "Property",
...

Alat seperti Azure IoT Explorer dan perancang templat perangkat IoT Central memberi label antarmuka mandiri seperti termostat sebagai komponen default.

Cuplikan layar berikut menunjukkan bagaimana model ditampilkan di alat Azure IoT Explorer:

Cuplikan layar yang memperlihatkan komponen default di alat penjelajah Azure IoT.

Cuplikan layar berikut menunjukkan bagaimana model ditampilkan sebagai komponen default di perancang templat perangkat IoT Central. Pilih Tampilkan identitas untuk melihat DTMI model:

Cuplikan layar memperlihatkan model Termostat di alat perancang templat perangkat IoT Central.

ID model disimpan di properti kembar perangkat seperti yang ditunjukkan oleh cuplikan layar berikut:

Cuplikan layar alat Azure IoT Explorer yang memperlihatkan ID model di properti kembar digital.

Model DTDL tanpa komponen adalah penyederhanaan yang berguna untuk perangkat atau modul IoT Edge dengan satu set telemetri, properti, dan perintah. Model yang tidak menggunakan komponen memudahkan migrasi perangkat atau modul yang ada menjadi perangkat atau modul IoT Plug and Play - Anda membuat model DTDL yang menjelaskan perangkat atau modul Anda yang sebenarnya tanpa perlu menentukan komponen apa pun.

Petunjuk / Saran

Modul dapat berupa modul perangkat atau modul IoT Edge.

Gunakan Ulang

Ada dua cara untuk menggunakan kembali definisi antarmuka.

  • Gunakan beberapa komponen dalam model untuk mereferensikan definisi antarmuka lainnya.
  • Gunakan pewarisan untuk memperluas definisi antarmuka yang ada.

Beberapa komponen

Komponen memungkinkan Anda membangun antarmuka model sebagai rakitan antarmuka lain.

Misalnya, antarmuka Termostat didefinisikan sebagai model. Anda dapat menggabungkan antarmuka ini sebagai satu atau beberapa komponen saat Menentukan model Pengontrol Suhu. Dalam contoh berikut, komponen-komponen ini disebut thermostat1 dan thermostat2.

Untuk model DTDL dengan beberapa komponen, ada dua bagian komponen atau lebih. Setiap bagian telah @type diatur ke Component dan secara eksplisit mengacu pada skema seperti yang ditunjukkan dalam cuplikan berikut:

{
  "@context": "dtmi:dtdl:context;2",
  "@id": "dtmi:com:example:TemperatureController;1",
  "@type": "Interface",
  "displayName": "Temperature Controller",
  "description": "Device with two thermostats and remote reboot.",
  "contents": [
    {
      "@type": [
        "Telemetry",
        "DataSize"
      ],
      "name": "workingSet",
      "displayName": "Working Set",
      "description": "Current working set of the device memory in KiB.",
      "schema": "double",
      "unit": "kibibyte"
    },
    {
      "@type": "Property",
      "name": "serialNumber",
      "displayName": "Serial Number",
      "description": "Serial number of the device.",
      "schema": "string"
    },
    {
      "@type": "Command",
      "name": "reboot",
      "displayName": "Reboot",
      "description": "Reboots the device after waiting the number of seconds specified.",
      "request": {
        "name": "delay",
        "displayName": "Delay",
        "description": "Number of seconds to wait before rebooting the device.",
        "schema": "integer"
      }
    },
    {
      "@type" : "Component",
      "schema": "dtmi:com:example:Thermostat;1",
      "name": "thermostat1",
      "displayName": "Thermostat One",
      "description": "Thermostat One of Two."
    },
    {
      "@type" : "Component",
      "schema": "dtmi:com:example:Thermostat;1",
      "name": "thermostat2",
      "displayName": "Thermostat Two",
      "description": "Thermostat Two of Two."
    },
    {
      "@type": "Component",
      "schema": "dtmi:azure:DeviceManagement:DeviceInformation;1",
      "name": "deviceInformation",
      "displayName": "Device Information interface",
      "description": "Optional interface with basic device hardware information."
    }
  ]
}

Model ini memiliki tiga komponen yang ditentukan di bagian konten - dua Thermostat komponen dan komponen DeviceInformation . Bagian konten juga menyertakan definisi properti, telemetri, dan perintah.

Cuplikan layar berikut menunjukkan bagaimana model ini muncul di IoT Central. Definisi properti, telemetri, dan perintah dalam pengontrol suhu muncul di komponen Default tingkat atas. Definisi properti, telemetri, dan perintah untuk setiap termostat muncul dalam definisi komponen:

Cuplikan layar memperlihatkan templat perangkat pengontrol suhu di IoT Central.

Cuplikan layar memperlihatkan komponen termostat dalam templat perangkat pengontrol suhu di IoT Central.

Untuk mempelajari cara menulis kode perangkat yang berinteraksi dengan komponen, lihat panduan pengembang perangkat IoT Plug and Play.

Untuk mempelajari cara menulis kode layanan yang berinteraksi dengan komponen di perangkat, lihat panduan pengembang layanan IoT Plug and Play.

Pewarisan

Pewarisan memungkinkan Anda menggunakan kembali kemampuan dalam antarmuka dasar untuk memperluas kemampuan antarmuka. Misalnya, beberapa model perangkat dapat berbagi kemampuan umum seperti nomor seri:

Diagram yang memperlihatkan contoh pewarisan dalam model perangkat. Antarmuka Termostat dan antarmuka Pengontrol Alur berbagi kemampuan dari antarmuka dasar.

Cuplikan berikut menunjukkan model DTML yang menggunakan extends kata kunci untuk menentukan hubungan pewarisan yang diperlihatkan dalam diagram sebelumnya:

[
  {
    "@context": "dtmi:dtdl:context;2",
    "@id": "dtmi:com:example:Thermostat;1",
    "@type": "Interface",
    "contents": [
      {
        "@type": "Telemetry",
        "name": "temperature",
        "schema": "double",
        "unit": "degreeCelsius"
      },
      {
        "@type": "Property",
        "name": "targetTemperature",
        "schema": "double",
        "unit": "degreeCelsius",
        "writable": true
      }
    ],
    "extends": [
      "dtmi:com:example:baseDevice;1"
    ]
  },
  {
    "@context": "dtmi:dtdl:context;2",
    "@id": "dtmi:com:example:baseDevice;1",
    "@type": "Interface",
    "contents": [
      {
        "@type": "Property",
        "name": "SerialNumber",
        "schema": "double",
        "writable": false
      }
    ]
  }
]

Cuplikan layar berikut menunjukkan model ini di lingkungan templat perangkat IoT Central:

Cuplikan layar memperlihatkan pewarisan antarmuka di IoT Central.

Saat Anda menulis perangkat atau kode sisi layanan, kode Anda tidak perlu melakukan sesuatu yang istimewa untuk menangani antarmuka yang diwariskan. Dalam contoh yang ditunjukkan di bagian ini, kode perangkat Anda melaporkan nomor seri seolah-olah itu adalah bagian dari antarmuka termostat.

Tips

Anda dapat menggabungkan komponen dan pewarisan saat membuat model. Diagram berikut menunjukkan model yang thermostat mewarisi antarmuka baseDevice. Antarmuka baseDevice memiliki komponen, yang mewarisi dari antarmuka lain:

Diagram memperlihatkan model yang menggunakan komponen dan pewarisan.

Cuplikan berikut menunjukkan model DTML yang menggunakan extends kata kunci dan component untuk menentukan hubungan pewarisan dan penggunaan komponen yang ditunjukkan pada diagram sebelumnya:

[
  {
    "@context": "dtmi:dtdl:context;2",
    "@id": "dtmi:com:example:Thermostat;1",
    "@type": "Interface",
    "contents": [
      {
        "@type": "Telemetry",
        "name": "temperature",
        "schema": "double",
        "unit": "degreeCelsius"
      },
      {
        "@type": "Property",
        "name": "targetTemperature",
        "schema": "double",
        "unit": "degreeCelsius",
        "writable": true
      }
    ],
    "extends": [
      "dtmi:com:example:baseDevice;1"
    ]
  },
  {
    "@context": "dtmi:dtdl:context;2",
    "@id": "dtmi:com:example:baseDevice;1",
    "@type": "Interface",
    "contents": [
      {
        "@type": "Property",
        "name": "SerialNumber",
        "schema": "double",
        "writable": false
      },
      {
        "@type" : "Component",
        "schema": "dtmi:com:example:baseComponent;1",
        "name": "baseComponent"
      }
    ]
  }
]

Jenis data

Gunakan jenis data untuk menentukan parameter telemetri, properti, dan perintah. Jenis data bisa primitif atau kompleks. Jenis data kompleks menggunakan primitif atau jenis kompleks lainnya. Kedalaman maksimum untuk jenis kompleks adalah lima tingkat.

Jenis primitif

Tabel berikut ini memperlihatkan sekumpulan jenis primitif yang bisa Anda gunakan:

Jenis primitif Deskripsi
boolean Nilai boolean
date Tanggal lengkap seperti yang didefinisikan dalam bagian 5.6 dari RFC 3339
dateTime Tanggal-waktu seperti yang didefinisikan dalam RFC 3339
double Titik mengambang IEEE 8-byte
duration Durasi dalam format ISO 8601
float Titik mengambang 4 byte IEEE
integer Bilangan bulat bertanda 4-byte
long Bilangan bulat bertanda 8-byte
string String UTF8
time Waktu penuh seperti yang didefinisikan dalam bagian 5.6 dari RFC 3339

Cuplikan berikut menunjukkan contoh definisi telemetri yang menggunakan tipe double dalam bidang schema.

{
  "@type": "Telemetry",
  "name": "temperature",
  "displayName": "Temperature",
  "schema": "double"
}

Jenis data kompleks

Jenis data kompleks adalah salah satu array, enumerasi, peta, objek, atau salah satu jenis geospasial.

Array

Array adalah jenis data yang dapat diindeks di mana semua elemen adalah jenis yang sama. Jenis elemen bisa menjadi jenis primitif atau kompleks.

Cuplikan berikut menunjukkan contoh definisi telemetri yang menggunakan jenis Array di dalam bidang schema. Elemen array adalah boolean:

{
  "@type": "Telemetry",
  "name": "ledState",
  "schema": {
    "@type": "Array",
    "elementSchema": "boolean"
  }
}

Enumerasi

Enumerasi menjelaskan jenis dengan sekumpulan label bernama yang memetakan ke nilai. Nilai dapat berupa bilangan bulat atau string, tetapi label selalu berupa string.

Cuplikan berikut menunjukkan contoh definisi telemetri yang menggunakan jenis Enum di dalam bidang schema. Nilai dalam enumerasi adalah bilangan bulat:

{
  "@type": "Telemetry",
  "name": "state",
  "schema": {
    "@type": "Enum",
    "valueSchema": "integer",
    "enumValues": [
      {
        "name": "offline",
        "displayName": "Offline",
        "enumValue": 1
      },
      {
        "name": "online",
        "displayName": "Online",
        "enumValue": 2
      }
    ]
  }
}

Maps

Peta adalah jenis dengan pasangan kunci-nilai di mana semua nilai memiliki jenis yang sama. Kunci dalam peta harus berupa string. Nilai dalam peta dapat berupa jenis apa pun, termasuk jenis kompleks lainnya.

Cuplikan berikut menunjukkan contoh definisi properti yang menggunakan jenis Map di kolom schema. Nilai dalam peta adalah string:

{
  "@type": "Property",
  "name": "modules",
  "writable": true,
  "schema": {
    "@type": "Map",
    "mapKey": {
      "name": "moduleName",
      "schema": "string"
    },
    "mapValue": {
      "name": "moduleState",
      "schema": "string"
    }
  }
}

Objek

Jenis objek terdiri dari bidang bernama. Jenis bidang dalam peta objek bisa menjadi jenis primitif atau kompleks.

Cuplikan berikut menunjukkan contoh definisi telemetri yang menggunakan jenis Object di dalam bidang schema. Bidang dalam objek adalah dateTime, duration, dan string jenis:

{
  "@type": "Telemetry",
  "name": "monitor",
  "schema": {
    "@type": "Object",
    "fields": [
      {
        "name": "start",
        "schema": "dateTime"
      },
      {
        "name": "interval",
        "schema": "duration"
      },
      {
        "name": "status",
        "schema": "string"
      }
    ]
  }
}

Jenis geospasial

DTDL menyediakan sekumpulan jenis geospasial, berdasarkan GeoJSON, untuk pemodelan struktur data geografis: point, , multiPoint, lineStringmultiLineString, polygon, dan multiPolygon. Jenis ini adalah struktur array, objek, dan enumerasi berlapis yang telah ditentukan sebelumnya.

Cuplikan berikut menunjukkan contoh definisi telemetri yang menggunakan tipe point dalam bidang schema.

{
  "@type": "Telemetry",
  "name": "location",
  "schema": "point"
}

Karena jenis geospasial berbasis array, jenis geospasial saat ini tidak dapat digunakan dalam definisi properti.

Jenis semantik

Jenis data properti atau definisi telemetri menentukan format data yang ditukar perangkat dengan layanan. Jenis semantik menyediakan informasi tentang telemetri dan properti yang dapat digunakan aplikasi untuk menentukan cara memproses atau menampilkan nilai. Setiap jenis semantik memiliki satu atau beberapa unit terkait. Misalnya, celcius dan fahrenheit adalah unit untuk jenis semantik suhu. Dasbor dan analitik IoT Central dapat menggunakan informasi jenis semantik untuk menentukan cara memplot telemetri atau nilai properti dan unit tampilan. Untuk mempelajari bagaimana Anda dapat menggunakan pengurai model untuk membaca jenis semantik, lihat Memahami pengurai model Digital Twins.

Cuplikan berikut menunjukkan contoh definisi telemetri yang menyertakan informasi jenis semantik. Jenis semantik Temperature ditambahkan ke array @type, dan nilai unit, degreeCelsius adalah salah satu unit yang valid untuk jenis semantik:

{
  "@type": [
    "Telemetry",
    "Temperature"
  ],
  "name": "temperature",
  "schema": "double",
  "unit": "degreeCelsius"
}

Lokalisasi

Aplikasi, seperti IoT Central, menggunakan informasi dalam model untuk membangun UI secara dinamis di sekitar data yang ditukar dengan perangkat IoT Plug and Play. Misalnya, petak peta di dasbor dapat menampilkan nama dan deskripsi untuk telemetri, properti, dan perintah.

Bidang description dan displayName opsional dalam model menyimpan string yang ditujukan untuk digunakan di UI. Bidang ini dapat menyimpan string yang dilokalkan yang dapat digunakan aplikasi untuk merender UI yang dilokalkan.

Cuplikan berikut menunjukkan contoh definisi telemetri suhu yang mencakup string yang dilokalkan:

{
  "@type": [
    "Telemetry",
    "Temperature"
  ],
  "description": {
    "en": "Temperature in degrees Celsius.",
    "it": "Temperatura in gradi Celsius."
  },
  "displayName": {
    "en": "Temperature",
    "it": "Temperatura"
  },
  "name": "temperature",
  "schema": "double",
  "unit": "degreeCelsius"
}

Menambahkan string yang dilokalkan bersifat opsional. Contoh berikut hanya memiliki satu bahasa default:

{
  "@type": [
    "Telemetry",
    "Temperature"
  ],
  "description": "Temperature in degrees Celsius.",
  "displayName": "Temperature",
  "name": "temperature",
  "schema": "double",
  "unit": "degreeCelsius"
}

Siklus hidup dan alat

Empat tahap siklus hidup untuk model perangkat adalah penulis, penerbitan, penggunaan, dan versi:

Penulis

Model perangkat DTML adalah dokumen JSON yang dapat Anda buat di editor teks. Namun, di IoT Central Anda dapat menggunakan lingkungan GUI templat perangkat untuk membuat model DTML. Di IoT Central Anda dapat:

  • Buat antarmuka yang menentukan properti, telemetri, dan perintah.
  • Gunakan komponen untuk merakit beberapa antarmuka bersama-sama.
  • Tentukan hubungan pewarisan antar antarmuka.
  • Mengimpor dan mengekspor file model DTML.

Untuk mempelajari selengkapnya, lihat Menentukan jenis perangkat IoT baru di aplikasi Azure IoT Central Anda.

Ada ekstensi penulisan DTDL untuk VS Code yang mendukung DTDL v2 dan DTDL v3.

Untuk menginstal ekstensi DTDL untuk VISUAL Code, buka editor DTDL untuk Visual Studio Code. Anda juga dapat mencari DTDL dalam tampilan Ekstensi di Visual Studio Code.

Setelah Anda menginstal ekstensi, gunakan untuk membantu Anda menulis file model DTDL di Visual Studio Code:

  • Ekstensi ini menyediakan validasi sintaks dalam file model DTDL, menyoroti kesalahan seperti yang ditunjukkan pada cuplikan layar berikut:

    Cuplikan layar yang memperlihatkan validasi model DTDL di Visual Studio Code.

  • Gunakan intellisense dan lengkapi otomatis saat Anda mengedit model DTDL:

    Cuplikan layar yang memperlihatkan intellisense untuk model DTDL di Visual Studio Code.

  • Buat antarmuka DTDL baru. Perintah DTDL: Create Interface membuat file JSON dengan antarmuka baru. Antarmuka mencakup contoh definisi telemetri, properti, dan perintah.

Gunakan

Aplikasi, seperti IoT Central, menggunakan model perangkat. Di IoT Central, model adalah bagian dari templat perangkat yang menjelaskan kemampuan perangkat. IoT Central menggunakan templat perangkat untuk membangun UI untuk perangkat secara dinamis, termasuk dasbor dan analitik.

Nota

IoT Central mendefinisikan beberapa ekstensi ke bahasa DTDL. Untuk mempelajari lebih lanjut, lihat ekstensi IoT Central.

Solusi kustom dapat menggunakan pengurai model Digital Twins untuk memahami kemampuan perangkat yang mengimplementasikan model. Untuk mempelajari selengkapnya, lihat Menggunakan model IoT Plug and Play dalam solusi IoT.

Versi

Untuk memastikan perangkat dan solusi sisi server yang menggunakan model terus berfungsi, model yang diterbitkan tidak dapat diubah.

DTMI menyertakan nomor versi yang dapat Anda gunakan untuk membuat beberapa versi model. Perangkat dan solusi sisi server dapat menggunakan versi tertentu yang dirancang untuk digunakan.

IoT Central menerapkan lebih banyak aturan penerapan versi untuk model perangkat. Jika Anda membuat versi templat perangkat dan modelnya di IoT Central, Anda dapat memigrasikan perangkat dari versi sebelumnya ke versi yang lebih baru. Namun, perangkat yang dimigrasikan tidak dapat menggunakan kemampuan baru tanpa peningkatan firmware. Untuk mempelajari selengkapnya, lihat Mengedit templat perangkat.

Terbitkan

Mulai Februari 2024, program Perangkat Bersertifikat Azure dihentikan. Oleh karena itu, Microsoft tidak lagi menerima pengiriman model DTDL ke repositori model plug and play Azure IoT .

Jika Anda ingin menyiapkan repositori model Anda sendiri, Anda dapat menggunakan repositori alat model plug and play Azure IoT . Repositori ini mencakup kode untuk dmr-client alat CLI yang dapat memvalidasi, mengimpor, dan memperluas model DTDL. Alat ini juga memungkinkan Anda mengindeks repositori model yang mengikuti konvensi repositori model perangkat.

Batasan dan kendala

Daftar berikut ini meringkas beberapa batasan dan batasan utama pada model:

  • Saat ini, kedalaman maksimum untuk array, peta, dan objek adalah lima tingkat.
  • Anda tidak dapat menggunakan array dalam definisi properti.
  • Anda dapat memperluas antarmuka ke kedalaman 10 level.
  • Antarmuka dapat mengimplementasi paling banyak dua antarmuka lainnya.
  • Komponen tidak dapat berisi komponen lain.

Memahami pengurai model Digital Twins

Digital Twins Definition Language (DTDL) dijelaskan dalam Spesifikasi DTDL. Pengguna dapat menggunakan paket Digital Twins Model Parser NuGet untuk memvalidasi dan mengkueri model DTDL v2 atau v3. Model DTDL dapat ditentukan dalam beberapa file.

Menginstal pengurai model DTDL

Pengurai tersedia di NuGet.org dengan ID: DTDLParser. Untuk menginstal pengurai, gunakan manajer paket NuGet yang kompatibel seperti yang ada di Visual Studio atau di dotnet CLI.

dotnet add package DTDLParser

Nota

Pada saat penulisan, versi pengurai adalah 1.0.52.

Menggunakan pengurai untuk memvalidasi dan memeriksa model

DTDLParser adalah pustaka yang dapat Anda gunakan untuk:

  • Tentukan apakah satu atau beberapa model valid sesuai dengan spesifikasi bahasa v2 atau v3.
  • Identifikasi kesalahan pemodelan tertentu.
  • Memeriksa konten model.

Model dapat terdiri dari satu atau beberapa antarmuka yang dijelaskan dalam file JSON. Anda dapat menggunakan pengurai untuk memuat semua file yang menentukan model lalu memvalidasi semua file secara keseluruhan, termasuk referensi apa pun di antara file.

Repositori DTDLParser untuk .NET mencakup sampel berikut yang mengilustrasikan penggunaan pengurai:

  • DTDLParserResolveSample menunjukkan cara mengurai antarmuka dengan referensi eksternal, menyelesaikan dependensi menggunakan Azure.IoT.ModelsRepository klien.
  • DTDLParserJSInteropSample menunjukkan cara menggunakan DTDL Parser dari JavaScript yang berjalan di browser, menggunakan .NET JSInterop.

Repositori DTDLParser untuk .NET juga menyertakan kumpulan tutorial yang menunjukkan kepada Anda cara menggunakan pengurai untuk memvalidasi dan memeriksa model.

API pengurai model memungkinkan banyak skenario untuk mengotomatiskan atau memvalidasi tugas yang bergantung pada model DTDL. Misalnya, Anda dapat membangun UI secara dinamis dari informasi dalam model.

Langkah berikutnya

Sekarang setelah Anda mempelajari tentang pemodelan perangkat, berikut adalah beberapa sumber daya lainnya: