Průvodce modelováním technologie Plug and Play IoT

Jádrem technologie Plug and Play IoT je model zařízení, který popisuje schopnosti zařízení pro aplikaci s podporou technologie Plug and Play IoT. Tento model je strukturovaný jako sada rozhraní, která definují:

  • Vlastnosti , které představují stav zařízení nebo jiné entity jen pro čtení nebo zápis. Například sériové číslo zařízení může být vlastností jen pro čtení a cílovou teplotou na termostatu může být zapisovatelná vlastnost.
  • Pole telemetrie , která definují data vygenerovaná zařízením, ať už jsou data pravidelným proudem čtení senzorů, občasnou chybou nebo informační zprávou.
  • Příkazy , které popisují funkci nebo operaci, kterou je možné provést na zařízení. Například příkaz může restartovat bránu nebo pořídit snímek pomocí vzdálené kamery.

Další informace o tom, jak IoT technologie Plug and Play používá modely zařízení, najdete v příručce pro vývojáře zařízení technologie Plug and Play IoT a příručku pro vývojáře služby IoT technologie Plug and Play.

K definování modelu použijete jazyk DTDL (Digital Twins Definition Language). DTDL používá variantu JSON s názvem JSON-LD. Následující fragment kódu ukazuje model pro termostatové zařízení, které:

  • Má jedinečné ID modelu: dtmi:com:example:Thermostat;1.
  • Odesílá telemetrii teploty.
  • Má zapisovatelnou vlastnost pro nastavení cílové teploty.
  • Má vlastnost jen pro čtení, která hlásí maximální teplotu od posledního restartování.
  • Reaguje na příkaz, který požaduje maximální, minimální a průměrné teploty za časové období.
{
  "@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"
            }
          ]
        }
      }
    }
  ]
}

Termostatový model má jedno rozhraní. Další příklady v tomto článku ukazují složitější modely, které používají komponenty a dědičnost.

Tento článek popisuje, jak navrhovat a vytvářet vlastní modely a zabývá se tématy, jako jsou datové typy, struktura modelu a nástroje.

Další informace najdete ve specifikaci jazyka Digital Twins Definition Language .

Poznámka:

IoT Central aktuálně podporuje DTDL v2 s rozšířením IoT Central.

Struktura modelu

Vlastnosti, telemetrie a příkazy jsou seskupené do rozhraní. Tato část popisuje, jak můžete pomocí rozhraní popsat jednoduché a složité modely pomocí komponent a dědičnosti.

ID modelů

Každé rozhraní má jedinečný identifikátor modelu digitálního dvojčete (DTMI). Komplexní modely používají K identifikaci komponent rozhraní DTMI. Aplikace můžou používat DTMI, které zařízení odesílají, a vyhledat definice modelu v úložišti.

DTMI by měly používat následující zásady vytváření názvů:

  • Předpona DTMI je dtmi:.
  • Přípona DTMI je číslo verze modelu, například ;2.
  • Tělo DTMI se mapuje na složku a soubor v úložišti modelu, kde je model uložený. Číslo verze je součástí názvu souboru.

Model identifikovaný DTMI dtmi:com:Example:Thermostat;2 je například uložený v souboru dtmi/com/example/thermostat-2.json .

Následující fragment kódu ukazuje osnovu definice rozhraní s jeho jedinečným DTMI:

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

Žádné součásti

Jednoduchý model, například termostat zobrazený dříve, nepoužívá vložené ani kaskádové komponenty. Telemetrie, vlastnosti a příkazy jsou definovány v contents uzlu rozhraní.

Následující příklad ukazuje část jednoduchého modelu, který nepoužívá komponenty:

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

Nástroje, jako je Azure IoT Explorer a návrhář šablon zařízení IoT Central, označují samostatné rozhraní, jako je termostat jako výchozí komponenta.

Následující snímek obrazovky ukazuje, jak se model zobrazuje v nástroji Azure IoT Explorer:

Snímek obrazovky znázorňující výchozí komponentu v nástroji Azure IoT Explorer

Následující snímek obrazovky ukazuje, jak se model zobrazuje jako výchozí komponenta v návrháři šablon zařízení IoT Central. Výběrem možnosti Zobrazit identitu zobrazíte DTMI modelu:

Snímek obrazovky znázorňující model termostatu v nástroji návrháře šablon zařízení IoT Central

ID modelu je uloženo ve vlastnosti dvojčete zařízení, jak ukazuje následující snímek obrazovky:

Snímek obrazovky s nástrojem Azure IoT Explorer, který zobrazuje ID modelu ve vlastnosti digitálního dvojčete

Model DTDL bez komponent je užitečným zjednodušením pro zařízení nebo modul IoT Edge s jednou sadou telemetrických dat, vlastností a příkazů. Model, který nepoužívá komponenty, usnadňuje migraci stávajícího zařízení nebo modulu jako zařízení nebo modulu IoT technologie Plug and Play – vytvoříte model DTDL, který popisuje skutečné zařízení nebo modul, aniž byste museli definovat žádné komponenty.

Tip

Modul může být modul zařízení nebo modul IoT Edge.

Opakované použití

Definice rozhraní můžete opakovaně používat dvěma způsoby.

  • Použití více komponent v modelu k odkazování na jiné definice rozhraní.
  • Dědičnost slouží k rozšíření existujících definic rozhraní.

Více součástí

Komponenty umožňují sestavit rozhraní modelu jako sestavení jiných rozhraní.

Například termostat rozhraní je definováno jako model. Toto rozhraní můžete začlenit jako jednu nebo více součástí při definování modelu teplotního kontroleru. V následujícím příkladu jsou tyto komponenty volána thermostat1 a thermostat2.

Pro model DTDL s více komponentami existují dvě nebo více částí součástí. Každá část má @type nastavenou a explicitně odkazuje na Component schéma, jak je znázorněno v následujícím fragmentu kódu:

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

Tento model má tři komponenty definované v části obsahu – dvě Thermostat komponenty a komponentu DeviceInformation . Oddíl obsahu obsahuje také definice vlastností, telemetrie a příkazů.

Následující snímky obrazovky ukazují, jak se tento model zobrazuje v IoT Central. Definice vlastností, telemetrie a příkazů v kontroleru teploty se zobrazí v výchozí komponentě nejvyšší úrovně. Definice vlastností, telemetrie a příkazů pro každý termostat se zobrazí v definicích komponent:

Snímek obrazovky znázorňující šablonu zařízení kontroleru teploty ve službě IoT Central

Snímek obrazovky znázorňující komponenty termostatu v šabloně zařízení kontroleru teploty v IoT Central

Informace o psaní kódu zařízení, který komunikuje s komponentami, najdete v příručce pro vývojáře zařízení technologie Plug and Play IoT.

Informace o psaní kódu služby, který komunikuje s komponentami na zařízení, najdete v příručce pro vývojáře služby IoT technologie Plug and Play.

Dědičnost

Dědičnost umožňuje opakovaně používat možnosti v základních rozhraních, aby se rozšířily možnosti rozhraní. Například několik modelů zařízení může sdílet společné funkce, jako je sériové číslo:

Diagram znázorňující příklad dědičnosti v modelu zařízení Rozhraní termostatu a rozhraní kontroleru toku sdílejí možnosti ze základního rozhraní.

Následující fragment kódu ukazuje model DTML, který pomocí klíčového extends slova definuje vztah dědičnosti zobrazený v předchozím diagramu:

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

Následující snímek obrazovky ukazuje tento model v prostředí šablony zařízení IoT Central:

Snímek obrazovky znázorňující dědičnost rozhraní ve službě IoT Central

Když píšete kód zařízení nebo na straně služby, váš kód nemusí dělat nic zvláštního pro zpracování zděděných rozhraní. V příkladu uvedeném v této části kód zařízení hlásí sériové číslo, jako by byl součástí rozhraní termostatu.

Tipy

Při vytváření modelu můžete kombinovat komponenty a dědičnost. Následující diagram znázorňuje thermostat model, který dědí z baseDevice rozhraní. Rozhraní baseDevice má komponentu, která sama dědí z jiného rozhraní:

Diagram znázorňující model, který používá komponenty i dědičnost

Následující fragment kódu ukazuje model DTML, který pomocí extends klíčových component slov definuje vztah dědičnosti a použití komponent zobrazených v předchozím diagramu:

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

Datové typy

K definování telemetrických, vlastností a parametrů příkazů použijte datové typy. Datové typy můžou být primitivní nebo složité. Složité datové typy používají primitiva nebo jiné komplexní typy. Maximální hloubka komplexních typů je pět úrovní.

Primitivní typy

Následující tabulka uvádí sadu primitivních typů, které můžete použít:

Primitivní typ Popis
boolean Logická hodnota
date Úplné datum definované v oddílu 5.6 DOKUMENTU RFC 3339
dateTime Datum a čas definovaný v dokumentu RFC 3339
double Plovoucí desetimístná čárka IEEE 8 bajtů
duration Doba trvání ve formátu ISO 8601
float Plovoucí desetiná čárka IEEE 4 bajtů
integer Celé číslo se 4 bajty
long Celé číslo se signed 8 bajty
string Řetězec UTF8
time Plný úvazek definovaný v části 5.6 RFC 3339

Následující fragment kódu ukazuje ukázkovou definici telemetrie, která používá double typ v schema poli:

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

Komplexní datové typy

Komplexní datové typy jsou jedním z polí, výčtu, mapy, objektu nebo jednoho z geoprostorových typů.

Pole

Pole je indexovatelný datový typ, kde všechny prvky jsou stejného typu. Typ prvku může být primitivní nebo komplexní typ.

Následující fragment kódu ukazuje ukázkovou definici telemetrie, která používá Array typ v schema poli. Prvky pole jsou logické hodnoty:

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

Výčty

Výčet popisuje typ se sadou pojmenovaných popisků, které se mapují na hodnoty. Hodnoty můžou být celá čísla nebo řetězce, ale popisky jsou vždy řetězce.

Následující fragment kódu ukazuje ukázkovou definici telemetrie, která používá Enum typ v schema poli. Hodnoty v výčtu jsou celá čísla:

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

Maps

Mapa je typ s páry klíč-hodnota, kde všechny hodnoty mají stejný typ. Klíč v mapě musí být řetězec. Hodnoty v mapě můžou být libovolného typu, včetně jiného komplexního typu.

Následující fragment kódu ukazuje ukázkovou definici vlastnosti, která používá Map typ v schema poli. Hodnoty v mapě jsou řetězce:

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

Objekty

Typ objektu se skládá z pojmenovaných polí. Typy polí v mapě objektu mohou být primitivní nebo složité typy.

Následující fragment kódu ukazuje ukázkovou definici telemetrie, která používá Object typ v schema poli. Pole v objektu jsou dateTime, durationa string typy:

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

Geoprostorové typy

DTDL poskytuje sadu geoprostorových typů založených na GeoJSON pro modelování geografických datových struktur: point, , multiPointlineString, multiLineString, polygona multiPolygon. Tyto typy jsou předdefinované vnořené struktury polí, objektů a výčtů.

Následující fragment kódu ukazuje ukázkovou definici telemetrie, která používá point typ v schema poli:

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

Vzhledem k tomu, že geoprostorové typy jsou založené na polích, nelze je v definicích vlastností v současné době použít.

Sémantické typy

Datový typ vlastnosti nebo definice telemetrie určuje formát dat, která zařízení vyměňuje se službou. Sémantický typ poskytuje informace o telemetrii a vlastnostech, které může aplikace použít k určení způsobu zpracování nebo zobrazení hodnoty. Každý sémantický typ má jednu nebo více přidružených jednotek. Například celsia a fahrenheita jsou jednotky pro sémantický typ teploty. Řídicí panely a analýzy IoT Central můžou pomocí sémantických typů určit, jak vykreslit telemetrické hodnoty nebo hodnoty vlastností a zobrazované jednotky. Informace o tom, jak pomocí analyzátoru modelů číst sémantické typy, najdete v tématu Vysvětlení analyzátoru modelů digitálních dvojčat.

Následující fragment kódu ukazuje ukázkovou definici telemetrie, která obsahuje sémantické informace o typu. Sémantický typ Temperature se přidá do @type pole a unit hodnota degreeCelsius je jednou z platných jednotek pro sémantický typ:

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

Lokalizace

Aplikace, jako je IoT Central, používají informace v modelu k dynamickému vytvoření uživatelského rozhraní kolem dat, která se vyměňují se zařízením technologie Plug and Play IoT. Například dlaždice na řídicím panelu můžou zobrazovat názvy a popisy telemetrie, vlastností a příkazů.

Volitelné description a displayName pole v řetězcích blokování modelu určené k použití v uživatelském rozhraní. Tato pole můžou obsahovat lokalizované řetězce, které může aplikace použít k vykreslení lokalizovaného uživatelského rozhraní.

Následující fragment kódu ukazuje ukázkovou definici telemetrie teploty, která zahrnuje lokalizované řetězce:

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

