Co jsou šablony zařízení?

Šablona zařízení v Azure IoT Central je podrobný plán, který definuje charakteristiky a chování typu zařízení, které se připojuje k vaší aplikaci. Šablona zařízení například definuje telemetrii, kterou zařízení odesílá, aby ioT Central mohl vytvářet vizualizace, které používají správné jednotky a datové typy.

Tvůrce řešení přidá šablony zařízení do aplikace IoT Central. Vývojář zařízení napíše kód zařízení, který implementuje chování definované v šabloně zařízení.

Šablona zařízení obsahuje následující části:

  • Model zařízení. Tato část šablony zařízení definuje, jak zařízení komunikuje s vaší aplikací. Každý model zařízení má jedinečné ID. Vývojář zařízení implementuje chování definované v modelu.
    • Kořenová komponenta. Každý model zařízení má kořenovou komponentu. Rozhraní kořenové komponenty popisuje funkce specifické pro model zařízení.
    • Součásti. Model zařízení může kromě kořenové komponenty zahrnovat komponenty, které popisují možnosti zařízení. Každá komponenta má rozhraní, které popisuje možnosti komponenty. Rozhraní komponent se můžou opakovaně používat v jiných modelech zařízení. Například několik modelů telefonních zařízení může používat stejné rozhraní fotoaparátu.
    • Zděděná rozhraní. Model zařízení obsahuje jedno nebo více rozhraní, která rozšiřují možnosti kořenové komponenty.
  • Vlastnosti cloudu. Tato část šablony zařízení umožňuje vývojáři řešení zadat všechna metadata zařízení, která se mají uložit. Vlastnosti cloudu se nikdy nesynchronují se zařízeními a existují pouze v aplikaci. Vlastnosti cloudu nemají vliv na kód, který vývojář zařízení zapisuje k implementaci modelu zařízení.
  • Zobrazení. Tato část šablony zařízení umožňuje vývojáři řešení definovat vizualizace pro zobrazení dat ze zařízení a formulářů pro správu a řízení zařízení. Zobrazení používají model zařízení, vlastnosti cloudu a přizpůsobení. Zobrazení nemají vliv na kód, který vývojář zařízení zapisuje pro implementaci modelu zařízení.

Přiřazení zařízení k šabloně zařízení

Aby zařízení mohlo pracovat s IoT Central, musí být přiřazené k šabloně zařízení. Toto přiřazení se provádí jedním ze čtyř způsobů:

  • Když zaregistrujete zařízení na stránce Zařízení , můžete identifikovat šablonu, kterou má zařízení použít.
  • Když hromadně importujete seznam zařízení, můžete zvolit šablonu zařízení, která mají všechna zařízení v seznamu používat.
  • Po připojení můžete ručně přiřadit nepřiřazené zařízení k šabloně zařízení.
  • Zařízení můžete automaticky přiřadit k šabloně zařízení odesláním ID modelu, když se zařízení poprvé připojí k vaší aplikaci.

Automatické přiřazení

IoT Central může automaticky přiřadit zařízení k šabloně zařízení, když se zařízení připojí. Zařízení by mělo při připojování odeslat ID modelu . IoT Central používá ID modelu k identifikaci šablony zařízení pro daný konkrétní model zařízení. Proces zjišťování funguje takto:

  1. Pokud je šablona zařízení již publikovaná v aplikaci IoT Central, zařízení se přiřadí k šabloně zařízení.
  2. Pokud šablona zařízení ještě není publikovaná v aplikaci IoT Central, IoT Central vyhledá model zařízení v úložišti veřejného modelu. Pokud IoT Central najde model, použije ho k vygenerování základní šablony zařízení.
  3. Pokud IoT Central nenajde model v úložišti veřejného modelu, zařízení se označí jako nepřiřazené. Operátor může buď vytvořit šablonu zařízení pro zařízení a pak migrovat nepřiřazené zařízení do nové šablony zařízení, nebo automaticky vygenerovat šablonu zařízení na základě dat, která zařízení odesílá.

Následující snímek obrazovky ukazuje, jak zobrazit ID modelu šablony zařízení v IoT Central. V šabloně zařízení vyberte komponentu a pak vyberte Upravit identitu:

