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:
Cihazlar sayfasından cihaza gidin.
Ham veri sekmesini seçin:
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, , 1
ve IoT Central'da , Item2
ve Item3
olarak Item1
görüntülenen değerlerdir0
2
:
{ "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 , integer
ve Enum
tü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 , Item2
ve Item3
olarak Item1
gö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.
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 , 2
veya 3
şeklindedir1
:
{ "IntegerState": 2 }
Properties
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, , 1
ve IoT Central'da , Item2
ve Item3
olarak Item1
gö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 integer
olan 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*getMaxMinReport
bir 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.