IoT Plug and Play modellezési útmutató

Az IoT Plug and Play alapja egy olyan eszközmodell, amely leírja az eszköz képességeit egy IoT Plug and Play-kompatibilis alkalmazáshoz. Ez a modell a következő interfészek készleteként van felépítve:

  • Az eszköz vagy más entitás írásvédett vagy írható állapotát képviselő tulajdonságok . Az eszköz sorozatszáma lehet például írásvédett tulajdonság, a termosztát célhőmérséklete pedig írható tulajdonság.
  • Telemetriamezők , amelyek meghatározzák az eszköz által kibocsátott adatokat, függetlenül attól, hogy az adatok rendszeres érzékelőolvasási adatfolyamok, alkalmi hibák vagy információs üzenetek.
  • Az eszközön elvégezhető függvényt vagy műveletet leíró parancsok . Egy parancs például újraindíthat egy átjárót, vagy távoli kamerával készíthet képet.

Ha többet szeretne megtudni arról, hogy az IoT Plug and Play hogyan használja az eszközmodelleket, tekintse meg az IoT Plug and Play eszköz fejlesztői útmutatóját és az IoT Plug and Play szolgáltatás fejlesztői útmutatóját.

Modell definiálásához használja a Digital Twins Definíciós nyelvet (DTDL). A DTDL egy JSON-LD nevű JSON-változatot használ. Az alábbi kódrészlet egy olyan termosztátos eszköz modelljét mutatja be, amely:

  • Egyedi modellazonosítóval rendelkezik: dtmi:com:example:Thermostat;1.
  • Hőmérsékleti telemetriát küld.
  • Írható tulajdonsága van a célhőmérséklet beállításához.
  • Írásvédett tulajdonsága van, amely a legutóbbi újraindítás óta a maximális hőmérsékletet jelenti.
  • Egy olyan parancsra válaszol, amely egy adott időszakban maximális, minimális és átlagos hőmérsékletet kér.
{
  "@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"
            }
          ]
        }
      }
    }
  ]
}

A termosztátmodell egyetlen adapterrel rendelkezik. A cikk későbbi példái összetettebb, összetevőket és öröklést használó modelleket mutatnak be.

Ez a cikk bemutatja, hogyan tervezhet és hozhat létre saját modelleket, és olyan témaköröket ismertet, mint az adattípusok, a modellstruktúra és az eszközök.

További információ: Digital Twins Definition Language specifikáció.

Feljegyzés

Az IoT Central jelenleg egy IoT Central-bővítménnyel támogatja a DTDL v2-t.

Modellstruktúra

A tulajdonságok, a telemetria és a parancsok interfészekbe vannak csoportosítva. Ez a szakasz azt ismerteti, hogyan használhat felületeket egyszerű és összetett modellek leírására összetevők és öröklés használatával.

Modellazonosítók

Minden interfész egyedi digitális ikermodell-azonosítóval (DTMI) rendelkezik. Az összetett modellek DTMI-ket használnak az összetevők azonosításához. Az alkalmazások az eszközök által küldött DTM-eket használhatják a modelldefiníciók adattárban való megkereséséhez.

A DTMI-knek a következő elnevezési konvenciót kell használniuk:

  • A DTMI előtagja.dtmi:
  • A DTMI-utótag a modell verziószáma, például ;2.
  • A DTMI törzse leképezi a modellt tároló modelladattár mappájára és fájljára. A verziószám a fájlnév része.

A DTMI dtmi:com:Example:Thermostat;2 által azonosított modell például a dtmi/com/example/thermostat-2.json fájlban van tárolva.

Az alábbi kódrészlet egy interfészdefiníció körvonalát mutatja be az egyedi DTMI-vel:

{
  "@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": [
    ...
  ]
}

Nincsenek összetevők

Egy egyszerű modell, például a korábban bemutatott termosztát, nem használ beágyazott vagy kaszkádolt összetevőket. A telemetria, a tulajdonságok és a parancsok a contents felület csomópontjában vannak definiálva.