Snímek obrazovky znázorňující model I D v šabloně zařízení termostatu

Model termostatu můžete zobrazit v úložišti veřejného modelu. Definice ID modelu vypadá takto:

"@id": "dtmi:com:example:Thermostat;1"

Pomocí následující datové části DPS přiřaďte zařízení k šabloně zařízení:

{
  "modelId":"dtmi:com:example:TemperatureController;2"
}

Další informace o datové části DPS najdete v ukázkovém kódu použitém v kurzu: Vytvoření a připojení klientské aplikace k aplikaci Azure IoT Central.

Modely zařízení

Model zařízení definuje, jak zařízení komunikuje s vaší aplikací IoT Central. Vývojář zařízení se musí ujistit, že zařízení implementuje chování definované v modelu zařízení, aby ioT Central mohl zařízení monitorovat a spravovat. Model zařízení je tvořen jedním nebo více rozhraními a každé rozhraní může definovat kolekci typů telemetrie , vlastností zařízení a příkazů. Vývojář řešení může importovat soubor JSON, který definuje model zařízení do šablony zařízení, nebo pomocí webového uživatelského rozhraní v IoT Central vytvořit nebo upravit model zařízení.

Další informace o úpravách modelu zařízení najdete v tématu Úprava existující šablony zařízení.

Vývojář řešení může také exportovat soubor JSON, který obsahuje model zařízení. Vývojář zařízení může tento dokument JSON použít k pochopení toho, jak má zařízení komunikovat s aplikací IoT Central.

Soubor JSON, který definuje model zařízení, používá jazyk DTDL (Digital Twin Definition Language) V2. IoT Central očekává, že soubor JSON bude obsahovat model zařízení s rozhraními definovanými vloženými, nikoli v samostatných souborech. Další informace najdete v průvodci modelováním IoT Plug and Play.

Typické zařízení IoT se skládá z:

  • Vlastní části, což jsou věci, které umožňují, aby vaše zařízení bylo jedinečné.
  • Standardní části, které jsou společné pro všechna zařízení.

Tyto části se nazývají rozhraní v modelu zařízení. Rozhraní definují podrobnosti o jednotlivých částech, které vaše zařízení implementuje. Rozhraní jsou opakovaně použitelná napříč modely zařízení. V DTDL odkazuje komponenta na jiné rozhraní, které může být definováno v samostatném souboru DTDL nebo v samostatné části souboru.

Následující příklad ukazuje přehled modelu zařízení pro zařízení s kontrolerem teploty. Kořenová komponenta obsahuje definice pro workingSet, serialNumbera reboot. Model zařízení obsahuje také dvě thermostat komponenty a komponentu deviceInformation . Obsah těchto tří součástí byl odebrán kvůli stručnosti:

[
  {
    "@context": [
      "dtmi:iotcentral:context;2",
      "dtmi:dtdl:context;2"
    ],
    "@id": "dtmi:com:example:TemperatureController;2",
    "@type": "Interface",
    "contents": [
      {
        "@type": [
          "Telemetry",
          "DataSize"
        ],
        "description": {
          "en": "Current working set of the device memory in KiB."
        },
        "displayName": {
          "en": "Working Set"
        },
        "name": "workingSet",
        "schema": "double",
        "unit": "kibibit"
      },
      {
        "@type": "Property",
        "displayName": {
          "en": "Serial Number"
        },
        "name": "serialNumber",
        "schema": "string",
        "writable": false
      },
      {
        "@type": "Command",
        "commandType": "synchronous",
        "description": {
          "en": "Reboots the device after waiting the number of seconds specified."
        },
        "displayName": {
          "en": "Reboot"
        },
        "name": "reboot",
        "request": {
          "@type": "CommandPayload",
          "description": {
            "en": "Number of seconds to wait before rebooting the device."
          },
          "displayName": {
            "en": "Delay"
          },
          "name": "delay",
          "schema": "integer"
        }
      },
      {
        "@type": "Component",
        "displayName": {
          "en": "thermostat1"
        },
        "name": "thermostat1",
        "schema": "dtmi:com:example:Thermostat;2"
      },
      {
        "@type": "Component",
        "displayName": {
          "en": "thermostat2"
        },
        "name": "thermostat2",
        "schema": "dtmi:com:example:Thermostat;2"
      },
      {
        "@type": "Component",
        "displayName": {
          "en": "DeviceInfo"
        },
        "name": "deviceInformation",
        "schema": "dtmi:azure:DeviceManagement:DeviceInformation;1"
      }
    ],
    "displayName": {
      "en": "Temperature Controller"
    }
  },
  {
    "@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": [
      ...
    ]
  },
  {
    "@context": "dtmi:dtdl:context;2",
    "@id": "dtmi:azure:DeviceManagement:DeviceInformation;1",
    "@type": "Interface",
    "displayName": "Device Information",
    "contents": [
      ...
    ]
  }
]

