Telemetri, özellik ve komut yükleri

Azure IoT Central cihaz şablonu şunları tanımlayan bir şemadır:

  • Bir cihazın cihaza gönderdiği telemetri IoT Central.
  • Bir cihazın bir cihazla eşitlenen özellikleri IoT Central.
  • Bir IoT Central çağıran komutlar.

Bu makalede, cihazların bir cihaz şablonunda tanımlanan telemetri verileri, özellikler ve komutlar için gönder ve alabilecekleri JSON yükü açıklanmıştır.

Makalede olası her telemetri türü, özellik ve komut yükü açık değildir, ancak örneklerde tüm anahtar türleri açıklanmıştır.

Her örnek, cihazın uygulamayla nasıl etkileşim kurması gerektiğini göstermek için tür ve örnek JSON yüklerini tanımlayan cihaz modelinden IoT Central gösterir.

Not

IoT Central JSON kabul eder ancak yalnızca cihaz modelinde bir tanım ile eşleştirilmesi durumda görselleştirmeler için kullanılabilir. Bir tanımla eşleşmeen verileri dışarı aktarabilirsiniz. Bkz. IoT verilerini Azure'daki hedeflere dışarı aktarma.

Cihaz modelini tanımlayan JSON dosyası Dijital İkiz Tanımlama Dili (DTDL) v2 kullanır.

Bu yüklerden bazılarının kullanımda olduğunu gösteren örnek cihaz kodu için İstemci uygulaması oluşturma ve uygulamanıza bağlama Azure IoT Central bakın.

Ham verileri görüntüleme

IoT Central, bir cihazın uygulamaya gönderdiği ham verileri görüntülemenizi sağlar. Bu görünüm, bir cihazdan gönderilen yükle ilgili sorunları gidermek için kullanışlıdır. Bir cihazın gönderdiği ham verileri görüntülemek için:

  1. Cihazlar sayfasından cihaza gidin.

  2. Ham veri sekmesini seçin:

    Ham veri görünümü

    Bu görünümde, görüntülemek istediğiniz sütunları seçin ve görüntülemek için bir zaman aralığı ayarlayın. Modelsiz veri sütunu, cihaz şablonunda herhangi bir özellik veya telemetri tanımıyla eşleşmemiş olan cihaz verilerini gösterir.

Telemetri

Bileşenlerde telemetri

Telemetri bir bileşende tanımlanmışsa, cihaz modelinde tanımlandığı şekilde bileşenin adıyla adlı $.sub özel bir ileti özelliği ekleyin. Daha fazla bilgi edinmek için bkz. Öğretici: İstemci uygulaması oluşturma ve uygulamanıza Azure IoT Central bağlama.

İlkel türler

Bu bölümde, bir cihazın bir IoT Central uygulamasına akışla aktaran ilkel telemetri türlerine örnekler verilmiştir.

Cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün boolean tanımını gösterir:

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

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON olarak göndersin:

{ "BooleanTelemetry": true }

Cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün string tanımını gösterir:

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

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON olarak göndersin:

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

Cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün integer tanımını gösterir:

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

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON olarak göndersin:

{ "IntegerTelemetry": 23 }

Cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün double tanımını gösterir:

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

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON olarak göndersin:

{ "DoubleTelemetry": 56.78 }

Cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün dateTime tanımını gösterir:

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

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON biçiminde gönderse de türler DateTime ISO 8061 biçiminde olmalıdır:

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

Cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün duration tanımını gösterir:

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

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON biçiminde gönderse de süreler ISO 8601 biçiminde olmalıdır:

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

Karmaşık türler

Bu bölümde, bir cihazın bir IoT Central uygulamasına akışla aktaran karmaşık telemetri türlerine örnekler verilmiştir.

Cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün geopoint tanımını gösterir:

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

Not

Coğrafi nokta şema türü, Tanım Dili belirtim Digital Twins parçası değildir. IoT Central şu anda geriye dönük uyumluluk için coğrafi nokta şema türünü ve konum semantik türünü destekler.

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON olarak göndersin. IoT Central değeri bir haritada pin olarak görüntüler:

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

Cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün Enum tanımını gösterir:

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

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON olarak göndersin. Olası değerler 0 , ve , ve olarak IoT Central , ve 1 2 Item1 Item2 Item3 değerleridir:

{ "EnumTelemetry": 1 }

