找回密码
 立即注册

微信扫码登录

搜索
查看: 1312|回复: 3

[技术讨论] 求助帖:各位大佬如何配置yaml,才能解析复杂JSON值

[复制链接]

1

主题

0

回帖

42

积分

新手上路

积分
42
金钱
41
HASS币
0
发表于 2024-12-25 14:24:56 | 显示全部楼层 |阅读模式
本帖最后由 wupeng 于 2024-12-25 14:40 编辑

各位大佬大家好,最近一直在配置yaml对接MQTT传感器,看了很多官方的文档但是遇到一个困难
在读取简单结构的JSON时,可以直接value_json.XXX 官方的文档如下。

https://www.home-assistant.io/integrations/sensor.mqtt/
{
    "ClientName": <string>,
    "IP": <string>,
    "MAC": <string>,
    "RSSI": <string>,</font>
    "HostName": <string>,
    "ConnectedSSID": <string>
}
使用直接取值的格式:value_json.XXX
# Example configuration.yaml entry
mqtt:
   sensor:
   - name: "RSSI"
     state_topic: "home/sensor1/infojson"
     unit_of_measurement: "dBm"
    value_template: "{{ value_json.RSSI }}"</font>
     availability:
        - topic: "home/sensor1/status"
      payload_available: "online"
      payload_not_available: "offline"
      json_attributes_topic: "home/sensor1/attributes"
获取嵌套的JSON时,
{
    "Timer1": {
              "Arm": <status>,</font>
              "Time": <time>
              },
    "Timer2": {
            "Arm": <status>,</font>
            "Time": <time>
             }
}
使用取值并嵌套的模式:value_json.XXX.XXX
# Example configuration.yaml entry
mqtt:
  sensor:
      - name: "Timer 1"
          state_topic: "tele/sonoff/sensor"
          value_template: "{{ value_json.Timer1.Arm }}"</font>
          son_attributes_topic: "tele/sonoff/sensor"
          json_attributes_template: "{{ value_json.Timer1 | tojson }}"

    - name: "Timer 2"
      state_topic: "tele/sonoff/sensor"
      value_template: "{{ value_json.Timer2.Arm }}"</font>
      json_attributes_topic: "tele/sonoff/sensor"
      json_attributes_template: "{{ value_json.Timer2 | tojson }}"
但是如果遇到复杂的JSON,多层嵌套并含有数组时,该如何配置文件读取深层嵌套的值
value_template: "{{?????????}}"
例如:如何配置value_template能够取到下列meter数组中嵌套的,两个Uab值。
{
     "time": "2024-12-24 14:20:00",
    "sequence": "38",
    "source": "da",
    "meter": [
      
                      {
                           "id": "1",
                           "status": "1",
                           "values": {
                                            "Uab": "220.000000",</font>
                                             "Ia": "0.000000",
                                             "P": "0.000000"
                                         }
                       },
                      {
                           "id": "2",
                           "status": "2",
                           "name": "VrtDev1",
                           "values": {
                                            "Uab": "220.000000",</font>
                                             "Ia": "0.000000",
                                             "P": "0.000000"
                                           }
                       }
      
             ]
  }
翻阅了很多文档和资料都是针对简单JSON的配置,实在没办法发帖求助。
希望配置过的朋友能够指点迷津。
aaqa.jpg







回复

使用道具 举报

jjcs 手机认证

58

主题

2074

回帖

8503

积分

论坛元老

积分
8503
金钱
6361
HASS币
50
发表于 2024-12-25 14:41:27 | 显示全部楼层
用nodered
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

5

主题

90

回帖

380

积分

中级会员

积分
380
金钱
285
HASS币
0
发表于 昨天 16:04 | 显示全部楼层
你这复炸呀,
我现在是想显示ip这些属性 显示不了.不知道什么问题
回复

使用道具 举报

19

主题

360

回帖

2524

积分

论坛DIY达人

积分
2524
金钱
2135
HASS币
40
发表于 昨天 17:18 | 显示全部楼层
nodered里面数组一般是用索引来表示,比如你上面这个想获取meter里面第一个值里面的,应该就是value_json.meter[0].values.Uab,当然template是不是这样我不知道
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-12-5 05:08 , Processed in 0.090285 second(s), 14 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表