0

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

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

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

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

建议?

4

1 回答 1

0

您正在寻找的是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 开始索引)。

于 2020-09-23T18:01:03.993 回答