Az alábbi példa egy olyan egyszerű modell egy részét mutatja be, amely nem használ összetevőket:

{
  "@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",
...

Az olyan eszközök, mint az Azure IoT Explorer és az IoT Central eszközsablon-tervezője, alapértelmezett összetevőként egy különálló felületet címkéznek, például a termosztátot.

Az alábbi képernyőkép bemutatja, hogyan jelenik meg a modell az Azure IoT Explorer eszközben:

Az Azure IoT Explorer eszköz alapértelmezett összetevőjét bemutató képernyőkép.

Az alábbi képernyőkép bemutatja, hogyan jelenik meg a modell alapértelmezett összetevőként az IoT Central eszközsablon-tervezőjében. Válassza az Identitás megtekintése lehetőséget a modell DTMI-jének megtekintéséhez:

Az IoT Central eszközsablon-tervező eszköz termosztát modelljét bemutató képernyőkép.

A modellazonosító egy ikereszköz-tulajdonságban van tárolva, ahogy az alábbi képernyőképen látható:

Képernyőkép az Azure IoT Explorer eszközről, amely egy digitális ikertulajdonság modellazonosítóját jeleníti meg.

Az összetevők nélküli DTDL-modell hasznos egyszerűsítés egy eszköz vagy egy IoT Edge-modul számára, amely telemetriai, tulajdonságokkal és parancsokkal rendelkezik. Az összetevőket nem használó modellek megkönnyítik egy meglévő eszköz vagy modul IoT Plug and Play-eszköz vagy modul migrálását – olyan DTDL-modellt hozhat létre, amely leírja a tényleges eszközt vagy modult anélkül, hogy bármilyen összetevőt meg kellene határoznia.

Tipp.

A modul lehet eszközmodul vagy IoT Edge-modul.

Újrafelhasználás

A felületdefiníciók kétféleképpen használhatók újra.

  • A modellben több összetevő használatával hivatkozhat más interfészdefiníciókra.
  • A meglévő felületdefiníciók kiterjesztése öröklés használatával.

Több összetevő

Az összetevők lehetővé teszik a modell felületének összeállítását más felületek szerelvényeként.

A Termosztát interfész például modellként van definiálva. Ezt az interfészt egy vagy több összetevőként is beépítheti a Hőmérséklet-vezérlő modell meghatározásakor. Az alábbi példában ezeket az összetevőket a rendszer meghívja és thermostat2meghívjathermostat1.

Több összetevőt tartalmazó DTDL-modell esetén két vagy több összetevőszakasz van. Minden szakasz @type egy sémára Component van állítva, és explicit módon hivatkozik egy sémára az alábbi kódrészletben látható módon:

{
  "@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."
    }
  ]
}

Ez a modell három összetevőt határoz meg a tartalomszakaszban : két Thermostat összetevőt és egy összetevőt DeviceInformation . A tartalomszakasz tulajdonság-, telemetria- és parancsdefiníciókat is tartalmaz.

Az alábbi képernyőképek bemutatják, hogyan jelenik meg ez a modell az IoT Centralban. A hőmérséklet-vezérlő tulajdonság-, telemetria- és parancsdefiníciói a legfelső szintű Alapértelmezett összetevőben jelennek meg. Az egyes termosztátok tulajdonság-, telemetria- és parancsdefiníciói az összetevő-definíciókban jelennek meg:

Képernyőkép a hőmérséklet-vezérlő eszközsablonról az IoT Centralban.

Képernyőkép az IoT Central hőmérséklet-vezérlő eszközsablonjában található termosztát-összetevőkről.

Az összetevőkkel interakcióba lépő eszközkód írásáról az IoT Plug and Play eszköz fejlesztői útmutatójában olvashat.

Az IoT Plug and Play szolgáltatás fejlesztői útmutatójában megtudhatja, hogyan írhat olyan szolgáltatáskódot, amely az eszköz összetevőivel kommunikál.

