Telemetri, özellik ve komut yükleri

Cihaz modeli aşağıdakileri tanımlar:

  • Bir cihazın hizmete gönderdiği telemetri.
  • Bir cihazın bir hizmetle eşitlenen özellikleri.
  • Hizmetin bir cihazda çağıran komutlar.

İpucu

Azure IoT Central, Tak ve Kullan kurallarını izleyen bir hizmettir. IoT Central'da cihaz modeli bir cihaz şablonunun parçasıdır. IoT Central şu anda IoT Central uzantısına sahip DTDL v2'yi desteklemektedir. IoT Central uygulaması UTF-8 kodlanmış JSON verilerini almayı bekler.

Bu makalede, bir DTDL cihaz modelinde tanımlanan telemetri, özellikler ve komutlar için cihazların gönderdiği ve aldığı JSON yükleri açıklanmaktadır.

Makalede olası her tür telemetri, özellik ve komut yükü açıklanmaktadır, ancak örneklerde anahtar türleri gösterilmektedir.

Her örnek, cihazın IoT Central gibi Tak ve Kullan kullanan bir hizmetle nasıl etkileşim kurduğunu göstermek için cihaz modelinden tür ve örnek JSON yüklerini tanımlayan bir kod parçacığı gösterir.

Bu makaledeki örnek JSON kod parçacıkları Dijital İkiz Tanım Dili (DTDL) V2'yi kullanır. IoT Central'ın kullandığı bazı DTDL uzantıları da vardır.

Kullanımda olan bu yüklerden bazılarını gösteren örnek cihaz kodu için Linux veya Windows üzerinde çalışan örnek bir IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a Bağlan veya İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama öğreticisine bakın.

Ham verileri görüntüleme

IoT Central kullanıyorsanız, bir cihazın uygulamaya gönderdiği ham verileri görüntüleyebilirsiniz. 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:

    Screenshot that shows the raw data view.

    Bu görünümde, görüntülenecek sütunları seçebilir ve görüntülenecek bir zaman aralığı ayarlayabilirsiniz. Modellenmemiş veri sütunu, cihaz şablonundaki hiçbir özellik veya telemetri tanımıyla eşleşmeyen cihaz verilerini gösterir.

Daha fazla sorun giderme ipucu için bkz . Cihazlarınızdaki verilerin Neden Azure IoT Central'da görünmediğini giderme.

Telemetri

DTDL telemetri adlandırma kuralları hakkında daha fazla bilgi edinmek için bkz . DTDL > Telemetrisi. Karakteri kullanarak _ telemetri adı başlatamazsınız.

Aşağıdaki adlarla telemetri türleri oluşturmayın. IoT Central bu ayrılmış adları dahili olarak kullanır. Bu adları kullanmayı denerseniz IoT Central verilerinizi yoksayar:

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

Bileşenlerde telemetri

Telemetri bir bileşende tanımlanmışsa, cihaz modelinde tanımlandığı gibi bileşenin adıyla adlı $.sub özel bir ileti özelliği ekleyin. Daha fazla bilgi edinmek için bkz. Öğretici: birden çok bileşenli cihaz uygulaması IoT Tak Çalıştır Bağlan. Bu öğreticide, bir bileşenden telemetri göndermek için farklı programlama dillerinin nasıl kullanılacağı gösterilmektedir.

Önemli

IoT Edge modüllerinde barındırılan bileşenlerden gelen telemetri verilerini doğru görüntülemek için IoT Edge sürüm 1.2.4 veya üzerini kullanın. Önceki bir sürümü kullanıyorsanız, IoT Edge modüllerindeki bileşenlerinizden telemetri _unmodeleddata olarak görüntülenir.

Devralınan arabirimlerde telemetri

Telemetri devralınan bir arabirimde tanımlanmışsa, cihazınız telemetriyi kök arabirimde tanımlanmış gibi gönderir. Aşağıdaki cihaz modeli göz önünde bulundurulduğunda:

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

Cihaz aşağıdaki yükü kullanarak ölçüm gerilimi telemetrisi gönderir. Cihaz, yüke arabirim adını içermez:

{
    "MeterVoltage": 5.07
}

İlkel türler

Bu bölümde, bir cihazın akışla aktarabileceği temel telemetri türlerine örnekler gösterilir.

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını boolean gösterir:

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

Cihaz istemcisi telemetriyi aşağıdaki örneğe benzer şekilde JSON olarak göndermelidir:

{ "BooleanTelemetry": true }

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını string gösterir:

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

