Telemetri, egenskaper och kommandonyttolaster
En enhetsmodell definierar:
- Telemetri som en enhet skickar till en tjänst.
- Egenskaper som en enhet synkroniserar med en tjänst.
- Kommandon som tjänsten anropar på en enhet.
Dricks
Azure IoT Central är en tjänst som följer Plug and Play-konventionerna. I IoT Central ingår enhetsmodellen i en enhetsmall. IoT Central stöder för närvarande DTDL v2 med ett IoT Central-tillägg. Ett IoT Central-program förväntar sig att ta emot UTF-8-kodade JSON-data.
Den här artikeln beskriver JSON-nyttolaster som enheter skickar och tar emot för telemetri, egenskaper och kommandon som definierats i en DTDL-enhetsmodell.
Artikeln beskriver inte alla möjliga typer av telemetri, egenskap och kommandonyttolast, men exemplen illustrerar nyckeltyper.
Varje exempel visar ett kodfragment från enhetsmodellen som definierar typen och JSON-exempelnyttolaster för att illustrera hur enheten ska interagera med en Plug and Play-medveten tjänst, till exempel IoT Central.
I JSON-exempelfragmenten i den här artikeln används DTDL (Digital Twin Definition Language) v2. Det finns också vissa DTDL-tillägg som IoT Central använder.
Exempel på enhetskod som visar några av dessa nyttolaster som används finns i Anslut ett exempelprogram för IoT Plug and Play-enheter som körs på Linux eller Windows till IoT Hub eller självstudien Skapa och ansluta ett klientprogram till ditt Azure IoT Central-program.
Visa rådata
Om du använder IoT Central kan du visa rådata som en enhet skickar till ett program. Den här vyn är användbar för felsökning av problem med nyttolasten som skickas från en enhet. Så här visar du rådata som en enhet skickar:
Gå till enheten från sidan Enheter .
Välj fliken Rådata :
I den här vyn kan du välja vilka kolumner som ska visas och ange ett tidsintervall som ska visas. Kolumnen Odefinierade data visar data från enheten som inte matchar några egenskaps- eller telemetridefinitioner i enhetsmallen.
Mer felsökningstips finns i Felsöka varför data från dina enheter inte visas i Azure IoT Central.
Telemetri
Mer information om namngivningsregler för DTDL-telemetri finns i DTDL-telemetri>. Du kan inte starta ett telemetrinamn med _
tecknet .
Skapa inte telemetrityper med följande namn. IoT Central använder dessa reserverade namn internt. Om du försöker använda dessa namn ignorerar IoT Central dina data:
EventEnqueuedUtcTime
EventProcessedUtcTime
PartitionId
EventHub
User
$metadata
$version
Telemetri i komponenter
Om telemetrin definieras i en komponent lägger du till en anpassad meddelandeegenskap med $.sub
namnet på komponenten enligt definitionen i enhetsmodellen. Mer information finns i Självstudie: Anslut ett IoT Plug and Play-program för flera komponenter. Den här självstudien visar hur du använder olika programmeringsspråk för att skicka telemetri från en komponent.
Viktigt!
Om du vill visa telemetri från komponenter som finns i IoT Edge-moduler korrekt använder du IoT Edge version 1.2.4 eller senare. Om du använder en tidigare version visas telemetri från dina komponenter i IoT Edge-moduler som _unmodeleddata.
Telemetri i ärvda gränssnitt
Om telemetrin definieras i ett ärvt gränssnitt skickar enheten telemetrin som om den definieras i rotgränssnittet. Med följande enhetsmodell:
[
{
"@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"
}
]
Enheten skickar telemetri för mätarspänning med hjälp av följande nyttolast. Enheten innehåller inte gränssnittsnamnet i nyttolasten:
{
"MeterVoltage": 5.07
}
Primitiva typer
Det här avsnittet visar exempel på primitiva telemetrityper som en enhet kan strömma.
Följande kodfragment från en enhetsmodell visar definitionen av en boolean
telemetrityp:
{
"@type": "Telemetry",
"displayName": {
"en": "BooleanTelemetry"
},
"name": "BooleanTelemetry",
"schema": "boolean"
}
En enhetsklient bör skicka telemetrin som JSON som ser ut som i följande exempel:
{ "BooleanTelemetry": true }
Följande kodfragment från en enhetsmodell visar definitionen av en string
telemetrityp:
{
"@type": "Telemetry",
"displayName": {
"en": "StringTelemetry"
},
"name": "StringTelemetry",
"schema": "string"
}
En enhetsklient bör skicka telemetrin som JSON som ser ut som i följande exempel:
{ "StringTelemetry": "A string value - could be a URL" }
Följande kodfragment från en enhetsmodell visar definitionen av en integer
telemetrityp:
{
"@type": "Telemetry",
"displayName": {
"en": "IntegerTelemetry"
},
"name": "IntegerTelemetry",
"schema": "integer"
}
En enhetsklient bör skicka telemetrin som JSON som ser ut som i följande exempel:
{ "IntegerTelemetry": 23 }
Följande kodfragment från en enhetsmodell visar definitionen av en double
telemetrityp:
{
"@type": "Telemetry",
"displayName": {
"en": "DoubleTelemetry"
},
"name": "DoubleTelemetry",
"schema": "double"
}
En enhetsklient bör skicka telemetrin som JSON som ser ut som i följande exempel:
{ "DoubleTelemetry": 56.78 }
Följande kodfragment från en enhetsmodell visar definitionen av en dateTime
telemetrityp:
{
"@type": "Telemetry",
"displayName": {
"en": "DateTimeTelemetry"
},
"name": "DateTimeTelemetry",
"schema": "dateTime"
}
En enhetsklient ska skicka telemetrin som JSON som ser ut som i följande exempel – DateTime
typer måste vara i ISO 8061-format:
{ "DateTimeTelemetry": "2020-08-30T19:16:13.853Z" }
Följande kodfragment från en enhetsmodell visar definitionen av en duration
telemetrityp:
{
"@type": "Telemetry",
"displayName": {
"en": "DurationTelemetry"
},
"name": "DurationTelemetry",
"schema": "duration"
}
En enhetsklient ska skicka telemetrin som JSON som ser ut som i följande exempel – varaktigheterna måste vara i ISO 8601-format:
{ "DurationTelemetry": "PT10H24M6.169083011336625S" }
Komplexa typer
Det här avsnittet visar exempel på komplexa telemetrityper som en enhet kan strömma.
Följande kodfragment från en enhetsmodell visar definitionen av en Enum
telemetrityp:
{
"@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"
}
]
}
}
En enhetsklient bör skicka telemetrin som JSON som ser ut som i följande exempel. Möjliga värden är 0
, 1
och 2
som visas i IoT Central som Item1
, Item2
och Item3
:
{ "EnumTelemetry": 1 }
Följande kodfragment från en enhetsmodell visar definitionen av en Object
telemetrityp. Det här objektet har tre fält med typerna dateTime
, integer
och 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"
}
]
}
}
]
}
}
En enhetsklient bör skicka telemetrin som JSON som ser ut som i följande exempel. DateTime
måste vara ISO 8061-kompatibla. Möjliga värden för Property3
är 0
, 1
och som visas i IoT Central som Item1
, Item2
och Item3
:
{
"ObjectTelemetry": {
"Property1": "2020-09-09T03:36:46.195Z",
"Property2": 37,
"Property3": 2
}
}
Följande kodfragment från en enhetsmodell visar definitionen av en vector
telemetrityp:
{
"@type": "Telemetry",
"displayName": {
"en": "VectorTelemetry"
},
"name": "VectorTelemetry",
"schema": "vector"
}
En enhetsklient bör skicka telemetrin som JSON som ser ut som i följande exempel:
{
"VectorTelemetry": {
"x": 74.72395045538597,
"y": 74.72395045538597,
"z": 74.72395045538597
}
}
Följande kodfragment från en enhetsmodell visar definitionen av en geopoint
telemetrityp:
{
"@type": "Telemetry",
"displayName": {
"en": "GeopointTelemetry"
},
"name": "GeopointTelemetry",
"schema": "geopoint"
}
Kommentar
Schematypen geopoint är en del av IoT Central-tillägget till DTDL. IoT Central stöder för närvarande geopoint-schematypen och platssemantisk typ för bakåtkompatibilitet.
En enhetsklient bör skicka telemetrin som JSON som ser ut som i följande exempel. IoT Central visar värdet som en pin-kod på en karta:
{
"GeopointTelemetry": {
"lat": 47.64263,
"lon": -122.13035,
"alt": 0
}
}
Händelse- och tillståndstyper
Det här avsnittet visar exempel på telemetrihändelser och tillstånd som en enhet skickar till ett IoT Central-program.
Kommentar
Schematyperna händelse och tillstånd ingår i IoT Central-tillägget till DTDL.
Följande kodfragment från en enhetsmodell visar definitionen av en integer
händelsetyp:
{
"@type": [
"Telemetry",
"Event"
],
"displayName": {
"en": "IntegerEvent"
},
"name": "IntegerEvent",
"schema": "integer"
}
En enhetsklient ska skicka händelsedata som JSON som ser ut som följande exempel:
{ "IntegerEvent": 74 }
Följande kodfragment från en enhetsmodell visar definitionen av en integer
tillståndstyp:
{
"@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"
}
]
}
}
En enhetsklient ska skicka tillståndet som JSON som ser ut som i följande exempel. Möjliga heltalstillståndsvärden är 1
, 2
eller 3
:
{ "IntegerState": 2 }
Egenskaper
Mer information om namngivningsregler för DTDL-egenskaper finns i DTDL-egenskapen>. Du kan inte starta ett egenskapsnamn med hjälp av _
tecknet.
Egenskaper i komponenter
Om egenskapen definieras i en komponent omsluter du egenskapen i komponentnamnet. I följande exempel anges maxTempSinceLastReboot
i komponenten thermostat2
. Markören __t
anger att det här avsnittet definierar en komponent:
{
"thermostat2" : {
"__t" : "c",
"maxTempSinceLastReboot" : 38.7
}
}
Mer information finns i Självstudie: Skapa och ansluta ett klientprogram till ditt Azure IoT Central-program.
Primitiva typer
Det här avsnittet visar exempel på primitiva egenskapstyper som en enhet skickar till en tjänst.
Följande kodfragment från en enhetsmodell visar definitionen av en boolean
egenskapstyp:
{
"@type": "Property",
"displayName": {
"en": "BooleanProperty"
},
"name": "BooleanProperty",
"schema": "boolean",
"writable": false
}
En enhetsklient bör skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen:
{ "BooleanProperty": false }
Följande kodfragment från en enhetsmodell visar definitionen av en long
egenskapstyp:
{
"@type": "Property",
"displayName": {
"en": "LongProperty"
},
"name": "LongProperty",
"schema": "long",
"writable": false
}
En enhetsklient bör skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen:
{ "LongProperty": 439 }
Följande kodfragment från en enhetsmodell visar definitionen av en date
egenskapstyp:
{
"@type": "Property",
"displayName": {
"en": "DateProperty"
},
"name": "DateProperty",
"schema": "date",
"writable": false
}
En enhetsklient bör skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen. Date
måste vara ISO 8061-kompatibla:
{ "DateProperty": "2020-05-17" }
Följande kodfragment från en enhetsmodell visar definitionen av en duration
egenskapstyp:
{
"@type": "Property",
"displayName": {
"en": "DurationProperty"
},
"name": "DurationProperty",
"schema": "duration",
"writable": false
}
En enhetsklient ska skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen – varaktigheten måste vara ISO 8601 Varaktighetskompatibel:
{ "DurationProperty": "PT10H24M6.169083011336625S" }
Följande kodfragment från en enhetsmodell visar definitionen av en float
egenskapstyp:
{
"@type": "Property",
"displayName": {
"en": "FloatProperty"
},
"name": "FloatProperty",
"schema": "float",
"writable": false
}
En enhetsklient bör skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen:
{ "FloatProperty": 1.9 }
Följande kodfragment från en enhetsmodell visar definitionen av en string
egenskapstyp:
{
"@type": "Property",
"displayName": {
"en": "StringProperty"
},
"name": "StringProperty",
"schema": "string",
"writable": false
}
En enhetsklient bör skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen:
{ "StringProperty": "A string value - could be a URL" }
Komplexa typer
Det här avsnittet visar exempel på komplexa egenskapstyper som en enhet skickar till en tjänst.
Följande kodfragment från en enhetsmodell visar definitionen av en Enum
egenskapstyp:
{
"@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"
}
]
}
}
En enhetsklient bör skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen. Möjliga värden är 0
, 1
och som visas i IoT Central som Item1
, Item2
och Item3
:
{ "EnumProperty": 1 }
Följande kodfragment från en enhetsmodell visar definitionen av en Object
egenskapstyp. Det här objektet har två fält med typer string
och 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"
}
]
}
}
En enhetsklient bör skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen:
{
"ObjectProperty": {
"Field1": 37,
"Field2": "A string value"
}
}
Följande kodfragment från en enhetsmodell visar definitionen av en vector
egenskapstyp:
{
"@type": "Property",
"displayName": {
"en": "VectorProperty"
},
"name": "VectorProperty",
"schema": "vector",
"writable": false
}
En enhetsklient bör skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen:
{
"VectorProperty": {
"x": 74.72395045538597,
"y": 74.72395045538597,
"z": 74.72395045538597
}
}
Följande kodfragment från en enhetsmodell visar definitionen av en geopoint
egenskapstyp:
{
"@type": "Property",
"displayName": {
"en": "GeopointProperty"
},
"name": "GeopointProperty",
"schema": "geopoint",
"writable": false
}
Kommentar
Schematypen geopoint är en del av IoT Central-tillägget till DTDL. IoT Central stöder för närvarande geopoint-schematypen och platssemantisk typ för bakåtkompatibilitet.
En enhetsklient bör skicka en JSON-nyttolast som ser ut som följande exempel som en rapporterad egenskap i enhetstvillingen:
{
"GeopointProperty": {
"lat": 47.64263,
"lon": -122.13035,
"alt": 0
}
}
Skrivbara egenskapstyper
Det här avsnittet visar exempel på skrivbara egenskapstyper som en enhet tar emot från en tjänst.
Om den skrivbara egenskapen definieras i en komponent innehåller det önskade egenskapsmeddelandet komponentnamnet. I följande exempel visas meddelandet som begär att enheten ska uppdatera targetTemperature
i komponenten thermostat2
. Markören __t
anger att det här avsnittet definierar en komponent:
{
"thermostat2": {
"targetTemperature": {
"value": 57
},
"__t": "c"
},
"$version": 3
}
Mer information finns i Anslut ett IoT Plug and Play-program för flera komponenter.
Enheten eller modulen bör bekräfta att den tog emot egenskapen genom att skicka en rapporterad egenskap. Den rapporterade egenskapen bör innehålla:
value
– det faktiska värdet för egenskapen (vanligtvis det mottagna värdet, men enheten kan besluta att rapportera ett annat värde).ac
– en bekräftelsekod som använder en HTTP-statuskod.av
– en bekräftelseversion som refererar till den$version
önskade egenskapen. Du hittar det här värdet i den önskade egenskapenS JSON-nyttolast.ad
– en valfri bekräftelsebeskrivning.
Mer information om dessa fält finns i IoT Plug and Play-konventioner > Bekräftelsesvar
Följande kodfragment från en enhetsmodell visar definitionen av en skrivbar string
egenskapstyp:
{
"@type": "Property",
"displayName": {
"en": "StringPropertyWritable"
},
"name": "StringPropertyWritable",
"writable": true,
"schema": "string"
}
Enheten tar emot följande nyttolast från tjänsten:
{
"StringPropertyWritable": "A string from IoT Central", "$version": 7
}
Enheten bör skicka följande JSON-nyttolast till tjänsten när den har bearbetat uppdateringen. Det här meddelandet innehåller versionsnumret för den ursprungliga uppdateringen som togs emot från tjänsten.
Dricks
Om tjänsten är IoT Central markerar den egenskapen som synkroniserad i användargränssnittet när den tar emot det här meddelandet:
{
"StringPropertyWritable": {
"value": "A string from IoT Central",
"ac": 200,
"ad": "completed",
"av": 7
}
}
Följande kodfragment från en enhetsmodell visar definitionen av en skrivbar Enum
egenskapstyp:
{
"@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"
}
]
}
}
Enheten tar emot följande nyttolast från tjänsten:
{
"EnumPropertyWritable": 1 , "$version": 10
}
Enheten bör skicka följande JSON-nyttolast till tjänsten när den har bearbetat uppdateringen. Det här meddelandet innehåller versionsnumret för den ursprungliga uppdateringen som togs emot från tjänsten.
Dricks
Om tjänsten är IoT Central markerar den egenskapen som synkroniserad i användargränssnittet när den tar emot det här meddelandet:
{
"EnumPropertyWritable": {
"value": 1,
"ac": 200,
"ad": "completed",
"av": 10
}
}
Kommandon
Mer information om namngivningsregler för DTDL-kommandon finns i DTDL-kommandot>. Du kan inte starta ett kommandonamn med hjälp av _
tecknet.
Om kommandot definieras i en komponent innehåller namnet på kommandot som enheten tar emot komponentnamnet. Om kommandot till exempel anropas getMaxMinReport
och komponenten heter thermostat2
tar enheten emot en begäran om att köra ett kommando med namnet thermostat2*getMaxMinReport
.
Följande kodfragment från en enhetsmodell visar definitionen av ett kommando som inte har några parametrar och som inte förväntar sig att enheten ska returnera något:
{
"@type": "Command",
"displayName": {
"en": "CommandBasic"
},
"name": "CommandBasic"
}
Enheten får en tom nyttolast i begäran och bör returnera en tom nyttolast i svaret med en 200
HTTP-svarskod för att indikera att den lyckades.
Följande kodfragment från en enhetsmodell visar definitionen av ett kommando som har en heltalsparameter och som förväntar sig att enheten returnerar ett heltalsvärde:
{
"@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"
}
Enheten tar emot ett heltalsvärde som nyttolast för begäran. Enheten ska returnera ett heltalsvärde som svarsnyttolast med en 200
HTTP-svarskod för att indikera att det lyckades.
Följande kodfragment från en enhetsmodell visar definitionen av ett kommando som har en objektparameter och som förväntar sig att enheten returnerar ett objekt. I det här exemplet har båda objekten heltals- och strängfält:
{
"@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"
}
Följande kodfragment visar ett exempel på en nyttolast för begäran som skickas till enheten:
{ "Field1": 56, "Field2": "A string value" }
Följande kodfragment visar ett exempel på svarsnyttolast som skickas från enheten. Använd en 200
HTTP-svarskod för att indikera att det lyckades:
{ "Field1": 87, "Field2": "Another string value" }
Dricks
IoT Central har egna konventioner för att implementera långvariga kommandon och offlinekommandon.
Nästa steg
Nu när du har lärt dig om enhetsnyttolaster är ett föreslaget nästa steg att läsa guiden Enhetsutvecklare.