Öröklődés

Az öröklés lehetővé teszi, hogy az alapfelületeken lévő képességeket újra felhasználva bővítse az interfész képességeit. Több eszközmodell például közös képességeket oszthat meg, például sorozatszámot:

Egy eszközmodell öröklési példáját bemutató ábra. A termosztát és a Flow Controller interfész egyaránt megosztja a képességeket egy alapfelületről.

Az alábbi kódrészlet egy DTML-modellt mutat be, amely a extends kulcsszót használja az előző ábrán látható öröklési kapcsolat definiálásához:

[
  {
    "@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
      }
    ]
  }
]

Az alábbi képernyőképen ez a modell látható az IoT Central eszközsablon-környezetében:

Képernyőkép az IoT Central felületörökléséről.

Eszköz- vagy szolgáltatásoldali kód írásakor a kódnak nem kell semmi különlegeset tennie az örökölt felületek kezeléséhez. Az ebben a szakaszban bemutatott példában az eszközkód úgy jelenti a sorozatszámot, mintha a termosztát felületének része lenne.

Tippek

Modell létrehozásakor kombinálhatja az összetevőket és az öröklést. Az alábbi ábrán egy thermostat felülettől baseDevice öröklő modell látható. Az baseDevice interfész egy olyan összetevővel rendelkezik, amelyet maga örököl egy másik interfésztől:

Az összetevőket és az öröklést egyaránt használó modellt ábrázoló diagram.

Az alábbi kódrészlet egy DTML-modellt mutat be, amely az előző ábrán látható öröklési kapcsolat és összetevő-használat meghatározásához használja a extends kulcsszavakat és component a kulcsszavakat:

[
  {
    "@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"
      }
    ]
  }
]

Adattípusok

Adattípusok használatával definiálhat telemetriai adatokat, tulajdonságokat és parancsparamétereket. Az adattípusok lehetnek primitívek vagy összetettek. Az összetett adattípusok primitív vagy más összetett típusokat használnak. Az összetett típusok maximális mélysége öt szint.

Primitív típusok

Az alábbi táblázat a használható primitív típusokat mutatja be:

Primitív típus Leírás
boolean Logikai érték
date Az RFC 3339 5.6 szakaszában meghatározott teljes dátum
dateTime Az RFC 3339-ben meghatározott dátum-idő
double Egy I Enterprise kiadás E 8 bájtos lebegőpontos
duration Időtartam ISO 8601 formátumban
float Egy I Enterprise kiadás E 4 bájtos lebegőpontos
integer Aláírt 4 bájtos egész szám
long Aláírt 8 bájtos egész szám
string UTF8-sztring
time Az RFC 3339 5.6 szakaszában meghatározott teljes munkaidő

Az alábbi kódrészlet egy példa telemetriadefiníciót mutat be, amely a mezőben szereplő típust doubleschema használja:

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

Összetett adattípusok

Az összetett adattípusok tömbök, enumerálás, térkép, objektum vagy térinformatikai típusok egyike.

Tömbök

A tömb egy indexelhető adattípus, amelyben minden elem azonos típusú. Az elemtípus lehet primitív vagy összetett típus.

Az alábbi kódrészlet egy példa telemetriadefiníciót mutat be, amely a mezőben szereplő típust Arrayschema használja. A tömb elemei logikai értékek:

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

Enumerálások

Az enumerálás egy olyan típust ír le, amelynek nevesített címkékből áll, amelyek értékeket képeznek le. Az értékek lehetnek egész számok vagy sztringek, de a címkék mindig sztringek.

Az alábbi kódrészlet egy példa telemetriadefiníciót mutat be, amely a mezőben szereplő típust Enumschema használja. Az enumerálás értékei egész számok:

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

Maps