Bir cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün Object tanımını gösterir. Bu nesne , ve dateTime türlerine sahip integer üç alan Enum içerir:

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

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON olarak göndersin. DateTime türler ISO 8061 uyumlu olmalıdır. için olası Property3 değerler , ve , ve olarak IoT Central olarak 0 1 Item1 Item2 Item3 görüntülenir:

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

Cihaz modelinden gelen aşağıdaki kod parçacığı, telemetri türünün vector tanımını gösterir:

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

Cihaz istemcisi telemetri verileri aşağıdaki örnekte olduğu gibi JSON olarak göndersin:

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

Olay ve durum türleri

Bu bölümde telemetri olaylarının örnekleri ve bir cihazın bir cihaz uygulamasına gönderdiği IoT Central gösterir.

Cihaz modelinden gelen aşağıdaki kod parçacığı, olay türünün integer tanımını gösterir:

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

Cihaz istemcisi, olay verilerini aşağıdaki örnekte olduğu gibi JSON olarak göndermeli:

{ "IntegerEvent": 74 }

Cihaz modelinden gelen aşağıdaki kod parçacığı, durum türünün integer tanımını gösterir:

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

Cihaz istemcisi durumu aşağıdaki örnekte olduğu gibi JSON olarak göndersin. Olası tamsayı durumu değerleri 1 , 2 veya 3 değerleridir:

{ "IntegerState": 2 }

Özellikler

Not

Özelliklerin yük biçimleri 14.07.2020 veya sonrasında oluşturulan uygulamalar için geçerlidir.

Bileşenlerde özellikler

Özellik bir bileşende tanımlanmışsa, özelliği bileşen adına sarmalar. Aşağıdaki örnek, maxTempSinceLastReboot bileşeninde 'i thermostat2 ayarlar. __tİşaretçi, bunun bir bileşen olduğunu gösterir:

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

Daha fazla bilgi edinmek için bkz. Öğretici: İstemci uygulaması oluşturma ve uygulamanıza Azure IoT Central bağlama.

İlkel türler

Bu bölümde, bir cihazın bir IoT Central uygulamasına gönderdiği ilkel özellik türleri örnekleri verilmiştir.

Cihaz modelinden gelen aşağıdaki kod parçacığı, bir özellik türünün boolean tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinin bildirilen özelliği olarak aşağıdaki örnekteki gibi görünen bir JSON yükü göndermesi gerekir:

{ "BooleanProperty": false }

Cihaz modelinden gelen aşağıdaki kod parçacığı, bir özellik türünün long tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinin bildirilen özelliği olarak aşağıdaki örnekteki gibi görünen bir JSON yükü göndermesi gerekir:

{ "LongProperty": 439 }

Cihaz modelinden gelen aşağıdaki kod parçacığı, bir özellik türünün date tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinin bildirilen özelliği olarak aşağıdaki örnekteki gibi görünen bir JSON yükü göndermektedir. Date türler ISO 8061 uyumlu olmalıdır:

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

Cihaz modelinden gelen aşağıdaki kod parçacığı, bir özellik türünün duration tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinin bildirilen özelliği olarak aşağıdaki örnekte olduğu gibi görünen bir JSON yükü göndermeli; süreler ISO 8601 Süre uyumlu olmalıdır:

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

Cihaz modelinden gelen aşağıdaki kod parçacığı, bir özellik türünün float tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinin bildirilen özelliği olarak aşağıdaki örnekteki gibi görünen bir JSON yükü göndermesi gerekir:

{ "FloatProperty": 1.9 }

Cihaz modelinden gelen aşağıdaki kod parçacığı, bir özellik türünün string tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinin bildirilen özelliği olarak aşağıdaki örnekteki gibi görünen bir JSON yükü göndermesi gerekir:

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

Karmaşık türler

Bu bölümde, bir cihazın bir IoT Central uygulamasına gönderdiği karmaşık özellik türleri örnekleri verilmiştir.

Cihaz modelinden gelen aşağıdaki kod parçacığı, bir özellik türünün geopoint tanımını gösterir:

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

Not

Coğrafi nokta şema türü, Tanım Dili belirtim Digital Twins parçası değildir. IoT Central şu anda geriye dönük uyumluluk için coğrafi nokta şema türünü ve konum semantik türünü destekler.

