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

Šablona zařízení v Azure IoT Central je podrobný plán, který definuje:

  • Telemetrie zařízení odesílá IoT Central.
  • Vlastnosti zařízení se synchronizuje s IoT Central.
  • Příkazy, které IoT Central volání na zařízení.

Tento článek popisuje datové části JSON, které zařízení odesílají a získávají pro telemetrii, vlastnosti a příkazy definované v šabloně zařízení.

Tento článek nepopisuje všechny možné typy telemetrie, vlastností a datových částí příkazu, ale příklady ilustrují všechny typy klíčů.

Každý příklad ukazuje fragment kódu z modelu zařízení, který definuje typ a ukázkové datové části JSON pro ilustraci, jak by mělo zařízení komunikovat s IoT Centralou aplikací.

Poznámka

IoT Central přijímá jakýkoli platný formát JSON, ale může se použít jenom pro vizualizace, pokud se shoduje s definicí v modelu zařízení. Data, která se neshodují s definicí, můžete exportovat v tématu Export dat IoT do cílových umístění v Azure.

Soubor JSON, který definuje model zařízení, používá program Digital DTDL Definition Language () v2.

Vzorový kód zařízení, který zobrazuje některé z těchto používaných datových částí, najdete v kurzu Vytvoření a připojení klientské aplikace do aplikace Azure IoT Central .

Zobrazit nezpracovaná data

IoT Central umožňuje zobrazit nezpracovaná data, která zařízení odesílá do aplikace. Toto zobrazení je užitečné při řešení potíží s datovou částí odeslanou ze zařízení. Chcete-li zobrazit nezpracovaná data, která zařízení odesílá:

  1. Přejděte na zařízení na stránce zařízení .

  2. Vyberte kartu nezpracovaná data :

    Zobrazení nezpracovaných dat

    V tomto zobrazení můžete vybrat sloupce, které chcete zobrazit, a nastavit časový rozsah, který chcete zobrazit. Sloupec nemodelovaná data zobrazuje data ze zařízení, která neodpovídají žádné definici vlastnosti nebo telemetrie v šabloně zařízení.

Telemetrie

Telemetrie v součástech

Pokud je telemetrie definována v komponentě, přidejte vlastní vlastnost zprávy nazvanou $.sub s názvem komponenty, která je definována v modelu zařízení. Další informace najdete v tématu kurz: vytvoření a připojení klientské aplikace k aplikaci Azure IoT Central.

Primitivní typy

V této části jsou uvedeny příklady primitivních typů telemetrie, které zařízení streamuje do aplikace IoT Central.

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

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

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

{ "BooleanTelemetry": true }

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

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

Klient zařízení by měl odeslat telemetrii 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í zobrazuje definici integer typu telemetrie:

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

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

{ "IntegerTelemetry": 23 }

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

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

Klient zařízení by měl odeslat telemetrii 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í zobrazuje 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ích příkladech, DateTime 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í zobrazuje 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 – doba trvání musí být ve formátu ISO 8601:

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

Komplexní typy

V této části jsou uvedeny příklady komplexních typů telemetrie, které zařízení streamuje do aplikace IoT Central.

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

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

Poznámka

Typ schématu inbodový není součástí specifikace jazyka definice digitálních vláken. IoT Central aktuálně 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 telemetrii jako JSON, která vypadá jako v následujícím příkladu. IoT Central zobrazuje hodnotu jako kód PIN na mapě:

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

Následující fragment kódu z modelu zařízení zobrazuje 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 odeslat telemetrii jako JSON, která vypadá jako v následujícím příkladu. Možné hodnoty jsou 0 , 1 a 2 , které se zobrazují v IoT Central jako Item1 , Item2 a Item3 :

{ "EnumTelemetry": 1 }

Následující fragment kódu z modelu zařízení zobrazuje definici Object typu telemetrie. Tento objekt má tři pole s typy dateTime , integer a 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 odeslat telemetrii jako JSON, která vypadá jako v následujícím příkladu. DateTime typy musí být kompatibilní s ISO 8061. Možné hodnoty pro Property3 jsou 0 , 1 a, které se zobrazují v IoT Central jako Item1 , Item2 a Item3 :

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

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

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

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

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

Typy událostí a stavů

V této části jsou uvedeny příklady událostí telemetrie a stavy, které zařízení odesílá do aplikace IoT Central.

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

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

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

{ "IntegerEvent": 74 }

Následující fragment kódu z modelu zařízení zobrazuje 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 jako JSON, který vypadá jako v následujícím příkladu. Možné hodnoty celočíselného stavu jsou 1 , 2 nebo 3 :

{ "IntegerState": 2 }

