Получение информации об устройстве 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).