Přidání lokalizovaných řetězců je volitelné. Následující příklad obsahuje pouze jeden výchozí jazyk:

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

Životní cyklus a nástroje

Čtyři fáze životního cyklu modelu zařízení jsou autor, publikování, použití a verze:

Autor

Modely zařízení DTML jsou dokumenty JSON, které můžete vytvořit v textovém editoru. V IoT Central ale můžete k vytvoření modelu DTML použít prostředí grafického uživatelského rozhraní šablony zařízení. Ve službě IoT Central můžete:

  • Vytvořte rozhraní, která definují vlastnosti, telemetrii a příkazy.
  • K sestavení více rozhraní použijte komponenty.
  • Definujte vztahy dědičnosti mezi rozhraními.
  • Import a export souborů modelu DTML

Další informace najdete v tématu Definování nového typu zařízení IoT v aplikaci Azure IoT Central.

Existuje rozšíření pro vytváření DTDL pro VS Code.

Pokud chcete nainstalovat rozšíření DTDL pro VS Code, přejděte do editoru DTDL pro Visual Studio Code. DTDL můžete také vyhledat v zobrazení Rozšíření v editoru VS Code.

Když jste rozšíření nainstalovali, použijte ho k vytvoření souborů modelu DTDL ve VS Code:

  • Rozšíření poskytuje ověřování syntaxe v souborech modelu DTDL a zvýrazňuje chyby, jak je znázorněno na následujícím snímku obrazovky:

    Snímek obrazovky znázorňující ověření modelu DTDL ve VS Code

  • Při úpravách modelů DTDL používejte intellisense a automatické dokončování:

    Snímek obrazovky znázorňující intellisense pro modely DTDL ve VS Code

  • Vytvořte nové rozhraní DTDL. Příkaz DTDL: Create Interface vytvoří soubor JSON s novým rozhraním. Rozhraní obsahuje ukázkové definice telemetrie, vlastností a příkazů.

Používání

Aplikace, jako je IoT Central, používají modely zařízení. V IoT Central je model součástí šablony zařízení, která popisuje možnosti zařízení. IoT Central používá šablonu zařízení k dynamickému sestavení uživatelského rozhraní pro zařízení, včetně řídicích panelů a analýz.

Poznámka:

IoT Central definuje některá rozšíření jazyka DTDL. Další informace najdete v tématu Rozšíření IoT Central.

Vlastní řešení může použít analyzátor modelů digitálních dvojčat k pochopení možností zařízení, které model implementuje. Další informace najdete v tématu Použití modelů technologie Plug and Play IoT v řešení IoT.

Verze

Aby se zajistilo, že zařízení a serverová řešení, která používají modely, budou dál fungovat, jsou publikované modely neměnné.

DTMI obsahuje číslo verze, které můžete použít k vytvoření více verzí modelu. Zařízení a serverová řešení můžou používat konkrétní verzi, kterou byly navrženy pro použití.

IoT Central implementuje více pravidel správy verzí pro modely zařízení. Pokud vytvoříte verzi šablony zařízení a jeho modelu v IoT Central, můžete migrovat zařízení z předchozích verzí na novější verze. Migrovaná zařízení ale nemůžou bez upgradu firmwaru používat nové funkce. Další informace najdete v tématu Úprava šablony zařízení.

Publikovat

Od února 2024 byl program Certifikované zařízení Azure vyřazen. Microsoft proto už nepřijímá odesílání modelů DTDL doúložiště modelů plug-and play Azure IoT.

Pokud chcete nastavit vlastní úložiště modelů, můžete použít úložiště nástrojů pro modely plug-and play Azure IoT. Toto úložiště obsahuje kód pro nástroj rozhraní příkazového dmr-client řádku, který dokáže ověřit, importovat a rozbalit modely DTDL. Tento nástroj také umožňuje indexovat úložiště modelů, která dodržují konvence úložiště modelů zařízení.

Limity a omezení

Následující seznam shrnuje některá klíčová omezení a omezení pro modely:

  • Maximální hloubka polí, map a objektů je v současné době pět úrovní.
  • Pole nemůžete použít v definicích vlastností.
  • Rozhraní můžete rozšířit na hloubku 10 úrovní.
  • Rozhraní může rozšířit maximálně dvě další rozhraní.
  • Komponenta nemůže obsahovat jinou komponentu.

Další kroky

Teď, když jste se seznámili s modelováním zařízení, najdete tady několik dalších prostředků: