Definiowanie szablonu urządzenia do kawy
Szablon urządzenia w usłudze Azure IoT Central to strategia, która definiuje cechy i zachowania typu urządzenia, które łączy się z aplikacją. Na przykład szablon urządzenia definiuje dane telemetryczne wysyłane przez urządzenie, dzięki czemu usługa IoT Central może tworzyć wizualizacje używające prawidłowych jednostek i typów danych.
Szablon urządzenia zawiera następujące sekcje:
- Model urządzenia. Dane wymieniane przez symulator ekspresu do kawy z aplikacją są określone w modelu urządzenia.
- Składnik główny. Interfejs głównego składnika opisuje możliwości specyficzne dla modelu urządzenia.
- Elementy. Model urządzenia może zawierać składniki oprócz składnika głównego w celu opisania możliwości urządzenia. W tym scenariuszu użyjesz tylko składnika głównego do zdefiniowania Połączenie modelu ekspresu do kawy.
- Dziedziczone interfejsy. Model urządzenia zawiera co najmniej jeden interfejs, który rozszerza możliwości składnika głównego. W tym scenariuszu zdefiniujesz tylko jeden interfejs.
- Wyświetlenia. Ta część szablonu urządzenia umożliwia definiowanie wizualizacji w celu wyświetlania danych z urządzenia oraz formularzy do zarządzania ekspresem do kawy i sterowania nim.
Po utworzeniu szablonu urządzenia można połączyć urządzenie symulowane. Symulowane urządzenie generuje dane telemetryczne, aby można było przetestować zachowanie aplikacji przed połączeniem rzeczywistego urządzenia.
W tym miejscu zobaczysz, jak definicje danych telemetrycznych, właściwości i poleceń są określone w modelu urządzenia oraz właściwości i widoki w chmurze potrzebne do zarządzania urządzeniami i kontrolowania ich w przykładzie ekspresów do kawy z włączoną obsługą IoT.
Telemetria
Dane telemetryczne to dane przesyłane strumieniowo z urządzenia. Do szablonu urządzenia możesz dodać wiele typów danych telemetrycznych odpowiadających możliwościom urządzenia. Ekspres do kawy wysyła wartości wilgotności powietrza i temperatury wody odczytywane ze swoich czujników. Wysyła również informacje o stanie, czy jest obecnie warzony i kiedy zostanie wykryty kubek.
Właściwości
Użyj właściwości, aby udostępniać dane konfiguracji między urządzeniem a aplikacją.
W tym scenariuszu do ustawiania optymalnej temperatury wody i wysyłania jej wartości do ekspresu do kawy jest używana właściwość z możliwością zapisu. Po zaktualizowaniu właściwości z możliwością zapisu w usłudze IoT Central jest ona oznaczana jako oczekująca w interfejsie użytkownika, dopóki z urządzenia nie nadejdzie potwierdzenie, że ustawienia zostały wprowadzone.
Właściwości tylko do odczytu umożliwiają urządzeniu wysyłanie wartości do aplikacji. Właściwości tylko do odczytu mogą być zmieniane tylko przez urządzenie. W tym scenariuszu zdefiniujesz właściwość urządzenia tylko do odczytu o nazwie Device Warranty Expired
w szablonie urządzenia. Pole Device Warranty Expired
pozostaje puste, dopóki ekspres do kawy nie zostanie połączony z usługą IoT Central. Po nawiązaniu połączenia ekspres do kawy wyśle stan gwarancji do aplikacji.
Właściwości chmury to metadane urządzenia skojarzone z urządzeniem. Użyj właściwości chmury, aby rejestrować informacje o urządzeniu w aplikacji usługi IoT Central. W tym scenariuszu używasz właściwości chmury do rejestrowania idealnego zakresu temperatur dla ekspresu do kawy. Właściwości chmury są przechowywane w aplikacji usługi IoT Central i nie są synchronizowane z urządzeniem.
Polecenia
Użyj poleceń, aby zdalnie zarządzać urządzeniem z poziomu aplikacji. Polecenia można uruchamiać z chmury bezpośrednio na urządzeniu i sterować nim. W tym scenariuszu uruchamiasz polecenia na ekspresie do kawy, aby ustawić go w tryb konserwacji lub rozpocząć parzenie.
Widoki
Można dostosować interfejs użytkownika, który usługa IoT Central wyświetla na potrzeby monitorowania urządzeń skojarzonych z szablonem urządzenia oraz zarządzania nimi. W tym scenariuszu utworzysz widok służący do wykreślania wartości telemetrycznych wysyłanych z urządzenia i utworzysz formularz służący do zarządzania właściwościami urządzenia.
Połączenie modelu ekspresu do kawy
Model urządzenia to część szablonu urządzenia, która definiuje dane telemetryczne, właściwości i polecenia obsługiwane przez urządzenie. Model możliwości urządzenia można przechowywać w pliku JSON i importować go do usługi IoT Central. Poniższy kod JSON to model możliwości urządzenia dla połączonego ekspresu do kawy.
{
"@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
to identyfikator modelu cyfrowej reprezentacji bliźniaczej (DTMI) dla modelu w formaciedtmi:<domain>:<unique-model-identifier>;<model-version-number>
. - Element
@type
określa rodzaj opisywanych informacji. Na przykład"@type": "Interface"
służy do wskazywania typu jednostki Digital Twin Definition Language (DTDL). W takim przypadku jednostka jest .Interface
- Pole
contents
jest tablicą definicji atrybutów. Każdy atrybut musi podać element ,@type
aby zidentyfikować informacje o interfejsie, które opisuje. W tym przypadku obiektyTelemetry
,Property
iCommand
opisują funkcje połączonego ekspresu do kawy. - Pole
displayName
jest obiektem, który zapewnia czytelną dla człowieka nazwę interfejsu lub jednostki w różnych językach. W tym przypadku interfejsdisplayName
jestConnected Coffee Maker
w języku angielskim. - Pole
@context
służy do określania kontekstu DTDL, w którym zdefiniowano interfejs lub jednostkę. W tym przypadku odwołuje sięiotcentral
do kontekstów i .dtdl
- Pole
name
jest unikatowym identyfikatorem elementuTelemetry
,Property
lubCommand
. - Każde pole telemetrii reprezentuje pomiary lub zdarzenia i są często używane do opisywania odczytów czujników urządzenia. Na przykład
Water Temperature
element maschema
wartość idouble
zunit
degreeCelsius
. PoladecimalPlaces
,maxValue
iminValue
określają więcej szczegółów dotyczących danych telemetrycznych. - Każde pole właściwości reprezentuje stan jednostki. Na przykład
Device Warranty Expired
jest typu wartość logiczna i może mieć jego stan ustawiony przez połączone urządzenie jako true lub false. - Pole
writable
określa, czy właściwość można ustawić z aplikacji usługi IoT Central. W takim przypadkuOptimal Temperature
można ustawić z poziomu interfejsu użytkownika aplikacji, aleDevice Warranty Expired
nie może. - Jeśli właściwość znajduje się
Cloud
na liście typów, jest to właściwość chmury. W tym przypadkuCoffee Maker Min Temperature
iCoffee Maker Max Temperature
są właściwościami chmury. - Każde pole polecenia opisuje akcję, którą urządzenie może wykonać. Na przykład to polecenie,
Start Brewing
które chmura może wysłać do urządzenia, aby rozpocząć zaparzanie kawy. - Pole
commandType
określa, czy polecenie jest synchroniczne (czeka na odpowiedź), czy asynchroniczne (nie czeka na odpowiedź).