Definiera enhetsmallen för kaffebryggaren
En enhetsmall i Azure IoT Central är en skiss som definierar egenskaperna och beteendena för en typ av enhet som ansluter till ditt program. Enhetsmallen definierar till exempel telemetrin som en enhet skickar, så att IoT Central kan skapa visualiseringar som använder rätt enheter och datatyper.
En enhetsmall innehåller följande avsnitt:
- En enhetsmodell. De data som kaffebryggarens simulator utbyter med ditt program anges i en enhetsmodell.
- Rotkomponent. Rotkomponentens gränssnitt beskriver funktioner som är specifika för enhetsmodellen.
- Komponenter. En enhetsmodell kan innehålla komponenter utöver rotkomponenten för att beskriva enhetsfunktioner. I det här scenariot använder du bara rotkomponenten för att definiera den Anslut kaffebryggarmodellen.
- Ärvda gränssnitt. En enhetsmodell innehåller ett eller flera gränssnitt som utökar funktionerna i rotkomponenten. I det här scenariot definierar du bara ett gränssnitt.
- Visningar. Med den här delen av enhetsmallen kan du definiera visualiseringar för att visa data från enheten och formulär för att hantera och kontrollera kaffebryggaren.
När du har skapat en enhetsmall kan du ansluta en simulerad enhet. Den simulerade enheten genererar telemetri så att du kan testa programmets beteende innan du ansluter en riktig enhet.
Här ser du hur telemetri, egenskaper och kommandodefinitioner anges i enhetsmodellen och de molnegenskaper och vyer som behövs för att hantera och kontrollera enheterna i exemplet med IoT-aktiverade kaffebryggare.
Telemetri
Telemetri är de data som strömmar från enheten. Du kan lägga till flera telemetrityper i din enhetsmall för att matcha enhetens funktioner. Kaffebryggaren skickar värden för luftfuktighet och vattentemperatur från sina sensorer. Den skickar också tillståndsinformation om huruvida den för närvarande bryggs och när en kopp identifieras.
Egenskaper
Använd egenskaper för att dela konfigurationsdata mellan en enhet och ditt program.
I det här scenariot använder du en skrivbar egenskap för att ange kaffebryggarens optimala vattentemperatur och skicka den till kaffebryggaren. När den skrivbara egenskapen uppdateras i IoT Central markeras den som väntande i användargränssnittet tills enheten bekräftar att den har reagerat på uppdateringen.
Du kan använda skrivskyddade egenskaper om du vill att en enhet ska skicka värden till programmet. Skrivskyddade egenskaper kan bara ändras av enheten. I det här scenariot definierar du en skrivskyddad enhetsegenskap som heter Device Warranty Expired
i enhetsmallen. Fältet Device Warranty Expired
förblir tomt tills kaffebryggaren är ansluten till IoT Central. När den är ansluten skickar kaffebryggaren garantistatusen till programmet.
Molnegenskaper är enhetsmetadata som är associerade med enheten. Använd molnegenskaper för att registrera information om din enhet i IoT Central-programmet. I det här scenariot använder du molnegenskaper till att registrera kaffebryggarens optimala intervall för vattentemperatur. Molnegenskaper lagras i IoT Central-programmet och synkroniseras inte med enheten.
Kommandon
Använd kommandon för att fjärrhantera enheten från ditt program. Du kan köra styrkommandon direkt på enheten från molnet. I det här scenariot kör du kommandon på kaffebryggaren för att sätta den i underhållsläge eller starta bryggningen.
Vyer
Du kan anpassa användargränssnittet som IoT Central visar för att hantera och övervaka enheter som är kopplade till enhetsmallen. I det här scenariot skapar du en vy för att rita telemetrivärden som skickas från enheten. Du skapar också ett formulär för att hantera enhetsegenskaperna.
Anslut modell för kaffebryggare
En enhetsmodell är den del av enhetsmallen som definierar telemetri, egenskaper och kommandon som en enhet stöder. Du kan lagra en modell för enhetskapacitet i en JSON-fil och importera den till IoT Central. Följande JSON är modellen för enhetskapacitet för den anslutna kaffebryggaren.
{
"@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"
]
}
- Fältet
@id
är DTMI (Digital Twin Model Identifier) för modellen i formatetdtmi:<domain>:<unique-model-identifier>;<model-version-number>
. - Identifierar
@type
den typ av information som beskrivs. Används till exempel"@type": "Interface"
för att ange typen av DTDL-entitet (Digital Twin Definition Language). I det här fallet är entiteten enInterface
. - Fältet
contents
är en matris med attributdefinitioner. Varje attribut måste tillhandahålla en@type
för att identifiera vilken typ av gränssnittsinformation som beskrivs. I det här falletTelemetry
beskriver ,Property
ochCommand
-objekt funktionerna i den anslutna kaffebryggaren. - Fältet
displayName
är ett objekt som ger ett läsbart namn för gränssnittet eller entiteten på olika språk. I det här fallet ärConnected Coffee Maker
gränssnittetdisplayName
på engelska. - Fältet
@context
används för att ange DTDL-kontexten där gränssnittet eller entiteten definieras. I det här fallet refererar den till kontexternaiotcentral
ochdtdl
. - Fältet
name
är en unik identifierare förTelemetry
,Property
ellerCommand
. - Varje telemetrifält representerar mått eller händelser och används ofta för att beskriva avläsningar av enhetssensorer. Till
Water Temperature
exempel har enschema
avdouble
och enunit
avdegreeCelsius
. FältendecimalPlaces
,maxValue
ochminValue
anger mer information om telemetridata. - Varje egenskapsfält representerar tillståndet för en entitet. Till exempel
Device Warranty Expired
är av typen boolesk och kan ha dess tillstånd inställt av den anslutna enheten som sant eller falskt. - Fältet
writable
anger om egenskapen kan anges från IoT Central-programmet. I det här falletOptimal Temperature
kan ställas in från programmets användargränssnitt, menDevice Warranty Expired
det kan det inte. - Om en egenskap finns
Cloud
i listan över typer är det en molnegenskap. I det här falletCoffee Maker Min Temperature
ochCoffee Maker Max Temperature
är molnegenskaper. - Varje kommandofält beskriver en åtgärd som enheten kan utföra. Är till exempel
Start Brewing
ett kommando som molnet kan skicka till enheten för att börja brygga kaffe. - Fältet
commandType
anger om ett kommando är synkront (väntar på ett svar) eller asynkront (väntar inte på ett svar).