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:

  1. Lépjen az eszközre az Eszközök lapon.

  2. Válassza a Nyers adatok lapot:

    Screenshot that shows the raw data view.

    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 dateTimerendelkezik, 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ők10, és amelyek az IoT Centralban a következőként Item1jelennek meg: ésItem2Item3:

{
  "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ők12: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
    } 
}

További információ: Oktatóanyag: Ügyfélalkalmazás létrehozása és csatlakoztatása az Azure IoT Central-alkalmazáshoz.

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 targetTemperaturethermostat2 ö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*getMaxMinReportparancs 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.