Uni-Meter项目中MQTT JSON主题路径配置指南
背景介绍
Uni-Meter是一个用于能源监控的开源项目,它支持通过MQTT协议从各种智能电表设备中采集数据。在实际部署中,正确配置MQTT主题和JSON路径对于数据采集至关重要。
JSON路径配置原理
在Uni-Meter的配置文件中,MQTT输入设备部分需要定义三个关键参数:
- 主题(topic):MQTT订阅的主题名称
- 通道(channel):数据分类(如总功率、总能耗等)
- JSON路径(json-path):从JSON消息中提取特定值的路径表达式
典型配置示例
以下是一个完整的配置示例,展示了如何从Tasmota设备采集电力数据:
uni-meter {
input-devices {
mqtt {
url = "tcp://192.168.0.202:1883"
username = "xxxx"
password = "xxxx"
power-phase-mode = "mono-phase"
energy-phase-mode = "mono-phase"
channels = [
{
type = "json"
topic = "tele/tasmota_65F460/SENSOR"
channel = "power-total"
json-path = "$.SM['16_7_0']"
},
{
type = "json"
topic = "tele/tasmota_65F460/SENSOR"
channel = "energy-consumption-total"
json-path = "$.SM['1_8_0']"
},
{
type = "json"
topic = "tele/tasmota_65F460/SENSOR"
channel = "energy-production-total"
json-path = "$.ESL['ESL']"
}
]
}
}
}
JSON路径解析详解
- 总功率(power-total):使用路径
$.SM['16_7_0']从SM对象中提取16_7_0字段的值 - 总能耗(energy-consumption-total):使用路径
$.SM['1_8_0']从SM对象中提取1_8_0字段的值 - 总发电量(energy-production-total):使用路径
$.ESL['ESL']从ESL对象中提取ESL字段的值
配置验证技巧
在配置JSON路径时,建议使用专业的JSON路径测试工具进行验证。将实际的MQTT消息内容和预期的路径表达式输入测试工具,可以直观地看到提取结果是否符合预期。
常见问题处理
- 路径表达式错误:确保使用正确的对象层级和字段名称
- 数据类型不匹配:注意数值是否需要缩放(通过scale参数)
- MQTT连接问题:检查URL、用户名和密码是否正确
通过以上配置,Uni-Meter可以正确地从Tasmota设备采集电力数据并进行监控分析。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



