Payloads van telemetrie, eigenschappen en opdrachten

Een apparaatsjabloon in Azure IoT Central is een blauwdruk die het volgende definieert:

  • Telemetrie die een apparaat naar de IoT Central.
  • Eigenschappen die een apparaat synchroniseert met IoT Central.
  • Opdrachten die IoT Central aanroepen op een apparaat.

In dit artikel worden de JSON-nettoladingen beschreven die apparaten verzenden en ontvangen voor telemetrie, eigenschappen en opdrachten die zijn gedefinieerd in een apparaatsjabloon.

In het artikel worden niet alle mogelijke typen telemetrie, eigenschappen en opdrachtn payloads beschreven, maar de voorbeelden illustreren alle sleuteltypen.

In elk voorbeeld ziet u een fragment van het apparaatmodel dat het type en voorbeeld van JSON-nettoladingen definieert om te laten zien hoe het apparaat moet communiceren met de IoT Central toepassing.

Notitie

IoT Central accepteert een geldige JSON, maar deze kan alleen worden gebruikt voor visualisaties als deze overeenkomt met een definitie in het apparaatmodel. U kunt gegevens exporteren die niet overeenkomen met een definitie. Zie Export IoT data to destinations in Azure (IoT-gegevens exporteren naar bestemmingen in Azure).

Het JSON-bestand dat het apparaatmodel definieert, maakt gebruik van digital twin definition language (DTDL) v2.

Zie de zelfstudie Een clienttoepassing maken en verbinden met uw Azure IoT Central toepassing voor voorbeeldcode van apparaten die een aantal van deze nettoladingen in gebruik toont.

Onbewerkte gegevens weergeven

IoT Central kunt u de onbewerkte gegevens weergeven die een apparaat naar een toepassing verzendt. Deze weergave is handig voor het oplossen van problemen met de nettolading die vanaf een apparaat wordt verzonden. De onbewerkte gegevens weergeven die een apparaat verstuurt:

  1. Navigeer naar het apparaat op de pagina Apparaten.

  2. Selecteer het tabblad Onbewerkte gegevens:

    Weergave Onbewerkte gegevens

    In deze weergave kunt u de kolommen selecteren die u wilt weergeven en een tijdsbereik instellen. In de kolom Niet-gemodelleerde gegevens ziet u gegevens van het apparaat die niet overeenkomen met een van de eigenschaps- of telemetriedefinities in de apparaatsjabloon.

Telemetrie

Telemetrie in onderdelen

Als de telemetrie is gedefinieerd in een onderdeel, voegt u een aangepaste bericht-eigenschap met de naam van het onderdeel toe, zoals $.sub gedefinieerd in het apparaatmodel. Zie Zelfstudie: Een clienttoepassing maken en verbinden met uw Azure IoT Central toepassing voor meer informatie.

Primitieve typen

Deze sectie bevat voorbeelden van primitieve telemetrietypen die een apparaat naar een IoT Central streamt.

Het volgende fragment van een apparaatmodel toont de definitie van een boolean telemetrietype:

{
  "@type": "Telemetry",
  "displayName": {
    "en": "BooleanTelemetry"
  },
  "name": "BooleanTelemetry",
  "schema": "boolean"
}

Een apparaatclient moet de telemetrie verzenden als JSON, zoals in het volgende voorbeeld:

{ "BooleanTelemetry": true }

Het volgende fragment van een apparaatmodel toont de definitie van een string telemetrietype:

{
  "@type": "Telemetry",
  "displayName": {
    "en": "StringTelemetry"
  },
  "name": "StringTelemetry",
  "schema": "string"
}

Een apparaatclient moet de telemetrie verzenden als JSON, zoals in het volgende voorbeeld:

{ "StringTelemetry": "A string value - could be a URL" }

Het volgende fragment van een apparaatmodel toont de definitie van een integer telemetrietype:

{
  "@type": "Telemetry",
  "displayName": {
    "en": "IntegerTelemetry"
  },
  "name": "IntegerTelemetry",
  "schema": "integer"
}

