Создать датчик с SensorDataUnitType
Я пытаюсь создать новое устройство с датчиком (ами).
Это полезная нагрузка, которую я отправляю для создания нового устройства:
{"Name":"DeviceABC","HardwareId":"D4xxx425","SpaceId":"xxxx-xxx-xx-xx-xxx","Status":"Provisioned","CreateIoTHubDevice":false,"Properties":[{"Name":"VendorName","Value":"MyVendor"},{"Name":"VendorDeviceId","Value":"D4xxx19425"},{"Name":"VendorDeviceType","Value":"electricity"}],"Sensors":[{"pollRate":0,"id":null,"dataType":"Json","dataUnitType":"KilowattHourEnergy","deviceId":null,"portType":null,"port":"electricity","spaceId":null,"type":"Classic"}]}
В этом случае я хочу использовать встроенный тип. кВт.ч
{
"id": 186,
"category": "SensorDataUnitType",
"name": "KilowattHourEnergy",
"disabled": false,
"logicalOrder": 0,
"friendlyName": "kWh"
}
SensorDataType - это:
{
"id": 314,
"spaceId": "xxxx-xx-xxx-xx-xxxx",
"category": "SensorDataType",
"name": "Json",
"disabled": false,
"logicalOrder": 0
}
Когда я делаю это для других устройств без указания dataUnitType в объекте датчика, он работает нормально. Но как только я включаю это, я получаю это:
{
"error": {
"code": "400.600.000.000",
"message": "Invalid datatype/dataunittype combination used on sensor."
}}
1 ответ
Кажется, существует соглашение об именовании между SensorDataType и SensorDataUnitType. Соглашение состоит в том, что SensorDataUnitType должен заканчиваться полным SensorDataType. В вашем примере у вас есть:
"dataType":"Json",
"dataUnitType":"KilowattHourEnergy",
Но согласно конвенции это должно быть
"dataType":"Json",
"dataUnitType":"KilowattHourEnergyJson",
Конечно, вы не можете просто изменить KilowattHourEnergy, потому что это системная онтология. Поэтому, чтобы заставить его работать, мне нужно было создать KilowattHourEnergyJson как новый тип.
Я предполагаю, что наиболее полный ответ будет включать, что в вашем случае SensorDataType, вероятно, не должен быть JSON, но должен быть Energy.