Telemetria, tulajdonságok és parancsok hasznos adatai
Az eszközmodell a következőket határozza meg:
- Az eszköz szolgáltatásnak küldött telemetriai adatai.
- Az eszközök szolgáltatással szinkronizált tulajdonságai.
- Parancsok, amelyeket a szolgáltatás egy eszközön hív meg.
Tipp.
Az Azure IoT Central egy olyan szolgáltatás, amely a Plug and Play konvenciók szerint működik. Az IoT Centralban az eszközmodell egy eszközsablon része. Az IoT Central jelenleg egy IoT Central-bővítménnyel támogatja a DTDL v2-t. Az IoT Central-alkalmazások várhatóan UTF-8 kódolású JSON-adatokat kapnak.
Ez a cikk ismerteti azokat a JSON-hasznos adatokat, amelyeket az eszközök a DTDL-eszközmodellben definiált telemetriai adatokhoz, tulajdonságokhoz és parancsokhoz küldenek és fogadnak.
A cikk nem írja le a telemetria, a tulajdonság és a parancs hasznos adatainak minden lehetséges típusát, de a példák a kulcstípusokat szemléltetik.
Minden példában egy kódrészlet látható az eszközmodellből, amely meghatározza a típust és a példa JSON hasznos adatait, hogy bemutassa, hogyan kell az eszköznek együttműködnie egy Plug and Play-et használó szolgáltatással, például az IoT Centralnal.
A cikkben szereplő JSON-kódrészletek a Digital Twin Definition Language (DTDL) v2-t használják. Az IoT Central néhány DTDL-bővítményt is használ.
A használatban lévő hasznos adatok némelyikét bemutató eszközkódmintát a Linuxon vagy Windowson futó IoT Plug and Play-eszközalkalmazások Csatlakozás, illetve az Ügyfélalkalmazás létrehozása és csatlakoztatása az Azure IoT Central-alkalmazás oktatóanyagához című témakörben talál.
Nyers adatok megtekintése
Ha IoT Centralt használ, megtekintheti azokat a nyers adatokat, amelyeket az eszköz egy alkalmazásnak küld. Ez a nézet hasznos az eszközről küldött hasznos adatokkal kapcsolatos problémák elhárításához. Az eszköz által küldött nyers adatok megtekintéséhez:
Lépjen az eszközre az Eszközök lapon.
Válassza a Nyers adatok lapot:
Ebben a nézetben kiválaszthatja a megjelenítendő oszlopokat, és beállíthatja a megtekinteni kívánt időtartományt. A nem átalakított adatoszlop az eszközről származó adatokat jeleníti meg, amelyek nem felelnek meg az eszközsablonban található tulajdonság- vagy telemetriadefinícióknak.
További hibaelhárítási tippekért lásd : Hibaelhárítás, hogy az eszközök adatai miért nem jelennek meg az Azure IoT Centralban.
Telemetria
A DTDL telemetriai elnevezési szabályairól további információt a DTDL > Telemetria című témakörben talál. A karakterrel _
nem indítható el telemetriai név.
Ne hozzon létre telemetriai típusokat az alábbi névvel. Az IoT Central ezeket a fenntartott neveket belsőleg használja. Ha ezeket a neveket próbálja használni, az IoT Central figyelmen kívül hagyja az adatokat:
EventEnqueuedUtcTime
EventProcessedUtcTime
PartitionId
EventHub
User
$metadata
$version
Telemetria az összetevőkben
Ha a telemetria egy összetevőben van definiálva, adjon hozzá egy egyéni üzenettulajdonságot $.sub
, amely az eszközmodellben meghatározott összetevő nevével van meghívva. További információ: Oktatóanyag: IoT Plug and Play több összetevős eszközalkalmazások Csatlakozás. Ez az oktatóanyag bemutatja, hogyan küldhet telemetriát egy összetevőről különböző programozási nyelvek használatával.
Fontos
Az IoT Edge-modulokban üzemeltetett összetevők telemetriájának helyes megjelenítéséhez használja az IoT Edge 1.2.4-es vagy újabb verzióját. Ha korábbi verziót használ, az IoT Edge-modulok összetevőiből származó telemetriai adatok _unmodeleddata jelennek meg.
Telemetria örökölt felületeken
Ha a telemetria egy örökölt felületen van definiálva, az eszköz úgy küldi el a telemetriát, mintha a gyökérfelületen lenne definiálva. Tekintettel a következő eszközmodellre:
[
{
"@id": "dtmi:contoso:device;1",
"@type": "Interface",
"contents": [
{
"@type": [
"Property",
"Cloud",
"StringValue"
],
"displayName": {
"en": "Device Name"
},
"name": "DeviceName",
"schema": "string"
}
],
"displayName": {
"en": "Contoso Device"
},
"extends": [
"dtmi:contoso:sensor;1"
],
"@context": [
"dtmi:iotcentral:context;2",
"dtmi:dtdl:context;2"
]
},
{
"@context": [
"dtmi:iotcentral:context;2",
"dtmi:dtdl:context;2"
],
"@id": "dtmi:contoso:sensor;1",
"@type": [
"Interface",
"NamedInterface"
],
"contents": [
{
"@type": [
"Telemetry",
"NumberValue"
],
"displayName": {
"en": "Meter Voltage"
},
"name": "MeterVoltage",
"schema": "double"
}
],
"displayName": {
"en": "Contoso Sensor"
},
"name": "ContosoSensor"
}
]
Az eszköz a következő hasznos adatokkal küld mérőfeszültség telemetriát. Az eszköz nem tartalmazza az interfész nevét a hasznos adatban:
{
"MeterVoltage": 5.07
}
Primitív típusok
Ez a szakasz példákat mutat be az eszközök által streamelhető primitív telemetriai típusokra.
Az eszközmodell alábbi kódrészlete egy telemetriai típus definícióját boolean
mutatja be:
{
"@type": "Telemetry",
"displayName": {
"en": "BooleanTelemetry"
},
"name": "BooleanTelemetry",
"schema": "boolean"
}
Az eszközügyfélnek JSON-ként kell elküldenie a telemetriát, amely az alábbi példához hasonlóan néz ki:
{ "BooleanTelemetry": true }
Az eszközmodell alábbi kódrészlete egy telemetriai típus definícióját string
mutatja be:
{
"@type": "Telemetry",
"displayName": {
"en": "StringTelemetry"
},
"name": "StringTelemetry",
"schema": "string"
}
Az eszközügyfélnek JSON-ként kell elküldenie a telemetriát, amely az alábbi példához hasonlóan néz ki:
{ "StringTelemetry": "A string value - could be a URL" }
Az eszközmodell alábbi kódrészlete egy telemetriatípus definícióját integer
mutatja be:
{
"@type": "Telemetry",
"displayName": {
"en": "IntegerTelemetry"
},
"name": "IntegerTelemetry",
"schema": "integer"
}
Az eszközügyfélnek JSON-ként kell elküldenie a telemetriát, amely az alábbi példához hasonlóan néz ki:
{ "IntegerTelemetry": 23 }
Az eszközmodell alábbi kódrészlete egy telemetriai típus definícióját double
mutatja be:
{
"@type": "Telemetry",
"displayName": {
"en": "DoubleTelemetry"
},
"name": "DoubleTelemetry",
"schema": "double"
}
Az eszközügyfélnek JSON-ként kell elküldenie a telemetriát, amely az alábbi példához hasonlóan néz ki:
{ "DoubleTelemetry": 56.78 }
Az eszközmodell alábbi kódrészlete egy telemetriai típus definícióját dateTime
mutatja be:
{
"@type": "Telemetry",
"displayName": {
"en": "DateTimeTelemetry"
},
"name": "DateTimeTelemetry",
"schema": "dateTime"
}
Az eszközügyfélnek JSON-ként kell elküldenie a telemetriát, amely az alábbi példához hasonlóan néz ki – DateTime
a típusoknak ISO 8061 formátumban kell lenniük:
{ "DateTimeTelemetry": "2020-08-30T19:16:13.853Z" }
Az eszközmodell alábbi kódrészlete egy telemetriai típus definícióját duration
mutatja be:
{
"@type": "Telemetry",
"displayName": {
"en": "DurationTelemetry"
},
"name": "DurationTelemetry",
"schema": "duration"
}
Az eszközügyfélnek az alábbi példához hasonló JSON-ként kell elküldenie a telemetriát – az időtartamoknak ISO 8601 formátumban kell lenniük:
{ "DurationTelemetry": "PT10H24M6.169083011336625S" }
Összetett típusok
Ez a szakasz olyan összetett telemetriai típusokat mutat be, amelyeket egy eszköz streamelhet.
Az eszközmodell alábbi kódrészlete egy telemetriatípus definícióját Enum
mutatja be:
{
"@type": "Telemetry",
"displayName": {
"en": "EnumTelemetry"
},
"name": "EnumTelemetry",
"schema": {
"@type": "Enum",
"displayName": {
"en": "Enum"
},
"valueSchema": "integer",
"enumValues": [
{
"displayName": {
"en": "Item1"
},
"enumValue": 0,
"name": "Item1"
},
{
"displayName": {
"en": "Item2"
},
"enumValue": 1,
"name": "Item2"
},
{
"displayName": {
"en": "Item3"
},
"enumValue": 2,
"name": "Item3"
}
]
}
}
Az eszközügyfélnek JSON-ként kell elküldenie a telemetriát, amely az alábbi példához hasonlóan néz ki. A lehetséges értékek a következők 0
, 1
és 2
amelyek az IoT Centralban az Item1
, Item2
és Item3
:
{ "EnumTelemetry": 1 }
Az eszközmodell alábbi kódrészlete egy telemetriai típus definícióját Object
mutatja be. Ez az objektum három típusú mezővel dateTime
rendelkezik, integer
és Enum
:
{
"@type": "Telemetry",
"displayName": {
"en": "ObjectTelemetry"
},
"name": "ObjectTelemetry",
"schema": {
"@type": "Object",
"displayName": {
"en": "Object"
},
"fields": [
{
"displayName": {
"en": "Property1"
},
"name": "Property1",
"schema": "dateTime"
},
{
"displayName": {
"en": "Property2"
},
"name": "Property2",
"schema": "integer"
},
{
"displayName": {
"en": "Property3"
},
"name": "Property3",
"schema": {
"@type": "Enum",
"displayName": {
"en": "Enum"
},
"valueSchema": "integer",
"enumValues": [
{
"displayName": {
"en": "Item1"
},
"enumValue": 0,
"name": "Item1"
},
{
"displayName": {
"en": "Item2"
},
"enumValue": 1,
"name": "Item2"
},
{
"displayName": {
"en": "Item3"
},
"enumValue": 2,
"name": "Item3"
}
]
}
}
]
}
}
Az eszközügyfélnek JSON-ként kell elküldenie a telemetriát, amely az alábbi példához hasonlóan néz ki. DateTime
típusoknak ISO 8061-kompatibilisnek kell lenniük. A lehetséges értékek a Property3
következők1
0
, és amelyek az IoT Centralban a következőként Item1
jelennek meg: ésItem2
Item3
:
{
"ObjectTelemetry": {
"Property1": "2020-09-09T03:36:46.195Z",
"Property2": 37,
"Property3": 2
}
}
Az eszközmodell alábbi kódrészlete egy telemetriai típus definícióját vector
mutatja be:
{
"@type": "Telemetry",
"displayName": {
"en": "VectorTelemetry"
},
"name": "VectorTelemetry",
"schema": "vector"
}
Az eszközügyfélnek JSON-ként kell elküldenie a telemetriát, amely az alábbi példához hasonlóan néz ki:
{
"VectorTelemetry": {
"x": 74.72395045538597,
"y": 74.72395045538597,
"z": 74.72395045538597
}
}
Az eszközmodell alábbi kódrészlete egy telemetriai típus definícióját geopoint
mutatja be:
{
"@type": "Telemetry",
"displayName": {
"en": "GeopointTelemetry"
},
"name": "GeopointTelemetry",
"schema": "geopoint"
}
Feljegyzés
A geopont sématípus az IoT Central DTDL-bővítményének része. Az IoT Central jelenleg támogatja a geopontséma típusát és a hely szemantikai típusát a visszamenőleges kompatibilitás érdekében.
Az eszközügyfélnek JSON-ként kell elküldenie a telemetriát, amely az alábbi példához hasonlóan néz ki. Az IoT Central kitűzőként jeleníti meg az értéket a térképen:
{
"GeopointTelemetry": {
"lat": 47.64263,
"lon": -122.13035,
"alt": 0
}
}
Esemény- és állapottípusok
Ez a szakasz példákat mutat be a telemetriai eseményekre, és azt mutatja be, hogy egy eszköz egy IoT Central-alkalmazásnak küld.
Feljegyzés
Az esemény - és állapotsématípusok a DTDL-hez tartozó IoT Central-bővítmény részét képezik.
Az eszközmodell alábbi kódrészlete egy eseménytípus definícióját integer
mutatja be:
{
"@type": [
"Telemetry",
"Event"
],
"displayName": {
"en": "IntegerEvent"
},
"name": "IntegerEvent",
"schema": "integer"
}
Az eszközügyfélnek JSON-ként kell elküldenie az eseményadatokat, amely az alábbi példához hasonlóan néz ki:
{ "IntegerEvent": 74 }
Az eszközmodell alábbi kódrészlete egy állapottípus definícióját integer
mutatja be:
{
"@type": [
"Telemetry",
"State"
],
"displayName": {
"en": "IntegerState"
},
"name": "IntegerState",
"schema": {
"@type": "Enum",
"valueSchema": "integer",
"enumValues": [
{
"displayName": {
"en": "Level1"
},
"enumValue": 1,
"name": "Level1"
},
{
"displayName": {
"en": "Level2"
},
"enumValue": 2,
"name": "Level2"
},
{
"displayName": {
"en": "Level3"
},
"enumValue": 3,
"name": "Level3"
}
]
}
}
Az eszközügyfélnek JSON-ként kell elküldenie az állapotot, amely az alábbi példához hasonlóan néz ki. A lehetséges egész számállapotértékek a következők1
2
:3
{ "IntegerState": 2 }
Tulajdonságok
A DTDL-tulajdonság elnevezési szabályairól további információt a DTDL > tulajdonságban talál. A karakterrel _
nem indítható el tulajdonságnév.
Tulajdonságok az összetevőkben
Ha a tulajdonság egy összetevőben van definiálva, csomagolja be a tulajdonságot az összetevő nevére. Az alábbi példa az maxTempSinceLastReboot
összetevőt állítja be thermostat2
. A jelölő __t
azt jelzi, hogy ez a szakasz egy összetevőt határoz meg:
{
"thermostat2" : {
"__t" : "c",
"maxTempSinceLastReboot" : 38.7
}
}
Primitív típusok
Ez a szakasz példákat mutat be azokra a primitív tulajdonságtípusokra, amelyeket egy eszköz küld egy szolgáltatásnak.
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját boolean
mutatja be:
{
"@type": "Property",
"displayName": {
"en": "BooleanProperty"
},
"name": "BooleanProperty",
"schema": "boolean",
"writable": false
}
Az eszközügyfélnek olyan JSON-hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg:
{ "BooleanProperty": false }
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját long
mutatja be:
{
"@type": "Property",
"displayName": {
"en": "LongProperty"
},
"name": "LongProperty",
"schema": "long",
"writable": false
}
Az eszközügyfélnek olyan JSON-hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg:
{ "LongProperty": 439 }
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját date
mutatja be:
{
"@type": "Property",
"displayName": {
"en": "DateProperty"
},
"name": "DateProperty",
"schema": "date",
"writable": false
}
Az eszközügyfélnek olyan JSON-hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg. Date
a típusoknak iso 8061-kompatibilisnek kell lenniük:
{ "DateProperty": "2020-05-17" }
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját duration
mutatja be:
{
"@type": "Property",
"displayName": {
"en": "DurationProperty"
},
"name": "DurationProperty",
"schema": "duration",
"writable": false
}
Az eszközügyfélnek olyan JSON hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg – az időtartamoknak ISO 8601-es időtartamnak megfelelőnek kell lenniük:
{ "DurationProperty": "PT10H24M6.169083011336625S" }
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját float
mutatja be:
{
"@type": "Property",
"displayName": {
"en": "FloatProperty"
},
"name": "FloatProperty",
"schema": "float",
"writable": false
}
Az eszközügyfélnek olyan JSON-hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg:
{ "FloatProperty": 1.9 }
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját string
mutatja be:
{
"@type": "Property",
"displayName": {
"en": "StringProperty"
},
"name": "StringProperty",
"schema": "string",
"writable": false
}
Az eszközügyfélnek olyan JSON-hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg:
{ "StringProperty": "A string value - could be a URL" }
Összetett típusok
Ez a szakasz olyan összetett tulajdonságtípusokra mutat be példákat, amelyeket az eszköz egy szolgáltatásnak küld.
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját Enum
mutatja be:
{
"@type": "Property",
"displayName": {
"en": "EnumProperty"
},
"name": "EnumProperty",
"writable": false,
"schema": {
"@type": "Enum",
"displayName": {
"en": "Enum"
},
"valueSchema": "integer",
"enumValues": [
{
"displayName": {
"en": "Item1"
},
"enumValue": 0,
"name": "Item1"
},
{
"displayName": {
"en": "Item2"
},
"enumValue": 1,
"name": "Item2"
},
{
"displayName": {
"en": "Item3"
},
"enumValue": 2,
"name": "Item3"
}
]
}
}
Az eszközügyfélnek olyan JSON-hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg. A lehetséges értékek a következők 0
, 1
és amelyek az IoT Centralban az Item1
, Item2
és Item3
:
{ "EnumProperty": 1 }
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját Object
mutatja be. Ez az objektum két típusú string
mezővel rendelkezik:integer
{
"@type": "Property",
"displayName": {
"en": "ObjectProperty"
},
"name": "ObjectProperty",
"writable": false,
"schema": {
"@type": "Object",
"displayName": {
"en": "Object"
},
"fields": [
{
"displayName": {
"en": "Field1"
},
"name": "Field1",
"schema": "integer"
},
{
"displayName": {
"en": "Field2"
},
"name": "Field2",
"schema": "string"
}
]
}
}
Az eszközügyfélnek olyan JSON-hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg:
{
"ObjectProperty": {
"Field1": 37,
"Field2": "A string value"
}
}
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját vector
mutatja be:
{
"@type": "Property",
"displayName": {
"en": "VectorProperty"
},
"name": "VectorProperty",
"schema": "vector",
"writable": false
}
Az eszközügyfélnek olyan JSON-hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg:
{
"VectorProperty": {
"x": 74.72395045538597,
"y": 74.72395045538597,
"z": 74.72395045538597
}
}
Az eszközmodell alábbi kódrészlete egy tulajdonságtípus definícióját geopoint
mutatja be:
{
"@type": "Property",
"displayName": {
"en": "GeopointProperty"
},
"name": "GeopointProperty",
"schema": "geopoint",
"writable": false
}
Feljegyzés
A geopont sématípus az IoT Central DTDL-bővítményének része. Az IoT Central jelenleg támogatja a geopontséma típusát és a hely szemantikai típusát a visszamenőleges kompatibilitás érdekében.
Az eszközügyfélnek olyan JSON-hasznos adatokat kell küldenie, amelyek az alábbi példához hasonlóan az ikereszköz jelentett tulajdonságaként jelennek meg:
{
"GeopointProperty": {
"lat": 47.64263,
"lon": -122.13035,
"alt": 0
}
}
Írható tulajdonságtípusok
Ez a szakasz példákat mutat be azokra a írható tulajdonságtípusokra, amelyeket az eszköz egy szolgáltatástól kap.
Ha a írható tulajdonság egy összetevőben van definiálva, a kívánt tulajdonságüzenet tartalmazza az összetevő nevét. Az alábbi példa azt az üzenetet mutatja be, amely arra kéri az eszközt, hogy frissítse az targetTemperature
thermostat2
összetevőt. A jelölő __t
azt jelzi, hogy ez a szakasz egy összetevőt határoz meg:
{
"thermostat2": {
"targetTemperature": {
"value": 57
},
"__t": "c"
},
"$version": 3
}
További információ: Csatlakozás IoT Plug and Play több összetevős eszközalkalmazás.
Az eszköznek vagy modulnak meg kell erősítenie, hogy megkapta a tulajdonságot egy jelentett tulajdonság elküldésével. A jelentett tulajdonságnak tartalmaznia kell a következőket:
value
- a tulajdonság tényleges értéke (jellemzően a kapott érték, de az eszköz dönthet úgy, hogy egy másik értéket jelent).ac
- HTTP-állapotkódot használó nyugtázási kód.av
- a kívánt tulajdonságra hivatkozó$version
nyugtázási verzió. Ez az érték a kívánt JSON hasznos adat tulajdonságban található.ad
- opcionális nyugtázási leírás.
További információ ezekről a mezőkről: IoT Plug and Play-konvenciók > Nyugtázási válaszok
Az eszközmodell alábbi kódrészlete egy írható string
tulajdonságtípus definícióját mutatja be:
{
"@type": "Property",
"displayName": {
"en": "StringPropertyWritable"
},
"name": "StringPropertyWritable",
"writable": true,
"schema": "string"
}
Az eszköz a következő hasznos adatokat kapja meg a szolgáltatástól:
{
"StringPropertyWritable": "A string from IoT Central", "$version": 7
}
Az eszköznek a frissítés feldolgozása után a következő JSON hasznos adatokat kell elküldenie a szolgáltatásnak. Ez az üzenet tartalmazza a szolgáltatástól kapott eredeti frissítés verziószámát.
Tipp.
Ha a szolgáltatás IoT Central, akkor a tulajdonság szinkronizáltként jelenik meg a felhasználói felületen, amikor megkapja ezt az üzenetet:
{
"StringPropertyWritable": {
"value": "A string from IoT Central",
"ac": 200,
"ad": "completed",
"av": 7
}
}
Az eszközmodell alábbi kódrészlete egy írható Enum
tulajdonságtípus definícióját mutatja be:
{
"@type": "Property",
"displayName": {
"en": "EnumPropertyWritable"
},
"name": "EnumPropertyWritable",
"writable": true,
"schema": {
"@type": "Enum",
"displayName": {
"en": "Enum"
},
"valueSchema": "integer",
"enumValues": [
{
"displayName": {
"en": "Item1"
},
"enumValue": 0,
"name": "Item1"
},
{
"displayName": {
"en": "Item2"
},
"enumValue": 1,
"name": "Item2"
},
{
"displayName": {
"en": "Item3"
},
"enumValue": 2,
"name": "Item3"
}
]
}
}
Az eszköz a következő hasznos adatokat kapja meg a szolgáltatástól:
{
"EnumPropertyWritable": 1 , "$version": 10
}
Az eszköznek a frissítés feldolgozása után a következő JSON hasznos adatokat kell elküldenie a szolgáltatásnak. Ez az üzenet tartalmazza a szolgáltatástól kapott eredeti frissítés verziószámát.
Tipp.
Ha a szolgáltatás IoT Central, akkor a tulajdonság szinkronizáltként jelenik meg a felhasználói felületen, amikor megkapja ezt az üzenetet:
{
"EnumPropertyWritable": {
"value": 1,
"ac": 200,
"ad": "completed",
"av": 10
}
}
Parancsok
A DTDL-parancsok elnevezési szabályairól további információt a DTDL-parancsban >talál. A karakterrel _
nem indítható el parancsnév.
Ha a parancs egy összetevőben van definiálva, az eszköz által kapott parancs neve tartalmazza az összetevő nevét. Ha például a parancsot meghívják getMaxMinReport
, és az összetevőt meghívják thermostat2
, az eszköz kérést kap egy hívott thermostat2*getMaxMinReport
parancs végrehajtására.
Az eszközmodell következő kódrészlete egy olyan parancs definícióját mutatja be, amely nem tartalmaz paramétereket, és nem számít arra, hogy az eszköz bármit visszaad:
{
"@type": "Command",
"displayName": {
"en": "CommandBasic"
},
"name": "CommandBasic"
}
Az eszköz üres hasznos adatokat kap a kérelemben, és a válaszban egy üres hasznos adatnak kell visszaadnia egy 200
HTTP-válaszkódot a sikeresség jelzéséhez.
Az eszközmodell következő kódrészlete egy egész számparaméterrel rendelkező parancs definícióját mutatja be, amely arra számít, hogy az eszköz egész számot ad vissza:
{
"@type": "Command",
"request": {
"@type": "CommandPayload",
"displayName": {
"en": "RequestParam"
},
"name": "RequestParam",
"schema": "integer"
},
"response": {
"@type": "CommandPayload",
"displayName": {
"en": "ResponseParam"
},
"name": "ResponseParam",
"schema": "integer"
},
"displayName": {
"en": "CommandSimple"
},
"name": "CommandSimple"
}
Az eszköz a kérelem hasznos adataként egész számot kap. Az eszköznek egy egész számértéket kell visszaadnia válasz hasznos adatként egy 200
HTTP-válaszkóddal a sikeresség jelzéséhez.
Az eszközmodell alábbi kódrészlete egy objektumparaméterrel rendelkező parancs definícióját mutatja be, amely arra számít, hogy az eszköz egy objektumot ad vissza. Ebben a példában mindkét objektum egész számmal és sztringmezőkkel rendelkezik:
{
"@type": "Command",
"request": {
"@type": "CommandPayload",
"displayName": {
"en": "RequestParam"
},
"name": "RequestParam",
"schema": {
"@type": "Object",
"displayName": {
"en": "Object"
},
"fields": [
{
"displayName": {
"en": "Field1"
},
"name": "Field1",
"schema": "integer"
},
{
"displayName": {
"en": "Field2"
},
"name": "Field2",
"schema": "string"
}
]
}
},
"response": {
"@type": "CommandPayload",
"displayName": {
"en": "ResponseParam"
},
"name": "ResponseParam",
"schema": {
"@type": "Object",
"displayName": {
"en": "Object"
},
"fields": [
{
"displayName": {
"en": "Field1"
},
"name": "Field1",
"schema": "integer"
},
{
"displayName": {
"en": "Field2"
},
"name": "Field2",
"schema": "string"
}
]
}
},
"displayName": {
"en": "CommandComplex"
},
"name": "CommandComplex"
}
Az alábbi kódrészlet egy, az eszköznek küldött hasznos adatokat tartalmazó példakérést mutat be:
{ "Field1": 56, "Field2": "A string value" }
Az alábbi kódrészlet az eszközről küldött válasz hasznos adatait mutatja be. 200
A sikerességet http-válaszkód használatával jelezheti:
{ "Field1": 87, "Field2": "Another string value" }
Tipp.
Az IoT Central saját konvencióval rendelkezik a hosszú ideig futó parancsok és offline parancsok implementálására.
Következő lépések
Most, hogy megismerte az eszköz hasznos adatait, javasolt következő lépésként olvassa el az eszköz fejlesztői útmutatóját.