Datové části telemetrie, vlastností a příkazů

Model zařízení definuje:

  • Telemetrie zařízení odesílá do služby.
  • Vlastnosti zařízení se synchronizují se službou.
  • Příkazy, které služba volá na zařízení.

Tip

Azure IoT Central je služba, která se řídí konvencemi technologie Plug and Play. V IoT Central je model zařízení součástí šablony zařízení. IoT Central aktuálně podporuje DTDL v2 s rozšířením IoT Central. Aplikace IoT Central očekává, že obdrží data JSON s kódováním UTF-8.

Tento článek popisuje datové části JSON, které zařízení odesílají a přijímají pro telemetrii, vlastnosti a příkazy definované v modelu zařízení DTDL.

Článek nepopisuje každý možný typ telemetrie, vlastnosti a datové části příkazů, ale příklady ilustrují typy klíčů.

Každý příklad ukazuje fragment kódu z modelu zařízení, který definuje typ a ukázkové datové části JSON, aby ilustroval, jak by zařízení mělo pracovat s technologie Plug and Play službou, jako je IoT Central.

Ukázkové fragmenty kódu JSON v tomto článku používají jazyk DTDL (Digital Twin Definition Language) V2. Existují také některá rozšíření DTDL, která IoT Central používá.

Vzorový kód zařízení, který ukazuje některé z těchto datových částí, které se používají, najdete v Připojení ukázkové aplikaci ioT technologie Plug and Play zařízení běžící v Linuxu nebo Windows do IoT Hubu nebo vytvoření a připojení klientské aplikace k kurzu aplikace Azure IoT Central.

Zobrazení nezpracovaných dat

Pokud používáte IoT Central, můžete zobrazit nezpracovaná data, která zařízení odesílá do aplikace. Toto zobrazení je užitečné při řešení potíží s datovou částí odesílanou ze zařízení. Zobrazení nezpracovaných dat odesílané zařízením:

  1. Přejděte na zařízení ze stránky Zařízení .

  2. Vyberte kartu Nezpracovaná data:

    Screenshot that shows the raw data view.

    V tomto zobrazení můžete vybrat sloupce, které chcete zobrazit, a nastavit časový rozsah pro zobrazení. Nevymodelovaný datový sloupec zobrazuje data ze zařízení, která neodpovídají žádné definici vlastností ani telemetrie v šabloně zařízení.

Další tipy pro řešení potíží najdete v tématu Řešení potíží, proč se data ze zařízení nezobrazují v Azure IoT Central.

Telemetrie

Další informace o pravidlech pojmenování telemetrie DTDL najdete v tématu Telemetrie DTDL>. Pomocí znaku _ nemůžete spustit název telemetrie.

Nevytvárejte typy telemetrie s následujícími názvy. IoT Central používá tyto rezervované názvy interně. Pokud se pokusíte použít tyto názvy, IoT Central bude vaše data ignorovat:

  • EventEnqueuedUtcTime
  • EventProcessedUtcTime
  • PartitionId
  • EventHub
  • User
  • $metadata
  • $version

Telemetrie v komponentách

Pokud je telemetrie definovaná v komponentě, přidejte vlastní vlastnost zprávy s názvem $.sub komponenty definovanou v modelu zařízení. Další informace najdete v kurzu: Připojení technologie Plug and Play více komponent aplikací zařízení. V tomto kurzu se dozvíte, jak pomocí různých programovacích jazyků odesílat telemetrii z komponenty.

Důležité

Pokud chcete zobrazit telemetrii ze součástí hostovaných v modulech IoT Edge správně, použijte IoT Edge verze 1.2.4 nebo novější. Pokud používáte starší verzi, telemetrie z komponent v modulech IoT Edge se zobrazí jako _unmodeleddata.

Telemetrie v zděděných rozhraních

Pokud je telemetrie definovaná v zděděném rozhraní, zařízení odesílá telemetrii, jako by byla definovaná v kořenovém rozhraní. S ohledem na následující model zařízení:

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