Een apparaatclient moet de telemetrie verzenden als JSON, zoals in het volgende voorbeeld:

{ "IntegerTelemetry": 23 }

Het volgende fragment van een apparaatmodel toont de definitie van een double telemetrietype:

{
  "@type": "Telemetry",
  "displayName": {
    "en": "DoubleTelemetry"
  },
  "name": "DoubleTelemetry",
  "schema": "double"
}

Een apparaatclient moet de telemetrie verzenden als JSON, zoals in het volgende voorbeeld:

{ "DoubleTelemetry": 56.78 }

Het volgende fragment van een apparaatmodel toont de definitie van een dateTime telemetrietype:

{
  "@type": "Telemetry",
  "displayName": {
    "en": "DateTimeTelemetry"
  },
  "name": "DateTimeTelemetry",
  "schema": "dateTime"
}

Een apparaatclient moet de telemetrie verzenden als JSON die lijkt op het volgende DateTime voorbeeld: typen moeten de ISO 8061-indeling hebben:

{ "DateTimeTelemetry": "2020-08-30T19:16:13.853Z" }

Het volgende fragment van een apparaatmodel toont de definitie van een duration telemetrietype:

{
  "@type": "Telemetry",
  "displayName": {
    "en": "DurationTelemetry"
  },
  "name": "DurationTelemetry",
  "schema": "duration"
}

Een apparaatclient moet de telemetrie verzenden als JSON die lijkt op het volgende voorbeeld: de duur moet de ISO 8601-indeling hebben:

{ "DurationTelemetry": "PT10H24M6.169083011336625S" }

Complexe typen

Deze sectie bevat voorbeelden van complexe telemetrietypen die een apparaat naar een IoT Central streamt.

Het volgende fragment van een apparaatmodel toont de definitie van een geopoint telemetrietype:

{
  "@type": "Telemetry",
  "displayName": {
    "en": "GeopointTelemetry"
  },
  "name": "GeopointTelemetry",
  "schema": "geopoint"
}

Notitie

Het geopoint-schematype maakt geen deel uit van de specificatie Digital Twins Definitietaal. IoT Central biedt momenteel ondersteuning voor het geopoint-schematype en het semantische locatietype voor compatibiliteit met eerdere punten.

Een apparaatclient moet de telemetrie verzenden als JSON die lijkt op het volgende voorbeeld. IoT Central geeft de waarde weer als een speld op een kaart:

{
  "GeopointTelemetry": {
    "lat": 47.64263,
    "lon": -122.13035,
    "alt": 0
  }
}

Het volgende fragment van een apparaatmodel toont de definitie van een Enum telemetrietype:

{
  "@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"
      }
    ]
  }
}

Een apparaatclient moet de telemetrie verzenden als JSON die lijkt op het volgende voorbeeld. Mogelijke waarden zijn 0 , en die in IoT Central worden weergegeven als , en 1 2 Item1 Item2 Item3 :

{ "EnumTelemetry": 1 }

Het volgende fragment van een apparaatmodel toont de definitie van een Object telemetrietype. Dit object heeft drie velden met de dateTime typen integer , en 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"
            }
          ]
        }
      }
    ]
  }
}

Een apparaatclient moet de telemetrie verzenden als JSON die lijkt op het volgende voorbeeld. DateTime -typen moeten ISO 8061-compatibel zijn. Mogelijke waarden voor Property3 zijn , en die in IoT Central worden weergegeven als , en 0 1 Item1 Item2 Item3 :

{
  "ObjectTelemetry": {
      "Property1": "2020-09-09T03:36:46.195Z",
      "Property2": 37,
      "Property3": 2
  }
}

Het volgende fragment van een apparaatmodel toont de definitie van een vector telemetrietype:

{
  "@type": "Telemetry",
  "displayName": {
    "en": "VectorTelemetry"
  },
  "name": "VectorTelemetry",
  "schema": "vector"
}

Een apparaatclient moet de telemetrie verzenden als JSON, zoals in het volgende voorbeeld:

{
  "VectorTelemetry": {
    "x": 74.72395045538597,
    "y": 74.72395045538597,
    "z": 74.72395045538597
  }
}

Gebeurtenis- en statustypen

Deze sectie bevat voorbeelden van telemetriegebeurtenissen en de staten die een apparaat naar een IoT Central verzendt.

Het volgende fragment van een apparaatmodel toont de definitie van een integer gebeurtenistype:

{
  "@type": [
    "Telemetry",
    "Event"
  ],
  "displayName": {
    "en": "IntegerEvent"
  },
  "name": "IntegerEvent",
  "schema": "integer"
}

Een apparaatclient moet de gebeurtenisgegevens verzenden als JSON, zoals in het volgende voorbeeld:

{ "IntegerEvent": 74 }

Het volgende fragment van een apparaatmodel toont de definitie van een integer statustype:

{
  "@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"
      }
    ]
  }
}

Een apparaatclient moet de status als JSON verzenden die lijkt op het volgende voorbeeld. Mogelijke statuswaarden voor gehele getallen zijn 1 2 , of 3 :

{ "IntegerState": 2 }

Eigenschappen

Notitie

De payloadindelingen voor eigenschappen zijn van toepassing op toepassingen die zijn gemaakt op of na 14-07-2020.

Eigenschappen in onderdelen

Als de eigenschap is gedefinieerd in een onderdeel, verpakt u de eigenschap in de naam van het onderdeel. In het volgende voorbeeld wordt de maxTempSinceLastReboot in het onderdeel in thermostat2 stellen. De markering __t geeft aan dat dit een onderdeel is:

{
  "thermostat2" : {  
    "__t" : "c",  
    "maxTempSinceLastReboot" : 38.7
    } 
}

Zie Zelfstudie: Een clienttoepassing maken en verbinden met uw Azure IoT Central toepassing voor meer informatie.

Primitieve typen

Deze sectie bevat voorbeelden van primitieve eigenschapstypen die een apparaat naar een IoT Central verzendt.

Het volgende fragment van een apparaatmodel toont de definitie van een boolean eigenschapstype:

{
  "@type": "Property",
  "displayName": {
    "en": "BooleanProperty"
  },
  "name": "BooleanProperty",
  "schema": "boolean",
  "writable": false
}

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel:

{ "BooleanProperty": false }

Het volgende fragment van een apparaatmodel toont de definitie van een long eigenschapstype:

{
  "@type": "Property",
  "displayName": {
    "en": "LongProperty"
  },
  "name": "LongProperty",
  "schema": "long",
  "writable": false
}

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel:

{ "LongProperty": 439 }

Het volgende fragment van een apparaatmodel toont de definitie van een date eigenschapstype:

{
  "@type": "Property",
  "displayName": {
    "en": "DateProperty"
  },
  "name": "DateProperty",
  "schema": "date",
  "writable": false
}

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel. Date -typen moeten ISO 8061-compatibel zijn:

{ "DateProperty": "2020-05-17" }

Het volgende fragment van een apparaatmodel toont de definitie van een duration eigenschapstype:

{
  "@type": "Property",
  "displayName": {
    "en": "DurationProperty"
  },
  "name": "DurationProperty",
  "schema": "duration",
  "writable": false
}

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel - duur moet ISO 8601 duration compliant zijn:

{ "DurationProperty": "PT10H24M6.169083011336625S" }

Het volgende fragment van een apparaatmodel toont de definitie van een float eigenschapstype:

{
  "@type": "Property",
  "displayName": {
    "en": "FloatProperty"
  },
  "name": "FloatProperty",
  "schema": "float",
  "writable": false
}

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel:

{ "FloatProperty": 1.9 }

Het volgende fragment van een apparaatmodel toont de definitie van een string eigenschapstype:

{
  "@type": "Property",
  "displayName": {
    "en": "StringProperty"
  },
  "name": "StringProperty",
  "schema": "string",
  "writable": false
}

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel:

{ "StringProperty": "A string value - could be a URL" }

Complexe typen

Deze sectie bevat voorbeelden van complexe eigenschapstypen die een apparaat naar een IoT Central verzendt.

Het volgende fragment van een apparaatmodel toont de definitie van een geopoint eigenschapstype:

{
  "@type": "Property",
  "displayName": {
    "en": "GeopointProperty"
  },
  "name": "GeopointProperty",
  "schema": "geopoint",
  "writable": false
}

Notitie

Het geopoint-schematype maakt geen deel uit van de specificatie Digital Twins Definitietaal. IoT Central biedt momenteel ondersteuning voor het geopoint-schematype en het semantische locatietype voor compatibiliteit met eerdere punten.

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel:

{
  "GeopointProperty": {
    "lat": 47.64263,
    "lon": -122.13035,
    "alt": 0
  }
}

Het volgende fragment van een apparaatmodel toont de definitie van een Enum eigenschapstype:

{
  "@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"
      }
    ]
  }
}

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel. Mogelijke waarden zijn 0 , en die in IoT Central worden weergegeven als , en 1 Item1 Item2 Item3 :

{ "EnumProperty": 1 }

Het volgende fragment van een apparaatmodel toont de definitie van een Object eigenschapstype. Dit object heeft twee velden met typen string en 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"
      }
    ]
  }
}

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel:

{
  "ObjectProperty": {
    "Field1": 37,
    "Field2": "A string value"
  }
}

Het volgende fragment van een apparaatmodel toont de definitie van een vector eigenschapstype:

{
  "@type": "Property",
  "displayName": {
    "en": "VectorProperty"
  },
  "name": "VectorProperty",
  "schema": "vector",
  "writable": false
}

Een apparaatclient moet een JSON-nettolading verzenden die lijkt op het volgende voorbeeld als een gerapporteerde eigenschap in de apparaat dubbel:

{
  "VectorProperty": {
    "x": 74.72395045538597,
    "y": 74.72395045538597,
    "z": 74.72395045538597
  }
}

Beschrijfbare eigenschapstypen

Deze sectie bevat voorbeelden van beschrijfbare eigenschapstypen die een apparaat ontvangt van een IoT Central toepassing.

Als de beschrijfbare eigenschap is gedefinieerd in een onderdeel, bevat het bericht van de gewenste eigenschap de naam van het onderdeel. In het volgende voorbeeld ziet u het bericht waarin het apparaat wordt gevraagd om de targetTemperature in het onderdeel bij te thermostat2 werken. De markering __t geeft aan dat dit een onderdeel is:

{
  "thermostat2": {
    "targetTemperature": {
      "value": 57
    },
    "__t": "c"
  },
  "$version": 3
}

Zie Zelfstudie: Een clienttoepassing maken en verbinden met uw Azure IoT Central toepassing voor meer informatie.

IoT Central verwacht een reactie van het apparaat op beschrijfbare updates van eigenschappen. Het antwoordbericht moet de velden ac en av bevatten. Het veld ad is optioneel. Zie de volgende codefragmenten voor voorbeelden.

ac is een numeriek veld dat gebruikmaakt van de waarden in de volgende tabel:

Waarde Label Beschrijving
'ac': 200 Voltooid De bewerking voor het wijzigen van de eigenschap is voltooid.
'ac': 202 Of 'ac': 201 In behandeling De bewerking voor het wijzigen van de eigenschap is in behandeling of wordt uitgevoerd
'ac': 4xx Fout De aangevraagde eigenschapswijziging is ongeldig of er is een fout opgetreden
'ac': 5xx Fout Er is een onverwachte fout opgetreden op het apparaat bij het verwerken van de aangevraagde wijziging.

av is het versienummer dat naar het apparaat is verzonden.

ad is een beschrijving van een tekenreeks van de optie.

Het volgende fragment van een apparaatmodel toont de definitie van een string beschrijfbaar eigenschapstype:

{
  "@type": "Property",
  "displayName": {
    "en": "StringPropertyWritable"
  },
  "name": "StringPropertyWritable",
  "writable": true,
  "schema": "string"
}

Het apparaat ontvangt de volgende nettolading van IoT Central:

{  
  "StringPropertyWritable": "A string from IoT Central", "$version": 7
}