Vlastnosti

Poznámka

Formáty datové části pro vlastnosti se vztahují na aplikace vytvořené v nebo po 07/14/2020.

Vlastnosti v součástech

Pokud je vlastnost definována v komponentě, zabalte vlastnost v názvu komponenty. Následující příklad nastaví maxTempSinceLastReboot v thermostat2 součásti. Tato značka __t označuje, že tato součást:

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

V této části jsou uvedeny příklady primitivních typů vlastností, které zařízení odesílá do aplikace IoT Central.

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

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

Klient zařízení by měl poslat datovou část JSON, která vypadá jako v následujícím příkladu, jako hlášená vlastnost v zařízení s dvojitou vlastností:

{ "BooleanProperty": false }

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

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

Klient zařízení by měl poslat datovou část JSON, která vypadá jako v následujícím příkladu, jako hlášená vlastnost v zařízení s dvojitou vlastností:

{ "LongProperty": 439 }

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

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

Klient zařízení by měl poslat datovou část JSON, která vypadá jako v následujícím příkladu jako vlastnost hlášená v zařízení je v nevlákna. Date typy musí být kompatibilní s ISO 8061:

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

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

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

Klient zařízení by měl poslat datovou část JSON, která vypadá jako v následujícím příkladu jako vlastnost hlášená v době trvání vlákna zařízení musí být kompatibilní s normou ISO 8601:

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

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

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

Klient zařízení by měl poslat datovou část JSON, která vypadá jako v následujícím příkladu, jako hlášená vlastnost v zařízení s dvojitou vlastností:

{ "FloatProperty": 1.9 }

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

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

Klient zařízení by měl poslat datovou část JSON, která vypadá jako v následujícím příkladu, jako hlášená vlastnost v zařízení s dvojitou vlastností:

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

Komplexní typy

V této části jsou uvedeny příklady komplexních typů vlastností, které zařízení odesílá do aplikace IoT Central.

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

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

Poznámka

Typ schématu inbodový není součástí specifikace jazyka definice digitálních vláken. IoT Central aktuálně podporuje typ schématu geografického bodu a sémantický typ umístění pro zpětnou kompatibilitu.

Klient zařízení by měl poslat datovou část JSON, která vypadá jako v následujícím příkladu, jako hlášená vlastnost v zařízení s dvojitou vlastností:

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

Následující fragment kódu z modelu zařízení zobrazuje 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 poslat datovou část JSON, která vypadá jako v následujícím příkladu jako vlastnost hlášená v zařízení je v nevlákna. Možné hodnoty jsou 0 , 1 a, které se zobrazují v IoT Central jako Item1 , Item2 a Item3 :

{ "EnumProperty": 1 }

Následující fragment kódu z modelu zařízení zobrazuje 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 poslat datovou část JSON, která vypadá jako v následujícím příkladu, jako hlášená vlastnost v zařízení s dvojitou vlastností:

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

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

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

Klient zařízení by měl poslat datovou část JSON, která vypadá jako v následujícím příkladu, jako hlášená vlastnost v zařízení s dvojitou vlastností:

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

Typy vlastností s možností zápisu

V této části jsou uvedeny příklady typů vlastností s možností zápisu, které zařízení obdrží z aplikace IoT Central.

Pokud je vlastnost s možností zápisu definována v komponentě, zahrnuje požadovaná vlastnost název součásti. Následující příklad ukazuje zprávu požadující, aby zařízení aktualizovalo targetTemperature v thermostat2 součásti. Tato značka __t označuje, že tato součást:

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

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

IoT Central očekává odpověď ze zařízení na aktualizace vlastností s možností zápisu. Zpráva odpovědi by měla zahrnovat ac pole a av . Pole ad je nepovinné. Příklady najdete v následujících fragmentech kódu.

ac je číselné pole, které používá hodnoty v následující tabulce:

Hodnota Popisek Description
'ac': 200 Dokončeno Operace změny vlastnosti byla úspěšně dokončena.
'ac': 202 ani 'ac': 201 Čekající Operace změny vlastnosti čeká na vyřízení nebo probíhá.
'ac': 4xx Chyba Požadovaná změna vlastnosti nebyla platná nebo došlo k chybě.
'ac': 5xx Chyba U zařízení došlo k neočekávané chybě při zpracování požadované změny.

av je číslo verze odesílané do zařízení.

ad je popis řetězce možností.

Následující fragment kódu z modelu zařízení zobrazuje definici typu vlastnosti s možností zápisu string :

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

Zařízení obdrží následující datovou část z IoT Central:

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