A térkép olyan típus kulcs-érték párokkal, ahol az értékek mindegyike azonos típusú. A térkép kulcsának sztringnek kell lennie. A térkép értékei bármilyen típusúak lehetnek, beleértve egy másik összetett típust is.

Az alábbi kódrészlet egy példatulajdonság-definíciót mutat be, amely a mezőben szereplő típust Mapschema használja. A térkép értékei sztringek:

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

Objektumokat

Az objektumtípus nevesített mezőkből áll. Az objektumtérkép mezőinek típusai lehetnek primitívek vagy összetettek.

Az alábbi kódrészlet egy példa telemetriadefiníciót mutat be, amely a mezőben szereplő típust Objectschema használja. Az objektum mezői a következőkdateTimedurationstring:

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

Térinformatikai típusok

A DTDL GeoJSON-alapú térinformatikai típusokat biztosít a földrajzi adatstruktúrák modellezéséhez: point, , multiPointlineString, multiLineString, polygonés multiPolygon. Ezek a típusok tömbök, objektumok és számbavételek előre definiált beágyazott struktúrái.

Az alábbi kódrészlet egy példa telemetriadefiníciót mutat be, amely a mezőben szereplő típust pointschema használja:

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

Mivel a térinformatikai típusok tömbalapúak, a tulajdonságdefiníciókban jelenleg nem használhatók.

Szemantikai típusok

A tulajdonság- vagy telemetriadefiníció adattípusa határozza meg az eszköz által a szolgáltatással kicserélt adatok formátumát. A szemantikai típus információt nyújt a telemetriáról és a tulajdonságokról, amelyekkel az alkalmazás meghatározhatja, hogyan lehet feldolgozni vagy megjeleníteni egy értéket. Minden szemantikai típushoz tartozik egy vagy több társított egység. A celsius és a fahrenheit például a hőmérséklet szemantikai típusának mértékegysége. Az IoT Central-irányítópultok és -elemzések a szemantikai típusinformációkkal határozzák meg, hogyan ábrázolhatók telemetriai vagy tulajdonságértékek és megjelenítési egységek. A szemantikai típusok olvasásához a modellelemző használatával a digitális ikerpéldányok modellelemzőjének ismertetése című témakörben talál további információt.

Az alábbi kódrészlet egy példa telemetriai definíciót mutat be, amely szemantikai típusadatokat tartalmaz. A szemantikai típus Temperature hozzá lesz adva a @type tömbhöz, degreeCelsius és az unit érték a szemantikai típus egyik érvényes mértékegysége:

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

Honosítás

Az alkalmazások, például az IoT Central, a modell információi alapján dinamikusan építenek felhasználói felületet az IoT Plug and Play-eszközzel kicserélt adatok köré. Az irányítópult csempéi például megjeleníthetik a telemetriai adatok, tulajdonságok és parancsok nevét és leírását.

A modell opcionális description és displayName mezői felhasználói felületen való használatra szánt sztringeket tartalmaznak. Ezek a mezők tartalmazhatnak honosított sztringeket, amelyekkel egy alkalmazás megjeleníthet egy honosított felhasználói felületet.

Az alábbi kódrészlet egy példa hőmérsékleti telemetriadefiníciót mutat be, amely honosított sztringeket tartalmaz:

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

Honosított sztringek hozzáadása nem kötelező. Az alábbi példa csak egyetlen alapértelmezett nyelvvel rendelkezik:

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

Életciklus és eszközök

Az eszközmodell négy életciklus-szakasza a szerző, a közzététel, a használat és a verzió:

Szerző

A DTML-eszközmodellek olyan JSON-dokumentumok, amelyeket szövegszerkesztőben hozhat létre. Az IoT Centralban azonban az eszközsablon GUI-környezetével létrehozhat egy DTML-modellt. Az IoT Centralban a következő műveleteket végezheti el:

  • Tulajdonságokat, telemetriát és parancsokat meghatározó felületek létrehozása.
  • Összetevők használatával több illesztőt is összeszerelhet.
  • Az illesztők közötti öröklési kapcsolatok definiálása.
  • DTML-modellfájlok importálása és exportálása.