Het apparaat moet de volgende JSON-nettolading naar de IoT Central nadat de update is verwerkt. Dit bericht bevat het versienummer van de oorspronkelijke update die is ontvangen van IoT Central. Wanneer IoT Central dit bericht ontvangt, wordt de eigenschap als gesynchroniseerd in de gebruikersinterface weergegeven:

{
  "StringPropertyWritable": {
    "value": "A string from IoT Central",
    "ac": 200,
    "ad": "completed",
    "av": 7
  }
}

Het volgende fragment van een apparaatmodel toont de definitie van een Enum beschrijfbaar eigenschapstype:

{
  "@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"
      }
    ]
  }
}

Het apparaat ontvangt de volgende nettolading van IoT Central:

{  
  "EnumPropertyWritable":  1 , "$version": 10
}

Het apparaat moet de volgende JSON-nettolading naar de IoT Central nadat de update is verwerkt. Dit bericht bevat het versienummer van de oorspronkelijke update die is ontvangen van IoT Central. Wanneer IoT Central dit bericht ontvangt, wordt de eigenschap als gesynchroniseerd in de gebruikersinterface weergegeven:

{
  "EnumPropertyWritable": {
    "value": 1,
    "ac": 200,
    "ad": "completed",
    "av": 10
  }
}

Opdracht

Als de opdracht is gedefinieerd in een onderdeel, bevat de naam van de opdracht die het apparaat ontvangt de onderdeelnaam. Als de opdracht bijvoorbeeld wordt aangeroepen en het onderdeel wordt aangeroepen, ontvangt het apparaat een aanvraag om een getMaxMinReport opdracht met de naam uit te thermostat2 thermostat2*getMaxMinReport voeren.

Het volgende fragment van een apparaatmodel toont de definitie van een opdracht die geen parameters heeft en die niet verwacht dat het apparaat iets retourneren:

{
  "@type": "Command",
  "displayName": {
    "en": "CommandBasic"
  },
  "name": "CommandBasic"
}

Het apparaat ontvangt een lege nettolading in de aanvraag en moet een lege nettolading in het antwoord retourneren met een HTTP-antwoordcode om aan te geven dat de aanvraag 200 is geslaagd.

Het volgende fragment van een apparaatmodel toont de definitie van een opdracht die een geheel getal-parameter heeft en die verwacht dat het apparaat een geheel getal retourneert:

{
  "@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"
}

Het apparaat ontvangt een geheel getal als nettolading van de aanvraag. Het apparaat moet een geheel getal als nettolading van het antwoord retourneren met een 200 HTTP-antwoordcode om aan te geven dat de actie is geslaagd.

Het volgende fragment van een apparaatmodel toont de definitie van een opdracht die een objectparameter heeft en die verwacht dat het apparaat een -object retourneert. In dit voorbeeld hebben beide objecten velden met gehele getallen en tekenreeksen:

{
  "@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"
}

In het volgende codefragment ziet u een voorbeeld van de nettolading van de aanvraag die naar het apparaat is verzonden:

{ "Field1": 56, "Field2": "A string value" }

In het volgende codefragment ziet u een voorbeeld van de nettolading van het antwoord die vanaf het apparaat is verzonden. Gebruik een 200 HTTP-antwoordcode om aan te geven dat de actie is geslaagd:

{ "Field1": 87, "Field2": "Another string value" }

Langlopende opdrachten

Het volgende fragment van een apparaatmodel toont de definitie van een opdracht. De opdracht heeft een geheel getal-parameter en verwacht dat het apparaat een geheel getal retourneert:

{
  "@type": "Command",
  "request": {
    "@type": "CommandPayload",
    "displayName": {
      "en": "RequestParam"
    },
    "name": "RequestParam",
    "schema": "integer"
  },
  "response": {
    "@type": "CommandPayload",
    "displayName": {
      "en": "ResponseParam"
    },
    "name": "ResponseParam",
    "schema": "integer"
  },
  "displayName": {
    "en": "LongRunningCommandSimple"
  },
  "name": "LongRunningCommandSimple"
}