Cihaz istemcisi, cihaz ikizinin bildirilen özelliği olarak aşağıdaki örnekteki gibi görünen bir JSON yükü göndermesi gerekir:

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

Cihaz modelinden gelen aşağıdaki kod parçacığı, bir özellik türünün Enum tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinin bildirilen özelliği olarak aşağıdaki örnekteki gibi görünen bir JSON yükü göndermektedir. Olası değerler 0 , , ve şeklinde IoT Central olarak 1 Item1 Item2 Item3 görüntülenir:

{ "EnumProperty": 1 }

Bir cihaz modelinden gelen aşağıdaki kod parçacığı, bir özellik türünün Object tanımını gösterir. Bu nesne ve türlerine sahip iki alan string integer içerir:

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

Cihaz istemcisi, cihaz ikizinin bildirilen özelliği olarak aşağıdaki örnekteki gibi görünen bir JSON yükü göndermesi gerekir:

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

Bir cihaz modelinden aşağıdaki kod parçacığında bir vector özellik türünün tanımı gösterilmektedir:

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

Bir cihaz istemcisi, cihaz ikizi bildirilen bir özellik gibi aşağıdaki örnek gibi görünen bir JSON yükü göndermelidir:

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

Yazılabilir Özellik türleri

Bu bölümde, bir cihazın IoT Central uygulamasından aldığı yazılabilir Özellik türlerinin örnekleri gösterilmektedir.

Yazılabilir özelliği bir bileşende tanımlanmışsa, istenen özellik iletisi bileşen adını içerir. Aşağıdaki örnek, cihazdaki öğesini güncelleştirmek için cihazı isteyen iletiyi gösterir targetTemperature thermostat2 . İşaretleyici, __t Bu bileşenin şu şekilde olduğunu gösterir:

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

Daha fazla bilgi edinmek için bkz. öğretici: Azure IoT Central uygulamanıza istemci uygulaması oluşturma ve bağlama.

IoT Central cihazdan yazılabilir Özellik güncelleştirmelerine yanıt bekliyor. Yanıt iletisi ac ve av alanlarını içermelidir. ad alanı isteğe bağlıdır. Örnekler için aşağıdaki kod parçacıklarına bakın.

ac , aşağıdaki tablodaki değerleri kullanan sayısal bir alandır:

Değer Etiketle Description
'ac': 200 Tamamlandı Özellik değiştirme işlemi başarıyla tamamlandı.
'ac': 202 veya 'ac': 201 Beklemede Özellik değiştirme işlemi bekliyor veya devam ediyor
'ac': 4xx Hata İstenen özellik değişikliği geçerli değil veya bir hata oluştu
'ac': 5xx Hata Cihaz, istenen değişikliği işlerken beklenmeyen bir hatayla karşılaştı.

av cihaza gönderilen sürüm numarasıdır.

ad , bir seçenek dize açıklamasıdır.

Bir cihaz modelinden aşağıdaki kod parçacığında yazılabilir string özellik türünün tanımı gösterilmektedir:

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

Cihaz IoT Central aşağıdaki yükü alır:

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

Cihaz, güncelleştirmeyi tamamladıktan sonra IoT Central aşağıdaki JSON yükünü göndermelidir. Bu ileti, IoT Central alınan özgün güncelleştirmenin sürüm numarasını içerir. IoT Central bu iletiyi aldığında, özelliği Kullanıcı arabiriminde eşitlenmiş olarak işaretler:

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

Bir cihaz modelinden aşağıdaki kod parçacığında yazılabilir Enum özellik türünün tanımı gösterilmektedir:

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

Cihaz IoT Central aşağıdaki yükü alır:

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

Cihaz, güncelleştirmeyi tamamladıktan sonra IoT Central aşağıdaki JSON yükünü göndermelidir. Bu ileti, IoT Central alınan özgün güncelleştirmenin sürüm numarasını içerir. IoT Central bu iletiyi aldığında, özelliği Kullanıcı arabiriminde eşitlenmiş olarak işaretler:

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

Komutlar

Komut bir bileşende tanımlanmışsa, cihazın aldığı komutun adı bileşen adını içerir. Örneğin, komut çağrılırsa getMaxMinReport ve bileşen çağrılırsa thermostat2 , cihaz adlı bir komutu yürütmek için bir istek alır thermostat2*getMaxMinReport .

