Definování šablony zařízení kávovaru
Š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átudtmi:<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ě ,Telemetry
Property
aCommand
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ě jeConnected 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 naiotcentral
kontexty adtdl
kontexty. - Pole
name
je jedinečný identifikátor proTelemetry
,Property
neboCommand
. - 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á aunit
schema
double
z .degreeCelsius
maxValue
PoledecimalPlaces
aminValue
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 Temperature
Coffee 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ěď).