További információ: Új IoT-eszköztípus definiálása az Azure IoT Central-alkalmazásban.

Van egy DTDL szerzői bővítmény a VS Code-hoz.

A VS Code DTDL-bővítményének telepítéséhez lépjen a Visual Studio Code DTDL-szerkesztőjéhez. DTDL-t a VS Code Bővítmények nézetében is kereshet.

Amikor telepítette a bővítményt, a használatával DTDL-modellfájlokat hozhat létre a VS Code-ban:

  • A bővítmény szintaxis-ellenőrzést biztosít a DTDL-modellfájlokban, kiemelve a hibákat az alábbi képernyőképen látható módon:

    Képernyőkép a DTDL-modell érvényesítéséről a VS Code-ban.

  • DTDL-modellek szerkesztésekor használja az intelliense és az automatikus kiegészítést:

    Képernyőkép a VS Code DTDL-modelljeihez készült Intellisense-ről.

  • Hozzon létre egy új DTDL-felületet. A DTDL: Create Interface parancs létrehoz egy JSON-fájlt egy új felülettel. Az interfész például telemetriát, tulajdonságot és parancsdefiníciókat tartalmaz.

Használat

Az alkalmazások, például az IoT Central eszközmodelleket használnak. Az IoT Centralban a modell az eszköz képességeit leíró eszközsablon része. Az IoT Central az eszközsablon használatával dinamikusan készít felhasználói felületet az eszközhöz, beleértve az irányítópultokat és az elemzéseket is.

Feljegyzés

Az IoT Central definiál néhány bővítményt a DTDL nyelvhez. További információ: IoT Central-bővítmény.

Az egyéni megoldások a digitális ikerpéldányok modellelemzője segítségével ismerhetik meg a modellt megvalósító eszköz képességeit. További információ: IoT Plug and Play-modellek használata IoT-megoldásban.

Verzió

Annak érdekében, hogy a modelleket használó eszközök és kiszolgálóoldali megoldások továbbra is működjenek, a közzétett modellek nem módosíthatók.

A DTMI tartalmaz egy verziószámot, amellyel egy modell több verzióját is létrehozhatja. Az eszközök és a kiszolgálóoldali megoldások a használni kívánt verziót használhatják.

Az IoT Central további verziószámozási szabályokat implementál az eszközmodellekhez. Ha az IoT Centralban verziószámozza az eszközsablont és annak modelljét, áttelepítheti az eszközöket a korábbi verziókból a későbbi verziókba. A migrált eszközök azonban nem használhatnak új képességeket belső vezérlőprogram-frissítés nélkül. További információ: Eszközsablon szerkesztése.

Közzététel

2024 februárjától az Azure Certified Device program kivezetve. Ezért a Microsoft már nem fogadja el a DTDL-modellek beküldését azAzure IoT plug and play modellek adattárába.

Ha saját modelladattárat szeretne beállítani, használhatja az Azure IoT plug and play models tools adattárat. Ez az adattár tartalmazza a dmr-client CLI-eszköz kódját, amely képes a DTDL-modellek ellenőrzésére, importálására és kibontára. Ezzel az eszközzel indexelheti az eszközmodell-adattár konvencióit követő modelladattárakat is.

Határétékek és korlátozások

Az alábbi lista összefoglal néhány, a modellekre vonatkozó fő korlátozást és korlátozást:

  • A tömbök, térképek és objektumok maximális mélysége jelenleg öt szint.
  • A tulajdonságdefiníciókban nem használhat tömböket.
  • Az interfészeket 10 szintig bővítheti.
  • Egy interfész legfeljebb két másik adaptert is kiterjeszthet.
  • Az összetevők nem tartalmazhatnak másik összetevőt.

Következő lépések

Most, hogy megismerte az eszközmodellezést, íme néhány további forrás: