你好
我面临一个问题不能从MQTT传感器得到有效载荷值
我的有效载荷如下:

21:27:19 RSL: Energy/tele/SENSOR = {" Time ": " 2019-12-01T21:27:19 ", " Energy ":{" TotalStartTime ": " 2019-08-17T11:47:41 ", " Total ":48.812, " Yesterday ":11.081, " Today ":4.948, " Period ":0, " Power ":141, " analytpower ":278, " ReactivePower ":239, " Factor ":0.51, " Frequency ":51, " Voltage ":223, " Current ":1.249}}

我需要单独提取每个值
有人能帮我吗?

当它被格式化后查看它时更容易思考。我刚把它插入了这个网站

{“时间”:“2019-12-01T21:27:19”,“能量”:{“TotalStartTime”:“2019-08-17T11:47:41”,“Total”:48.812,“Yesterday”:11.081,“Today”:4.948,“Period”:0,“Power”:141,“analytpower”:278,“ReactivePower”:239,“Factor”:0.51,“Frequency”:51,“Voltage”:223,“Current”:1.249}}

所以你可以在模板中使用类似这样的东西来访问这些值:

{{value_json。时间}}

{{value_json.ENERGY。TotalStartTime}}

取值区分大小写。

2喜欢

奇怪的是,我这么做了,但还是没有得到数据

  • 平台:mqtt
    名称:“电压”
    state_topic:“能源/电视/传感器”
    value_template: {{value_json.ENERGY。电压}}’

读到这

斯特兰奇还是没查到家庭助理的数据19463331伟德国际
代理日志是:
1575313374:端口1883上192.168.1.113的新连接。
[INFO]在本地数据库中找到leback
1575313375:新的客户端连接192.168.1.113作为EM (p2, c1, k15, u ' user ')。
1575313535:保存内存中的数据库到/data/ mosquito到.db。

tasmota的日志如下:
20:31:39 RSL: tasmota/tele/SENSOR = {" Time ": " 2019-12-02T20:31:39 ", " ENERGY ":{" TotalStartTime ": " 2019-08-17T11:47:41 ", " Total ":55.367, " Yesterday ":5.435, " Today ":6.068, " Period ":1, " Power ":223, " Current ":373, " ReactivePower ":300, " Factor ":0.60, " Frequency ":51, " Voltage ":222, " Current ":1.680}}
20:31:42 RSL:tasmota/tele/HASS_STATE = {" Version ": " 7.1.0(tasmota) ", " BuildDateTime ": " 2019-11-30T20:52:32 ", " Core ": " 2_6_2 ", " SDK ": " 2.2.1(cfd48f3) ", " Module ": " Generic ", " RestartReason ": " Software/System restart ", " Uptime ": " 0T00:28:55 ", " WiFi LinkCount ":1, " WiFi停机时间”:“0 t00:00:06”、“MqttCount”:1、“BootCount”:143年,“SaveCount”:198年,“IPAddress”:“192.168.1.113”、“RSSI”:“66”、“LoadAvg”:19}
20:31:49 RSL: tasmota /电视/状态={“时间”:“2019 - 12 - 02 t20:31:49”、“运行时间”:“0 t00:29:02”、“UptimeSec”:1742年,“堆”:25岁的“SleepMode”:“动态”、“睡眠”:50岁“LoadAvg”:19日“MqttCount”:1、“无线”:{“美联社”:1、“名称”:“Hackerz-Gate”、“BSSId”:“D8: EB: 97:25:19:50”、“渠道”:1、“RSSI”:66年,“LinkCount”:1、“停机”:“0”t00:00:06}}
2

配置文件如下所示:

  • 平台:mqtt
    名称:“权力”
    state_topic:“tasmota /电视/传感器”
    value_template: {{value_json[" ENERGY "][" Yesterday "]}} '
    unit_of_measurement:“度”

  • 平台:mqtt
    名称:“Sonoff_PowerFactor”
    state_topic:“tasmota /电视/传感器”
    value_template: {{value_json(“能源”)(“电压”)}}”

  • 平台:mqtt
    名称:“战俘电流”
    state_topic:“tasmota /电视/传感器”
    value_template: {{value_json(“能源”)。当前}}’
    unit_of_measurement:“放大器”

  • 平台:mqtt
    名称:“战俘力量”
    state_topic:“tasmota /电视/传感器”
    value_template: {{value_json(“能源”)。权力}}’
    unit_of_measurement:“瓦”

  • 平台:mqtt
    名称:“战俘电压”
    state_topic:“tasmota /电视/传感器”
    value_template: {{value_json(“能源”)。电压}}’
    unit_of_measurement:‘伏’

这可能看起来微不足道,但当YAML和日志不是以保留空白的等宽字体显示时,真的很难检查它们。你能不能在复制粘贴的内容前后用三个反勾号环绕在它们自己的行上?

请阅读这篇文章:

我认为我的问题是在tasmota日志中获得RSL而不是MQT
这意味着没有连接到代理

您能否从应用程序或命令行而不是从tasmota本身监视mqtt消息?这将证实这个理论。

mqtt是否为该设备正确配置?

这是我的设置

我的控制台

图像

—platform: mqtt name: "Washing Power" state_topic: "tele/SONOFF-POW1/SENSOR" value_template: "{{value_json['ENERGY']。Power}}" qos: 1 unit_of_measurement: "W" - platform: mqtt name: "Washing Current" state_topic: "tele/SONOFF-POW1/SENSOR" value_template: "{{value_json['ENERGY']. "Current}}" qos: 1 unit_of_measurement: "A" - platform: mqtt name: "Washing Energy Today" state_topic: "tele/SONOFF-POW1/SENSOR" value_template: "{{value_json[' Energy ']. "今天}}" qos: 1 unit_of_measurement: "kWh"
1像

史蒂夫,你的建议也很好,我也用https://jsonformatter.org对于一些高级操作,如验证和将json转换为xml, CSV和更多。