Zařízení odesílá telemetrii napětí měřiče pomocí následující datové části. Zařízení neobsahuje název rozhraní v datové části:

{
    "MeterVoltage": 5.07
}

Primitivní typy

Tato část ukazuje příklady primitivních typů telemetrie, které zařízení může streamovat.

Následující fragment kódu z modelu zařízení ukazuje definici boolean typu telemetrie:

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

Klient zařízení by měl telemetrii odeslat jako JSON, který vypadá jako v následujícím příkladu:

{ "BooleanTelemetry": true }

Následující fragment kódu z modelu zařízení ukazuje definici string typu telemetrie:

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

Klient zařízení by měl telemetrii odeslat jako JSON, který vypadá jako v následujícím příkladu:

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

Následující fragment kódu z modelu zařízení ukazuje definici integer typu telemetrie:

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

Klient zařízení by měl telemetrii odeslat jako JSON, který vypadá jako v následujícím příkladu:

{ "IntegerTelemetry": 23 }

Následující fragment kódu z modelu zařízení ukazuje definici double typu telemetrie:

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

Klient zařízení by měl telemetrii odeslat jako JSON, který vypadá jako v následujícím příkladu:

{ "DoubleTelemetry": 56.78 }

Následující fragment kódu z modelu zařízení ukazuje definici dateTime typu telemetrie:

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

Klient zařízení by měl odeslat telemetrii jako JSON, který vypadá jako v následujícím příkladu – DateTime typy musí být ve formátu ISO 8061:

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

Následující fragment kódu z modelu zařízení ukazuje definici duration typu telemetrie:

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

Klient zařízení by měl odeslat telemetrii jako JSON, který vypadá jako v následujícím příkladu – doby trvání musí být ve formátu ISO 8601:

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

Komplexní typy

Tato část ukazuje příklady složitých typů telemetrie, které zařízení může streamovat.

Následující fragment kódu z modelu zařízení ukazuje definici Enum typu telemetrie:

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

Klient zařízení by měl telemetrii odeslat jako JSON, který vypadá jako v následujícím příkladu. Možné hodnoty jsou , a které se 0zobrazují v IoT Central jako Item1, Item2a Item3:21

{ "EnumTelemetry": 1 }

Následující fragment kódu z modelu zařízení ukazuje definici Object typu telemetrie. Tento objekt má tři pole s typy dateTime, integera 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"
            }
          ]
        }
      }
    ]
  }
}

Klient zařízení by měl telemetrii odeslat jako JSON, který vypadá jako v následujícím příkladu. DateTime musí být kompatibilní se standardem ISO 8061. Možné hodnoty jsou Property30, 1a které se zobrazují v IoT Central jako Item1, Item2a Item3:

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

Následující fragment kódu z modelu zařízení ukazuje definici vector typu telemetrie:

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

Klient zařízení by měl telemetrii odeslat jako JSON, který vypadá jako v následujícím příkladu:

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

Následující fragment kódu z modelu zařízení ukazuje definici geopoint typu telemetrie:

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

Poznámka:

Typ schématu geografického bodu je součástí rozšíření IoT Central do DTDL. IoT Central v současné době podporuje typ schématu geografického bodu a sémantický typ umístění pro zpětnou kompatibilitu.

Klient zařízení by měl telemetrii odeslat jako JSON, který vypadá jako v následujícím příkladu. IoT Central zobrazí hodnotu jako špendlík na mapě:

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

Typy událostí a stavů

Tato část ukazuje příklady telemetrických událostí a stavů, které zařízení odesílá do aplikace IoT Central.

Poznámka:

Typy schématu událostí a stavů jsou součástí rozšíření IoT Central do DTDL.

Následující fragment kódu z modelu zařízení ukazuje definici integer typu události:

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

Klient zařízení by měl odeslat data události jako JSON, který vypadá jako v následujícím příkladu:

{ "IntegerEvent": 74 }

Následující fragment kódu z modelu zařízení ukazuje definici integer typu stavu:

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

Klient zařízení by měl odeslat stav ve formátu JSON, který vypadá jako v následujícím příkladu. Možné celočíselné hodnoty jsou 1, 2nebo 3:

{ "IntegerState": 2 }

Vlastnosti

Další informace o pravidlech pojmenování vlastností DTDL najdete v tématu DTDL > – vlastnost. Název vlastnosti nelze spustit pomocí znaku _ .

Vlastnosti v součástech

Pokud je vlastnost definována v komponentě, zabalte vlastnost do názvu komponenty. Následující příklad nastaví komponentu maxTempSinceLastRebootthermostat2 . Značka __t označuje, že tato část definuje komponentu:

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

Další informace najdete v tématu Kurz: Vytvoření a připojení klientské aplikace k aplikaci Azure IoT Central.

Primitivní typy

Tato část ukazuje příklady primitivních typů vlastností, které zařízení odesílá do služby.

Následující fragment kódu z modelu zařízení ukazuje definici boolean typu vlastnosti:

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

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako následující příklad jako ohlášená vlastnost dvojčete zařízení:

{ "BooleanProperty": false }

Následující fragment kódu z modelu zařízení ukazuje definici long typu vlastnosti:

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

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako následující příklad jako ohlášená vlastnost dvojčete zařízení:

{ "LongProperty": 439 }

Následující fragment kódu z modelu zařízení ukazuje definici date typu vlastnosti:

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

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako následující příklad jako ohlášená vlastnost dvojčete zařízení. Date musí být kompatibilní se standardem ISO 8061:

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

Následující fragment kódu z modelu zařízení ukazuje definici duration typu vlastnosti:

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

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako v následujícím příkladu jako hlášená vlastnost dvojčete zařízení – doba trvání musí odpovídat standardu ISO 8601 Duration:

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

Následující fragment kódu z modelu zařízení ukazuje definici float typu vlastnosti:

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

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako následující příklad jako ohlášená vlastnost dvojčete zařízení:

{ "FloatProperty": 1.9 }

Následující fragment kódu z modelu zařízení ukazuje definici string typu vlastnosti:

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

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako následující příklad jako ohlášená vlastnost dvojčete zařízení:

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

Komplexní typy

Tato část ukazuje příklady složitých typů vlastností, které zařízení odesílá do služby.

Následující fragment kódu z modelu zařízení ukazuje definici Enum typu vlastnosti:

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

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako následující příklad jako ohlášená vlastnost dvojčete zařízení. Možné hodnoty jsou , 1a které se 0zobrazují v IoT Central jako Item1, Item2a Item3:

{ "EnumProperty": 1 }

Následující fragment kódu z modelu zařízení ukazuje definici Object typu vlastnosti. Tento objekt má dvě pole s typy string a 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"
      }
    ]
  }
}

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako následující příklad jako ohlášená vlastnost dvojčete zařízení:

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

Následující fragment kódu z modelu zařízení ukazuje definici vector typu vlastnosti:

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

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako následující příklad jako ohlášená vlastnost dvojčete zařízení:

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

Následující fragment kódu z modelu zařízení ukazuje definici geopoint typu vlastnosti:

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

Poznámka:

Typ schématu geografického bodu je součástí rozšíření IoT Central do DTDL. IoT Central v současné době podporuje typ schématu geografického bodu a sémantický typ umístění pro zpětnou kompatibilitu.

Klient zařízení by měl odeslat datovou část JSON, která vypadá jako následující příklad jako ohlášená vlastnost dvojčete zařízení:

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

Zapisovatelné typy vlastností

Tato část ukazuje příklady zapisovatelných typů vlastností, které zařízení přijímá ze služby.

