Bagikan melalui


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, baik data berupa aliran reguler pembacaan sensor, kesalahan sesekali, maupun 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 perangkat untuk perangkat termostat bahwa:

  • Memiliki ID model unik: dtmi:com:example:Thermostat;1.
  • Mengirimkan telemetri suhu.
  • Memiliki properti bisa-tulis untuk mengatur suhu target.
  • Memiliki properti baca-saja untuk melaporkan suhu maksimum sejak reboot 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 menampilkan model yang lebih kompleks yang menggunakan komponen dan pewarisan.

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

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

Catatan

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 bisa menggunakan antarmuka untuk menggambarkan model yang sederhana dan kompleks menggunakan komponen dan pewarisan.

ID Model

Setiap antarmuka memiliki pengidentifikasi model kembar digital (DTMI) yang unik. Model kompleks menggunakan DTMI untuk mengidentifikasi komponen. Aplikasi bisa menggunakan DTMI 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.
  • Isi DTMI memetakan ke folder dan file di repositori model tempat model disimpan. Nomor versi adalah bagian dari nama file.

Misalnya, model teridentifikasi oleh DTMI dtmi:com:Example:Thermostat;2 disimpan di 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 node 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 dalam desainer templat perangkat IoT Central. Pilih Lihat identitas untuk melihat DTMI model:

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

ID model disimpan di properti kembar perangkat saat cuplikan layar berikut menunjukkan:

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 untuk menjadi perangkat atau modul IoT Plug and Play - Anda membuat model DTDL yang menunjukkan perangkat atau modul Anda yang sebenarnya tanpa perlu menentukan komponen apa pun.

Tip

Modul bisa menjadi modul perangkat atau modul IoT Edge.

Menggunakan kembali

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 Thermostat didefinisikan sebagai model. Anda bisa menggabungkan antarmuka ini sebagai satu atau lebih banyak komponen saat Anda 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 memiliki @type yang diatur ke Component dan secara eksplisit merujuk pada skema sebagaimana 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 dalam bagian konten - dua komponen Thermostat dan satu komponen DeviceInformation. Bagian konten juga mencakup definisi properti, telemetri, dan perintah.

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

Cuplikan layar yang memperlihatkan templat perangkat pengontrol suhu di IoT Central.

Cuplikan layar memperlihatkan kontrol termostat di 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.

Warisan

Pewarisan memungkinkan Anda menggunakan kembali kemampuan pada antarmuka dasar untuk memperluas kemampuan antarmuka. Misalnya, beberapa model perangkat bisa 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 kata kunci extends 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 kode perangkat atau sisi layanan, kode Anda tidak perlu melakukan hal istimewa untuk menangani antarmuka yang diwariskan. Dalam contoh yang diperlihatkan pada bagian ini, kode perangkat Anda melaporkan nomor seri seolah-olah merupakan bagian dari antarmuka termostat.

Tips

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

Diagram menunjukkan model yang menggunakan komponen dan pewarisan.

Cuplikan berikut menunjukkan model DTML yang menggunakan kata kunci extends dan component untuk menentukan hubungan pewarisan dan penggunaan komponen 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
      },
      {
        "@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 kumpulan jenis primitif yang bisa Anda gunakan:

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

Cuplikan berikut menunjukkan contoh definisi telemetri yang menggunakan jenis double di 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.

Larik

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

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

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

Enumerasi

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

Cuplikan berikut memperlihatkan contoh definisi telemetri yang menggunakan jenis Enum di 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 bisa berjenis apa saja, termasuk jenis kompleks lainnya.

Cuplikan berikut menunjukkan contoh definisi properti yang menggunakan jenis Map dalam bidang 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 berupa jenis primitif atau kompleks.

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

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

Jenis geospasial

DTDL menyediakan jenis geospasial, berdasarkan GeoJSON, untuk struktur data geospasial pemodelan: point, multiPoint, lineString, multiLineString, polygon, dan multiPolygon. Jenis ini adalah struktur array, objek, dan enumerasi yang dibuat sistem.

Cuplikan berikut menunjukkan contoh definisi telemetri yang menggunakan jenis point di bidang schema:

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

Karena jenis geospasial berbasis array, maka saat ini tidak bisa 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 bisa digunakan aplikasi untuk menentukan cara memroses atau menampilkan nilai. Setiap jenis semantik memiliki satu atau beberapa unit terkait. Misalnya, celsius dan fahrenheit adalah unit untuk jenis semantik suhu. Dasbor dan analitik IoT Central bisa menggunakan informasi jenis semantik untuk menentukan cara memplot nilai telemetri atau 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"
}

Pelokalan

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 pada dasbor bisa menampilkan nama dan deskripsi untuk telemetri, properti, dan perintah.

Bidang opsional description dan bidang displayName pada string penahanan model dimaksudkan untuk digunakan dalam antarmuka pengguna. Bidang ini bisa menampung string yang dilokalkan yang bisa digunakan aplikasi untuk merender antarmuka pengguna yang dilokalkan.

Cuplikan berikut menunjukkan contoh definisi telemetri suhu yang menyertakan 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 ini 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 penulisan, publikasi, penggunaan, dan versi:

Penulis

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

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

Untuk mempelajari lebih lanjut, lihat Menentukan jenis perangkat IoT di aplikasi Azure IoT Central Anda.

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

Untuk memasang ekstensi DTDL untuk Visual Studio Code, buka editor DTDL untuk Visual Studio Code. Anda juga dapat mencari DTDL di 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 tangkapan layar berikut:

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

  • Gunakan intellisense dan autocomplete 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. Antarmukanya mencakup contoh telemetri, properti, dan definisi perintah.

Menggunakan

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

Catatan

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 tetap berfungsi, model yang diterbitkan tidak bisa diubah.

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

IoT Central menerapkan aturan penerapan versi lebih lanjut untuk model perangkat. Jika Anda menerapkan versi templat perangkat dan modelnya di IoT Central, Anda bisa memigrasikan perangkat dari versi sebelumnya ke versi yang lebih baru. Namun, perangkat yang dimigrasikan tidak bisa menggunakan kemampuan baru tanpa peningkatan firmware. Untuk mempelajari lebih lanjut, 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.

Limit dan batasan

Daftar berikut ini merangkum beberapa batasan dan limit utama pada model:

  • Saat ini, kedalaman maksimum untuk array, peta, dan objek adalah lima tingkat.
  • Anda tidak bisa menggunakan array dalam definisi properti.
  • Anda bisa memperluas antarmuka ke tingkat kedalaman 10.
  • Antarmuka bisa memperluas paling banyak dua antarmuka lainnya.
  • Komponen tidak boleh 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.

Pasang parser model DTDL

Pengurai tersedia di NuGet.org dengan ID: DTDLParser. Untuk memasang parser, gunakan pengelola paket NuGet yang kompatibel seperti yang ada di Visual Studio atau di dotnet CLI.

dotnet add package DTDLParser

Catatan

Pada saat penulisan, versi parser 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.

Sebuah model dapat terdiri atas 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 membuat UI secara dinamis dari informasi dalam model.

Langkah berikutnya

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