Как сообщить о телеметрии в IOTCentral? - PullRequest
0 голосов
/ 18 июня 2019

Я не могу понять, как сообщить телеметрию в IOTCentral.

Я создал шаблон устройства, добавил измерение телеметрии, имя поля «freeDiskSpace», максимальное значение 999999999999. Получил устройство, связанное с шаблоном. Запустил код устройства, но, глядя на устройство в Device Explorer IOTCentral, он говорит только «Отсутствуют данные».

Сначала я попробовал:

const upd = {};
upd.freeDiskSpace = info.available;
deviceTwin.properties.reported.update(upd, function (err) {

и в отладчике я увидел, что близнец получил данные

Got device twin
{ reported:
   { update: [Function: update],
     freeDiskSpace: 468716691456,
     '$version': 4 },

Но в IOTCentral ничего нет.

Потом я заметил, как они отправляли нужные свойства:

desired:
 { setCurrent: { value: 0 },

поэтому я попытался

const upd = {};
upd.freeDiskSpace = { value: info.available };
deviceTwin.properties.reported.update(upd, function (err) {

но все еще ничего в IOTCentral.

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Комментарий к другому вопросу указал мне на https://docs.microsoft.com/en-us/azure/iot-central/howto-connect-nodejs, который я так или иначе никогда не обнаруживал во всех моих поисках.Ключевым моментом является то, что телеметрия сообщается как событие, а не как сообщаемое свойство.Для меня это противоречит здравому смыслу, потому что я понимаю, что «событие» - это значимый инцидент, а «телеметрия» - непрерывные данные.Но это работает.Фрагмент кода по этой ссылке:

  var data = JSON.stringify({
    temperature: temperature,
    humidity: humidity,
    pressure: pressure,
    fanmode: (temperature > 25) ? "1" : "0",
    overheat: (temperature > 35) ? "ER123" : undefined });
  var message = new Message(data);
  client.sendEvent(message, (err, res) => 
0 голосов
/ 18 июня 2019

Вы должны использовать Свойство устройства , чтобы создать свойство IOTCentral, о котором сообщалось о двойнике вашего устройства, см. Следующий фрагмент экрана:

enter image description here

...