Получение информации об устройстве Zigbee из node-red-contrib-tasmota JSON

Я только начинаю работать с Tasmota на Sonarr Zigbee Bridge и пытаюсь интерпретировать данные, которые он выплевывает. Вот пример:

{
  "ZbReceived": {
    "0x11FE": {
      "Device": "0x11FE",
      "Name": "DoorContact",
      "Power": 1,
      "Endpoint": 1,
      "LinkQuality": 147
    }
  }
}

Как мне обратиться к информации здесь, не зная / не используя номер устройства ("0x11Fe") - например, я хочу получить имя устройства, настройки мощности и т. Д.

Я надеялся, что смогу сделать что-то вроде ZbReceived[1].Name, но это не сработало.

Предложения?

1 ответ

Вы ищете Object.keys()функция (документы)

var devices = Object.keys(msg.payload);
var name = msg.payload[devices[0]].Name;
var power = msg.payload[devices[0]].Power;

Object.keys(obj) возвращает и массив всех ключей в объект JSON (на один уровень в глубину), так как мы знаем, что есть только один ключ в msg.payload мы можем получить к нему доступ в слоте 0 (массивы всегда индексируются с 0).

Другие вопросы по тегам