Definování šablony zařízení kávovaru

Dokončeno

Š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 Služba IoT Central vytvořila vizualizace, které používají správné jednotky a datové typy.

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

  • Model zařízení. Data, která simulátor kávovaru vyměňuje s vaší aplikací, se zadává v modelu zařízení.
    • Kořenová komponenta. Rozhraní kořenové komponenty popisuje funkce specifické pro model zařízení.
    • Součásti. Model zařízení může obsahovat kromě kořenové komponenty i komponenty, které popisují možnosti zařízení. V tomto scénáři použijete kořenovou komponentu jenom k definování modelu Připojení kávovaru.
    • Zděděná rozhraní. Model zařízení obsahuje jedno nebo více rozhraní, která rozšiřují možnosti kořenové komponenty. V tomto scénáři definujete pouze jedno rozhraní.
  • Zobrazení. Tato část šablony zařízení umožňuje definovat vizualizace pro zobrazení dat ze zařízení a formuláře pro správu a řízení kávovaru.

Po vytvoření šablony zařízení můžete připojit simulované zařízení. Simulované zařízení generuje telemetrii, abyste mohli otestovat chování aplikace před připojením skutečného zařízení.

Tady se dozvíte, jak jsou definice telemetrie, vlastností a příkazů zadané v modelu zařízení a vlastnosti a zobrazení cloudu potřebné ke správě a řízení zařízení v příkladu kávovarů s podporou IoT.

Telemetrie

Telemetrie je data, která streamují z vašeho zařízení. Do šablony zařízení můžete přidat několik typů telemetrie, které budou odpovídat funkcím zařízení. Kávovar odesílá hodnoty vlhkosti vzduchu a teploty vody ze svých snímačů. Odesílá také informace o stavu o tom, jestli se aktuálně vaří a kdy je zjištěn šálek.

Vlastnosti

Pomocí vlastností můžete sdílet konfigurační data mezi zařízením a vaší aplikací.

V tomto scénáři použijete zapisovatelnou vlastnost pro nastavení optimální teploty vody a odešlete ji do kávovaru. Když se zapisovatelná vlastnost v IoT Central aktualizuje, bude v uživatelském rozhraní označená jako čekající, dokud zařízení nepotvrdí, že na aktualizaci zareagovalo.

Vlastnosti pouze pro čtení můžete použít k tomu, abyste zařízení umožnili odeslat hodnoty do aplikace. Vlastnosti pouze pro čtení může měnit jenom zařízení. V tomto scénáři definujete vlastnost zařízení jen pro čtení, která se volá Device Warranty Expired v šabloně zařízení. Pole Device Warranty Expired zůstane prázdné, dokud není kávovar připojený ke službě IoT Central. Jakmile se připojí, kávovar odešle stav záruky do aplikace.

Vlastnosti cloudu jsou metadata zařízení přidružená k zařízení. Pomocí vlastností cloudu můžete zaznamenávat informace o vašem zařízení v aplikaci IoT Central. V tomto scénáři použijete vlastnosti cloudu k zaznamenání ideálního rozsahu teplot vody v kávovaru. Vlastnosti cloudu se ukládají v aplikaci IoT Central a nesynchronizují se se zařízením.

Příkazy

Pomocí příkazů můžete vzdáleně spravovat zařízení z vaší aplikace. Příkazy můžete spouštět z cloudu přímo na zařízení a ovládat ho. V tomto scénáři spustíte na kávovaru příkazy ke spuštění režimu údržby nebo vaření kávy.

Zobrazení

Můžete přizpůsobit uživatelské rozhraní, které IoT Central zobrazuje pro správu a monitorování zařízení přidružených k šabloně zařízení. V tomto scénáři vytvoříte zobrazení pro vykreslení hodnot telemetrie odeslaných ze zařízení a vytvoříte formulář pro správu vlastností zařízení.

model Připojení ed Coffee Maker

Model zařízení je součástí šablony zařízení, která definuje telemetrii, vlastnosti a příkazy, které zařízení podporuje. Model funkcí zařízení můžete uložit do souboru JSON a importovat ho do IoT Central. Následující JSON je model funkcí zařízení připojeného kávovaru.