Rozhraní obsahuje některá povinná pole:

  • @id: jedinečné ID ve formě jednoduchého názvu jednotného prostředku.
  • @type: deklaruje, že tento objekt je rozhraní.
  • @context: určuje verzi DTDL použitou pro rozhraní.
  • contents: Zobrazí seznam vlastností, telemetrie a příkazů, které tvoří vaše zařízení. Možnosti mohou být definovány ve více rozhraních.

K přidání dalších podrobností do modelu funkcí, jako je zobrazovaný název a popis, můžete použít některá volitelná pole.

Každá položka v seznamu rozhraní v oddílu implements má následující:

  • name: název programování rozhraní.
  • schema: rozhraní, které model schopností implementuje.

Rozhraní

DTDL umožňuje popsat možnosti vašeho zařízení. Související funkce jsou seskupené do rozhraní. Rozhraní popisují vlastnosti, telemetrii a příkazy, které implementuje část vašeho zařízení:

  • Properties. Vlastnosti jsou datová pole, která představují stav vašeho zařízení. Vlastnosti slouží k reprezentaci odolného stavu zařízení, jako je stav zapnutí chladicího čerpadla. Vlastnosti můžou také představovat základní vlastnosti zařízení, například verzi firmwaru zařízení. Vlastnosti můžete deklarovat jako jen pro čtení nebo zapisovatelné. Hodnotu vlastnosti jen pro čtení můžou aktualizovat jenom zařízení. Operátor může nastavit hodnotu zapisovatelné vlastnosti pro odeslání do zařízení.
  • Telemetry. Telemetrická pole představují měření ze senzorů. Pokaždé, když vaše zařízení přijme měření senzoru, mělo by odeslat telemetrická událost obsahující data ze snímačů.
  • Commands. Příkazy představují metody, které můžou uživatelé vašeho zařízení spouštět na zařízení. Například příkaz pro resetování nebo příkaz pro zapnutí nebo vypnutí ventilátoru.

Následující příklad ukazuje definici rozhraní termostatu:

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

Tento příklad ukazuje dvě vlastnosti (jeden jen pro čtení a jeden zapisovatelný), typ telemetrie a příkaz. Minimální popis pole obsahuje:

  • @type určit typ schopnosti: Telemetry, Property, nebo Command. V některých případech typ obsahuje sémantický typ, který službě IoT Central umožňuje provádět určité předpoklady o tom, jak hodnotu zpracovat.
  • name pro hodnotu telemetrie.
  • schema zadejte datový typ pro telemetrii nebo vlastnost. Tato hodnota může být primitivním typem, například double, integer, boolean nebo string. Podporují se také komplexní typy objektů a mapy.

Volitelná pole, jako je zobrazovaný název a popis, umožňují přidat do rozhraní a možností další podrobnosti.

Vlastnosti

Ve výchozím nastavení jsou vlastnosti jen pro čtení. Vlastnosti jen pro čtení znamenají, že zařízení hlásí aktualizace hodnot vlastností vaší aplikace IoT Central. Aplikace IoT Central nemůže nastavit hodnotu vlastnosti jen pro čtení.

Vlastnost můžete také označit jako zapisovatelnou v rozhraní. Zařízení může přijímat aktualizaci zapisovatelné vlastnosti z aplikace IoT Central a také hlásit aktualizace hodnot vlastností vaší aplikace.