Bir cihaz modelinden aşağıdaki kod parçacığında, parametresi olmayan ve cihazın herhangi bir şeyi döndürmesini beklemediği bir komutun tanımı gösterilmektedir:

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

Cihaz, istekte boş bir yük alır ve 200 başarıyı göstermek için http yanıt kodu ile yanıtta boş bir yük döndürmelidir.

Bir cihaz modelinden aşağıdaki kod parçacığında, bir tamsayı parametresi olan ve cihazın bir tamsayı değeri döndürmesini bekleyen bir komutun tanımı gösterilmektedir:

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

Cihaz, istek yükü olarak bir tamsayı değeri alır. Bu cihaz, 200 başarıyı göstermek için bir http yanıt kodu ile yanıt yükü olarak bir tamsayı değeri döndürmelidir.

Bir cihaz modelinden aşağıdaki kod parçacığında, bir nesne parametresi olan ve cihazın bir nesne döndürmesini bekleyen bir komutun tanımı gösterilmektedir. Bu örnekte, her iki nesnenin de Integer ve String alanları vardır:

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

Aşağıdaki kod parçacığında cihaza gönderilen örnek bir istek yükü gösterilmektedir:

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

Aşağıdaki kod parçacığında cihazdan gönderilen örnek bir yanıt yükü gösterilmektedir. 200Başarıyı göstermek için bir http yanıt kodu kullanın:

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

Uzun süre çalışan komutlar

Bir cihaz modelinden aşağıdaki kod parçacığında bir komutun tanımı gösterilmektedir. Komutun bir tamsayı parametresi vardır ve cihazın bir tamsayı değeri döndürmesini bekler:

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

Cihaz, istek yükü olarak bir tamsayı değeri alır. Cihazın bu komutu işlemesi için zaman ihtiyacı varsa, 202 cihazın işleme isteğini kabul ettiğini göstermek için bir http yanıt koduyla boş bir yanıt yükü döndürmelidir.

Cihaz isteği işlemeyi tamamladığında, aşağıdaki örnek gibi görünen IoT Central bir özellik göndermelidir. Özellik adı, komut adıyla aynı olmalıdır:

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

Çevrimdışı komutlar

IoT Central Web Kullanıcı arabiriminde, bir komut için çevrimdışı seçeneğini belirleyebilirsiniz. Çevrimdışı komutlar, bir cihazın bağlanması halinde teslim edilen çözümünüzde cihaza tek yönlü bildirimlerdir. Çevrimdışı komutların istek parametresi olabilir, ancak yanıt döndürmez.

Cihaz şablonundan bir modeli veya arabirimi dışa aktardığınızda, çevrimdışıyken sıra ayarı dahil değildir. Bir komutun çevrimdışı bir komut olduğu, dışarıya aktarılmış bir modele veya Interface JSON 'a bakarak bilgi alamazsınız.

Çevrimdışı komutlar, cihaza komut ve yük göndermek için buluttan cihaza iletileri IoT Hub kullanır.

Cihazın aldığı iletinin yükü, parametrenin ham değeridir. Adlı özel bir özellik method-name IoT Central komutunun adını depolar. Aşağıdaki tabloda bazı örnek yükleri gösterilmektedir:

IoT Central isteği şeması Cihaz tarafından alınan örnek yük
İstek parametresi yok @
Çift 1.23
Dize sample string
Nesne {"StartTime":"2021-01-05T08:00:00.000Z","Bank":2}

Bir cihaz modelinden aşağıdaki kod parçacığında bir komutun tanımı gösterilmektedir. Komutun bir tarih saat alanı ve sabit listesi içeren bir nesne parametresi vardır:

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

Önceki kod parçacığında komut için cihaz şablonu Kullanıcı arabiriminde bu sırayı etkinleştirirseniz, cihazın aldığı ileti aşağıdaki özellikleri içerir:

Özellik adı Örnek değer
custom_properties {'method-name': 'GenerateDiagnostics'}
data {"StartTime":"2021-01-05T08:00:00.000Z","Bank":2}

Sonraki adımlar

Cihaz şablonları hakkında bilgi edindiğinize göre, bir sonraki adım, cihazların IoT Central nasıl kaydedileceği ve cihaz bağlantılarının güvenliğini IoT Central sağlama hakkında daha fazla bilgi edinmek için Azure IoT Central 'ye bağlanma konusunu okuduğunuzdan emin olun.