Pokud je zapisovatelná vlastnost definována v komponentě, zpráva požadované vlastnosti obsahuje název komponenty. Následující příklad ukazuje zprávu žádající o aktualizaci targetTemperature zařízení v komponentě thermostat2 . Značka __t označuje, že tato část definuje komponentu:

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

Další informace najdete v tématu Připojení ioT technologie Plug and Play více komponentní aplikace zařízení.

Zařízení nebo modul by měly potvrdit, že obdržela vlastnost odesláním ohlášené vlastnosti. Ohlášená vlastnost by měla zahrnovat:

  • value – skutečná hodnota vlastnosti (obvykle přijatá hodnota, ale zařízení se může rozhodnout ohlásit jinou hodnotu).
  • ac – kód potvrzení, který používá stavový kód HTTP.
  • av – verze potvrzení, která odkazuje na $version požadovanou vlastnost. Tuto hodnotu najdete v datové části JSON požadované vlastnosti.
  • ad – volitelný popis potvrzení.

Další informace otěchtoch technologie Plug and Play > ch

Následující fragment kódu z modelu zařízení ukazuje definici zapisovatelného string typu vlastnosti:

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

Zařízení obdrží ze služby následující datovou část:

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

Po zpracování aktualizace by zařízení mělo službě odeslat následující datovou část JSON. Tato zpráva obsahuje číslo verze původní aktualizace přijaté ze služby.

Tip

Pokud je služba IoT Central, označí vlastnost jako synchronizovanou v uživatelském rozhraní, když obdrží tuto zprávu:

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

Následující fragment kódu z modelu zařízení ukazuje definici zapisovatelného Enum typu vlastnosti:

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

Zařízení obdrží ze služby následující datovou část:

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

Po zpracování aktualizace by zařízení mělo službě odeslat následující datovou část JSON. Tato zpráva obsahuje číslo verze původní aktualizace přijaté ze služby.

Tip

Pokud je služba IoT Central, označí vlastnost jako synchronizovanou v uživatelském rozhraní, když obdrží tuto zprávu:

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

Příkazy

Další informace o pravidlech pojmenování příkazů DTDL najdete v tématu Příkaz DTDL>. Název příkazu nelze spustit pomocí znaku _ .

Pokud je příkaz definovaný v komponentě, název příkazu, který zařízení obdrží, obsahuje název komponenty. Pokud je například volána getMaxMinReport příkaz a komponenta je volána thermostat2, zařízení obdrží požadavek na spuštění příkazu volaný thermostat2*getMaxMinReport.

Následující fragment kódu z modelu zařízení ukazuje definici příkazu, který nemá žádné parametry a který neočekává, že zařízení bude nic vracet:

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

Zařízení obdrží v požadavku prázdnou datovou část a v odpovědi by měla vrátit prázdnou datovou část s kódem 200 odpovědi HTTP, který označuje úspěch.

Následující fragment kódu z modelu zařízení ukazuje definici příkazu, který má celočíselnou hodnotu a očekává, že zařízení vrátí celočíselnou hodnotu:

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

Zařízení obdrží celočíselnou hodnotu jako datovou část požadavku. Zařízení by mělo vrátit celočíselnou hodnotu jako datovou část odpovědi s kódem 200 odpovědi HTTP, který označuje úspěch.

Následující fragment kódu z modelu zařízení ukazuje definici příkazu, který má parametr objektu a který očekává, že zařízení vrátí objekt. V tomto příkladu mají oba objekty celočíselná i řetězcová pole:

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

Následující fragment kódu ukazuje ukázkovou datovou část požadavku odeslanou do zařízení:

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

Následující fragment kódu ukazuje ukázkovou datovou část odpovědi odeslanou ze zařízení. 200 K označení úspěchu použijte kód odpovědi HTTP:

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

Tip

IoT Central má vlastní konvence pro implementaci dlouhotrvajících příkazů a příkazů offline.

Další kroky

Teď, když jste se seznámili s datovými částmi zařízení, je navrhovaným dalším postupem přečíst příručku pro vývojáře zařízení.