Zařízení nemusí být připojená k nastavení hodnot vlastností. Aktualizované hodnoty se přenesou, když se zařízení vedle připojí k aplikaci. Toto chování platí pro vlastnosti jen pro čtení i zapisovatelné vlastnosti.

Nepoužívejte vlastnosti k odesílání telemetrických dat ze zařízení. Například vlastnost jen pro čtení, například temperatureSetting=80 by měla znamenat, že teplota zařízení byla nastavena na 80 a zařízení se snaží dostat nebo zůstat v této teplotě.

U zapisovatelných vlastností vrátí aplikace zařízení stavový kód, verzi a popis požadovaného stavu, který označuje, zda byla přijata a použita hodnota vlastnosti.

Telemetrie

IoT Central umožňuje zobrazit telemetrii v zobrazeních a grafech zařízení a používat pravidla k aktivaci akcí při dosažení prahových hodnot. IoT Central používá informace v modelu zařízení, jako jsou datové typy, jednotky a zobrazované názvy, k určení způsobu zobrazení hodnot telemetrie. Hodnoty telemetrie můžete zobrazit také na řídicích panelech aplikací a osobních řídicích panelech.

Pomocí funkce exportu dat IoT Central můžete streamovat telemetrii do jiných cílů, jako je úložiště nebo Event Hubs.

Příkazy

Ve výchozím nastavení musí být příkaz spuštěn do 30 sekund a zařízení musí být připojeno při doručení příkazu. Pokud zařízení reaguje včas nebo zařízení není připojené, příkaz selže.

Příkazy můžou mít parametry požadavku a vrátit odpověď.

Offline příkazy

Příkazy fronty můžete zvolit, pokud je zařízení aktuálně offline, povolením možnosti Queue if offline pro příkaz v šabloně zařízení.

Offline příkazy jsou jednosměrná oznámení zařízení z vašeho řešení. Offline příkazy můžou mít parametry požadavku, ale nevrací odpověď.

Poznámka

Tato možnost je dostupná jenom ve webovém uživatelském rozhraní IoT Central. Toto nastavení není zahrnuté, pokud exportujete model nebo rozhraní ze šablony zařízení.

Vlastnosti cloudu

Vlastnosti cloudu jsou součástí šablony zařízení, ale nejsou součástí modelu zařízení. Vlastnosti cloudu umožňují vývojáři řešení určit všechna metadata zařízení, která se mají uložit v aplikaci IoT Central. Vlastnosti cloudu nemají vliv na kód, který vývojář zařízení zapisuje k implementaci modelu zařízení.

Vývojář řešení může přidat vlastnosti cloudu do zobrazení zařízení a formulářů spolu s vlastnostmi zařízení, aby operátor mohl spravovat zařízení připojená k aplikaci. Vývojář řešení může také jako součást definice pravidla použít vlastnosti cloudu, aby bylo možné upravit prahovou hodnotu operátorem.

Zobrazení

Vývojář řešení vytvoří zobrazení, která operátorům umožní monitorovat a spravovat připojená zařízení. Zobrazení jsou součástí šablony zařízení, takže zobrazení je přidružené ke konkrétnímu typu zařízení. Zobrazení může zahrnovat:

  • Grafy pro vykreslení telemetrie
  • Dlaždice pro zobrazení vlastností zařízení jen pro čtení
  • Dlaždice, které operátorovi umožní upravovat zapisovatelné vlastnosti zařízení.
  • Dlaždice, které operátorovi umožní upravovat vlastnosti cloudu.
  • Dlaždice, které umožňují operátorům volat příkazy, včetně příkazů, které očekávají datovou část.
  • Dlaždice pro zobrazení popisků, obrázků nebo textu markdownu

Telemetrie, vlastnosti a příkazy, které můžete přidat do zobrazení, určují model zařízení, vlastnosti cloudu a přizpůsobení v šabloně zařízení.

Další kroky

Teď, když jste se dozvěděli o šablonách zařízení, je navrhovaným dalším postupem čtení datových částí telemetrie, vlastností a příkazů, abyste se dozvěděli více o datech, která zařízení vyměňuje se službou IoT Central.