{
    "@id": "dtmi:com:example:ConnectedCoffeeMaker;1",
    "@type": "Interface",
    "contents": [
        {
            "@type": ["Telemetry", "NumberValue", "Temperature"],
            "displayName": {
                "en": "Water Temperature"
            },
            "name": "WaterTemperature",
            "schema": "double",
            "unit": "degreeCelsius",
            "decimalPlaces": 1,
            "maxValue": 100,
            "minValue": 86
        },
        {
            "@type": ["Telemetry", "NumberValue", "Humidity"],
            "displayName": {
                "en": "Air Humidity"
            },
            "name": "AirHumidity",
            "schema": "integer",
            "unit": "percent",
            "maxValue": 100,
            "minValue": 20
        },
        {
            "@type": ["Telemetry", "State"],
            "displayName": {
                "en": "Brewing"
            },
            "name": "Brewing",
            "schema": {
                "@type": "Enum",
                "enumValues": [
                    {
                        "displayName": {
                            "en": "Brewing"
                        },
                        "enumValue": "brewing",
                        "name": "Brewing"
                    },
                    {
                        "displayName": {
                            "en": "Not Brewing"
                        },
                        "enumValue": "notbrewing",
                        "name": "NotBrewing"
                    }
                ],
                "valueSchema": "string"
            }
        },
        {
            "@type": ["Telemetry", "State"],
            "displayName": {
                "en": "Cup Detected"
            },
            "name": "CupDetected",
            "schema": {
                "@type": "Enum",
                "enumValues": [
                    {
                        "displayName": {
                            "en": "Detected"
                        },
                        "enumValue": "detected",
                        "name": "Detected"
                    },
                    {
                        "displayName": {
                            "en": "Not Detected"
                        },
                        "enumValue": "notdetected",
                        "name": "NotDetected"
                    }
                ],
                "valueSchema": "string"
            }
        },
        {
            "@type": ["Property", "NumberValue", "Initialized", "Temperature"],
            "displayName": {
                "en": "Optimal Temperature"
            },
            "name": "OptimalTemperature",
            "schema": "double",
            "unit": "degreeCelsius",
            "writable": true,
            "decimalPlaces": 1,
            "initialValue": 98,
            "maxValue": 100,
            "minValue": 86
        },
        {
            "@type": ["Property", "BooleanValue"],
            "displayName": {
                "en": "Device Warranty Expired"
            },
            "name": "DeviceWarrantyExpired",
            "schema": "boolean",
            "writable": false
        },
        {
            "@type": ["Property", "Cloud", "NumberValue", "Temperature"],
            "displayName": {
                "en": "Coffee Maker Min Temperature"
            },
            "name": "CoffeeMakerMinTemperature",
            "schema": "double",
            "unit": "degreeCelsius",
            "decimalPlaces": 1,
            "maxValue": 92,
            "minValue": 88
        },
        {
            "@type": ["Property", "Cloud", "NumberValue", "Temperature"],
            "displayName": {
                "en": "Coffee Maker Max Temperature"
            },
            "name": "CoffeeMakerMaxTemperature",
            "schema": "double",
            "unit": "degreeCelsius",
            "decimalPlaces": 1,
            "maxValue": 99,
            "minValue": 96
        },
        {
            "@type": "Command",
            "commandType": "synchronous",
            "displayName": {
                "en": "Set Maintenance Mode"
            },
            "name": "SetMaintenanceMode"
        },
        {
            "@type": "Command",
            "commandType": "synchronous",
            "displayName": {
                "en": "Start Brewing"
            },
            "name": "StartBrewing"
        }
    ],
    "displayName": {
        "en": "Connected Coffee Maker"
    },
    "@context": [
        "dtmi:iotcentral:context;2",
        "dtmi:dtdl:context;2"
    ]
}
  • Pole @id je identifikátor modelu digitálního dvojčete (DTMI) pro model ve formátu dtmi:<domain>:<unique-model-identifier>;<model-version-number>.
  • Určuje @type druh popsaných informací. Slouží například "@type": "Interface" k označení typu entity DTDL (Digital Twin Definition Language). V tomto případě je entita .Interface
  • Pole contents je pole definic atributů. Každý atribut musí poskytnout @type identifikaci typu informací o rozhraní, které popisuje. V tomto případě , TelemetryPropertya Command objekty popisují funkce připojeného kávovaru.
  • Pole displayName je objekt, který poskytuje pro rozhraní nebo entitu v různých jazycích čitelný název. V tomto případě je Connected Coffee Maker rozhraní displayName v angličtině.
  • Pole @context slouží k určení kontextu DTDL, ve kterém je definováno rozhraní nebo entita. V tomto případě odkazuje na iotcentral kontexty a dtdl kontexty.
  • Pole name je jedinečný identifikátor pro Telemetry, Propertynebo Command.
  • Každé pole telemetrie představuje měření nebo události a často se používají k popisu čtení snímačů zařízení. Například Water Temperature má a unitschemadouble z .degreeCelsius maxValuePole decimalPlacesa minValue pole určují další podrobnosti o telemetrických datech.
  • Každé pole vlastnosti představuje stav entity. Je například Device Warranty Expired typu logická hodnota a může mít stav nastavený připojeným zařízením jako true nebo false.
  • Pole writable určuje, zda lze vlastnost nastavit z aplikace IoT Central. V tomto případě Optimal Temperature je možné nastavit z uživatelského rozhraní aplikace, i když Device Warranty Expired to nejde.
  • Pokud vlastnost obsahuje Cloud seznam typů, jedná se o cloudovou vlastnost. V tomto případě Coffee Maker Min TemperatureCoffee Maker Max Temperature jsou vlastnosti cloudu.
  • Každé pole příkazu popisuje akci, kterou může zařízení provést. Jedná se například o příkaz, Start Brewing který může cloud odeslat do zařízení, aby začal vařit kávu.
  • Pole commandType určuje, jestli je příkaz synchronní (čeká na odpověď) nebo asynchronní (nečeká na odpověď).

Prověřte si své znalosti

1.

Kolik možností telemetrie se definuje v modelu Připojení kávovaru?

2.

True nebo false: Optimální teplota je zapisovatelná vlastnost.

3.

Ano nebo ne: Připojený kávovar může začít vařit vzdáleně pomocí příkazu StartBrewing.