Het apparaat ontvangt een geheel getal als nettolading van de aanvraag. Als het apparaat tijd nodig heeft om deze opdracht te verwerken, moet het een lege nettolading van het antwoord retourneren met een HTTP-antwoordcode om aan te geven dat het apparaat de aanvraag voor 202 verwerking heeft geaccepteerd.

Wanneer het apparaat klaar is met het verwerken van de aanvraag, moet er een eigenschap worden IoT Central die lijkt op het volgende voorbeeld. De naam van de eigenschap moet gelijk zijn aan de naam van de opdracht:

{
  "LongRunningCommandSimple": {
    "value": 87
  }
}

Offlineopdrachten

In de IoT Central webinterface kunt u de optie Wachtrij indien offline selecteren voor een opdracht. Offline-opdrachten zijn meldingen in één manier naar het apparaat vanuit uw oplossing die worden geleverd zodra een apparaat verbinding maakt. Offlineopdrachten kunnen een aanvraagparameter hebben, maar retourneren geen antwoord.

De instelling Wachtrij als offline is niet opgenomen als u een model of interface uit de apparaatsjabloon exporteert. U kunt niet zien dat een opdracht een offline opdracht is door naar een geëxporteerd model of een geëxporteerde interface-JSON te kijken.

Offlineopdrachten gebruiken IoT Hub cloud-naar-apparaat-berichten om de opdracht en nettolading naar het apparaat te verzenden.

De nettolading van het bericht dat het apparaat ontvangt, is de onbewerkte waarde van de parameter. Een aangepaste eigenschap met de method-name naam slaat de naam van de IoT Central opdracht. In de volgende tabel ziet u enkele voorbeeldnladingen:

IoT Central aanvraagschema maken Voorbeeld van nettolading die is ontvangen door het apparaat
Geen aanvraagparameter @
Dubbel 1.23
Tekenreeks sample string
Object {"StartTime":"2021-01-05T08:00:00.000Z","Bank":2}

Het volgende fragment van een apparaatmodel toont de definitie van een opdracht. De opdracht heeft een objectparameter met een datum/tijd-veld en een enumeratie:

{
  "@type": "Command",
  "displayName": {
    "en": "Generate Diagnostics"
  },
  "name": "GenerateDiagnostics",
  "request": {
    "@type": "CommandPayload",
    "displayName": {
      "en": "Payload"
    },
    "name": "Payload",
    "schema": {
      "@type": "Object",
      "displayName": {
        "en": "Object"
      },
      "fields": [
        {
          "displayName": {
            "en": "StartTime"
          },
          "name": "StartTime",
          "schema": "dateTime"
        },
        {
          "displayName": {
            "en": "Bank"
          },
          "name": "Bank",
          "schema": {
            "@type": "Enum",
            "displayName": {
              "en": "Enum"
            },
            "enumValues": [
              {
                "displayName": {
                  "en": "Bank 1"
                },
                "enumValue": 1,
                "name": "Bank1"
              },
              {
                "displayName": {
                  "en": "Bank2"
                },
                "enumValue": 2,
                "name": "Bank2"
              },
              {
                "displayName": {
                  "en": "Bank3"
                },
                "enumValue": 3,
                "name": "Bank3"
              }
            ],
            "valueSchema": "integer"
          }
        }
      ]
    }
  }
}

Als u de optie Wachtrij als offline in de gebruikersinterface van de apparaatsjabloon inschakelen voor de opdracht in het vorige fragment, bevat het bericht dat het apparaat ontvangt de volgende eigenschappen:

Naam van eigenschap Voorbeeldwaarde
custom_properties {'method-name': 'GenerateDiagnostics'}
data {"StartTime":"2021-01-05T08:00:00.000Z","Bank":2}

Volgende stappen

Nu u meer hebt geleerd over apparaatsjablonen, is een voorgestelde volgende stap Om verbinding te maken met Azure IoT Central te lezen voor meer informatie over het registreren van apparaten bij IoT Central en hoe IoT Central apparaatverbindingen beveiligt.