Cihaz istemcisi telemetriyi aşağıdaki örneğe benzer şekilde JSON olarak göndermelidir:

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

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını integer gösterir:

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

Cihaz istemcisi telemetriyi aşağıdaki örneğe benzer şekilde JSON olarak göndermelidir:

{ "IntegerTelemetry": 23 }

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını double gösterir:

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

Cihaz istemcisi telemetriyi aşağıdaki örneğe benzer şekilde JSON olarak göndermelidir:

{ "DoubleTelemetry": 56.78 }

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını dateTime gösterir:

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

Cihaz istemcisi telemetriyi aşağıdaki örneğe benzer şekilde JSON olarak göndermelidir- DateTime türler ISO 8061 biçiminde olmalıdır:

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

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını duration gösterir:

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

Cihaz istemcisi telemetriyi aşağıdaki örneğe benzer bir JSON olarak göndermelidir- süreler ISO 8601 biçiminde olmalıdır:

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

Karmaşık türler

Bu bölümde, bir cihazın akışla aktarabileceği karmaşık telemetri türleri örnekleri gösterilir.

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını Enum 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 telemetriyi aşağıdaki örneğe benzer şekilde JSON olarak göndermelidir. Olası değerler, , 1ve IoT Central'da , Item2ve Item3olarak Item1görüntülenen değerlerdir02:

{ "EnumTelemetry": 1 }

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını Object gösterir. Bu nesnenin , integerve Enumtürlerinde dateTimeüç alanı vardır:

