从node-red-contrib-tasmota JSON获取Zigbee设备信息

问题描述

我刚开始在Sonarr Zigbee Bridge上使用Tasmota,并试图解释它吐出的数据。这是一个示例:

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

如何在不知道/使用设备编号(“ 0x11Fe”)的情况下在此处寻址信息-例如,我想获取设备名称,电源设置等。

我希望我可以做类似ZbReceived [1] .Name的操作,但这不起作用。

建议?

解决方法

您正在寻找的是Object.keys()函数(docs

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开始索引。