Zařízení by mělo po zpracování aktualizace odeslat následující datovou část JSON, která se IoT Central. Tato zpráva obsahuje číslo verze původní aktualizace přijaté od IoT Central. Když IoT Central obdrží tuto zprávu, označí vlastnost jako synchronizovanou v uživatelském rozhraní:

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

Následující fragment kódu z modelu zařízení zobrazuje definici typu vlastnosti s možností zápisu Enum :

{
  "@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ží následující datovou část z IoT Central:

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

Zařízení by mělo po zpracování aktualizace odeslat následující datovou část JSON, která se IoT Central. Tato zpráva obsahuje číslo verze původní aktualizace přijaté od IoT Central. Když IoT Central obdrží tuto zprávu, označí vlastnost jako synchronizovanou v uživatelském rozhraní:

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

Příkazy

Pokud je příkaz definovaný v komponentě, název příkazu, který zařízení obdrží, zahrnuje název součásti. Například pokud je příkaz volán getMaxMinReport a je zavolána komponenta thermostat2 , zařízení obdrží požadavek na provedení příkazu s názvem thermostat2*getMaxMinReport .

Následující fragment kódu z modelu zařízení zobrazuje definici příkazu, který nemá žádné parametry a neočekává, že zařízení vrátí cokoli.

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

Zařízení obdrží v žádosti prázdnou datovou část a v odpovědi musí vracet prázdnou datovou část s 200 kódem odpovědi HTTP, aby označovala úspěch.

Následující fragment kódu z modelu zařízení zobrazuje definici příkazu, který má celočíselný parametr 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ží jako datovou část požadavku celočíselnou hodnotu. Zařízení by mělo vracet celočíselnou hodnotu jako datovou část odpovědi s 200 kódem odpovědi HTTP, aby označovalo úspěch.

Následující fragment kódu z modelu zařízení zobrazuje 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é a ř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 příklad datové části odpovědi odeslané ze zařízení. 200K indikaci úspěchu použijte kód odpovědi http:

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

Dlouho běžící příkazy

Následující fragment kódu z modelu zařízení zobrazuje definici příkazu. Příkaz má celočíselný parametr 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": "LongRunningCommandSimple"
  },
  "name": "LongRunningCommandSimple"
}

Zařízení obdrží jako datovou část požadavku celočíselnou hodnotu. Pokud zařízení potřebuje čas ke zpracování tohoto příkazu, měl by vrátit prázdnou datovou část odpovědi s 202 kódem odpovědi HTTP, který indikuje, že zařízení přijalo požadavek na zpracování.

Až zařízení dokončí zpracování žádosti, měla by odeslat vlastnost IoT Central, která vypadá jako v následujícím příkladu. Název vlastnosti musí být stejný jako název příkazu:

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

Offline příkazy

Ve webovém uživatelském rozhraní IoT Central můžete vybrat frontu, pokud je pro příkaz offline možnost. Offline příkazy jsou jednosměrná oznámení na zařízení z vašeho řešení, které se doručuje hned po připojení zařízení. Příkazy offline můžou mít parametr požadavku, ale nevrátí odpověď.

Fronta, pokud není nastavení offline zahrnuto, pokud exportujete model nebo rozhraní ze šablony zařízení. Nemůžete říct tak, že si vyhledáte exportovaný model nebo rozhraní JSON, který je příkazem offline.

Offline příkazy používají IoT Hub zpráv z cloudu na zařízení k odeslání příkazu a datové části do zařízení.

Datová část zprávy, kterou zařízení obdrží, je nezpracovaná hodnota parametru. Vlastní vlastnost s názvem method-name ukládá název IoT Centralho příkazu. Následující tabulka ukazuje několik ukázkových datových částí:

Schéma žádosti IoT Central Ukázková datová část přijatá zařízením
Žádný parametr žádosti @
dvojité 1.23
Řetězec sample string
Objekt {"StartTime":"2021-01-05T08:00:00.000Z","Bank":2}

Následující fragment kódu z modelu zařízení zobrazuje definici příkazu. Příkaz obsahuje parametr objektu s polem DateTime a výčtem:

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

Pokud povolíte možnost fronta, pokud je v uživatelském rozhraní šablony zařízení pro příkaz v předchozím fragmentu kódu, bude zpráva, kterou zařízení obdrží, obsahovat následující vlastnosti:

Název vlastnosti Příklad hodnoty
custom_properties {'method-name': 'GenerateDiagnostics'}
data {"StartTime":"2021-01-05T08:00:00.000Z","Bank":2}

Další kroky

Teď, když jste se dozvěděli o šablonách zařízení, je k disIoT Central navržený další postup pro další informace o registraci zařízení v IoT Central a o tom, jak IoT Central zabezpečení připojení zařízení.