{
  "@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 telemetriyi aşağıdaki örneğe benzer şekilde JSON olarak göndermelidir. DateTime türleri ISO 8061 uyumlu olmalıdır. için Property3 olası değerler, 1, ve IoT Central'da , Item2ve Item3olarak Item1görüntülenen değerlerdir0:

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

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını vector gösterir:

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

Cihaz istemcisi telemetriyi aşağıdaki örneğe benzer şekilde JSON olarak göndermelidir:

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

Bir cihaz modelinden alınan aşağıdaki kod parçacığı telemetri türünün tanımını geopoint gösterir:

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

Not

Coğrafi nokta şema türü, DTDL için IoT Central uzantısının bir parçasıdır. IoT Central şu anda geriye dönük uyumluluk için coğrafi nokta şema türünü ve konum semantik türünü desteklemektedir.

Cihaz istemcisi telemetriyi aşağıdaki örneğe benzer şekilde JSON olarak göndermelidir. IoT Central değeri bir haritada pin olarak görüntüler:

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

Olay ve durum türleri

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

Not

Olay ve durum şema türleri, DTDL için IoT Central uzantısının bir parçasıdır.

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, bir integer olay türünün tanımını gösterir:

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

Cihaz istemcisi olay verilerini aşağıdaki örneğe benzer bir JSON olarak göndermelidir:

{ "IntegerEvent": 74 }

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, durum türünün tanımını integer 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 örneğe benzer bir JSON olarak göndermelidir. Olası tamsayı durumu değerleri , 2veya 3şeklindedir1:

{ "IntegerState": 2 }

Özellikler

DTDL özellik adlandırma kuralları hakkında daha fazla bilgi edinmek için bkz . DTDL > Özelliği. Karakteri kullanarak _ bir özellik adı başlatamazsınız.

Bileşenlerdeki özellikler

Özellik bir bileşende tanımlanmışsa, özelliği bileşen adına sarmalar. Aşağıdaki örnek, bileşeninde öğesini thermostat2 ayarlarmaxTempSinceLastReboot. İşaretçi __t , bu bölümün bir bileşeni tanımladığını gösterir:

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

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

İlkel türler

Bu bölümde, bir cihazın hizmete gönderdiği temel özellik türlerine örnekler gösterilir.

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, özellik boolean türünün tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir:

{ "BooleanProperty": false }

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, özellik long türünün tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir:

{ "LongProperty": 439 }

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, özellik date türünün tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir. Date türleri ISO 8061 uyumlu olmalıdır:

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

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, özellik duration türünün tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir- süreler ISO 8601 Süre uyumlu olmalıdır:

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

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, özellik float türünün tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir:

{ "FloatProperty": 1.9 }

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, özellik string türünün tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir:

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

Karmaşık türler

Bu bölümde, bir cihazın hizmete gönderdiği karmaşık özellik türlerinin örnekleri gösterilir.

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, özellik Enum türünün 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 ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir. Olası değerler, , 1ve IoT Central'da , Item2ve Item3olarak Item1görüntülenen değerlerdir0:

{ "EnumProperty": 1 }

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, bir Object özellik türünün tanımını gösterir. Bu nesnenin türü string ve integerolan iki alanı vardır:

{
  "@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 ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir:

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

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, özellik vector türünün tanımını gösterir:

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

Cihaz istemcisi, cihaz ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir:

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

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, özellik geopoint türünün tanımını gösterir:

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

Not

Coğrafi nokta şema türü, DTDL için IoT Central uzantısının bir parçasıdır. IoT Central şu anda geriye dönük uyumluluk için coğrafi nokta şema türünü ve konum semantik türünü desteklemektedir.

Cihaz istemcisi, cihaz ikizinde bildirilen bir özellik olarak aşağıdaki örneğe benzer bir JSON yükü göndermelidir:

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

Yazılabilir özellik türleri

Bu bölümde, bir cihazın hizmetten aldığı yazılabilir özellik türlerine örnekler gösterilir.

Yazılabilir özellik bir bileşende tanımlanmışsa, istenen özellik iletisi bileşen adını içerir. Aşağıdaki örnek, cihazın bileşenindeki thermostat2 öğesini güncelleştirmesini targetTemperature isteyen iletiyi gösterir. İşaretçi __t , bu bölümün bir bileşeni tanımladığını gösterir:

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

Daha fazla bilgi edinmek için bkz. birden çok bileşenli cihaz uygulaması IoT Tak Çalıştır Bağlan.

Cihaz veya modül, bildirilen bir özellik göndererek özelliği aldığını onaylamalıdır. Bildirilen özellik şunları içermelidir:

  • value - özelliğin gerçek değeri (genellikle alınan değerdir, ancak cihaz farklı bir değer bildirmeye karar verebilir).
  • ac - HTTP durum kodu kullanan bir bildirim kodu.
  • av - istenen özelliğin başvuruda $version bulunan bir bildirim sürümü. Bu değeri istenen JSON yükü özelliğinde bulabilirsiniz.
  • ad - isteğe bağlı bir bildirim açıklaması.

Bu alanlar hakkında daha fazla bilgi edinmek için bkz. IoT Tak Çalıştır kuralları > Onay yanıtları

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

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

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

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

Cihaz, güncelleştirmeyi işledikten sonra hizmete aşağıdaki JSON yükünü göndermelidir. Bu ileti, hizmetten alınan özgün güncelleştirmenin sürüm numarasını içerir.

İpucu

Hizmet IoT Central ise, bu iletiyi aldığında özelliği kullanıcı arabiriminde eşitlendi olarak işaretler:

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

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

{
  "@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 hizmetten aşağıdaki yükü alır:

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

Cihaz, güncelleştirmeyi işledikten sonra hizmete aşağıdaki JSON yükünü göndermelidir. Bu ileti, hizmetten alınan özgün güncelleştirmenin sürüm numarasını içerir.

İpucu

Hizmet IoT Central ise, bu iletiyi aldığında özelliği kullanıcı arabiriminde eşitlendi olarak işaretler:

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

Komutlar

DTDL komut adlandırma kuralları hakkında daha fazla bilgi edinmek için bkz . DTDL > Komutu. Karakteri kullanarak _ bir komut adı başlatamazsınız.

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

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, parametresi olmayan ve cihazın herhangi bir şey döndürmesini beklemeyen bir komutun tanımını gösterir:

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

Cihaz istekte boş bir yük alır ve başarılı olduğunu belirtmek için http yanıt koduyla yanıtta boş bir 200 yük döndürmelidir.

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

{
  "@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. Cihaz, başarılı olduğunu göstermek için HTTP yanıt koduyla yanıt yükü olarak bir 200 tamsayı değeri döndürmelidir.

Bir cihaz modelinden alınan aşağıdaki kod parçacığı, nesne parametresine sahip olan ve cihazın bir nesne döndürmesini bekleyen bir komutun tanımını gösterir. Bu örnekte, her iki nesnenin de tamsayı ve dize 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ığı, cihaza gönderilen örnek istek yükünü gösterir:

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

Aşağıdaki kod parçacığı, cihazdan gönderilen örnek bir yanıt yükünü gösterir. Başarılı olduğunu belirtmek için HTTP 200 yanıt kodu kullanın:

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

İpucu

IoT Central'ın Uzun süre çalışan komutları ve Çevrimdışı komutları uygulamaya yönelik kendi kuralları vardır.

Sonraki adımlar

Cihaz yükleri hakkında bilgi edindiğinize göre, önerilen bir sonraki adım Cihaz geliştirici kılavuzunu okumaktır.