uni-meter项目中SHRDZM智能电表与Hoymiles MS-A2的数据对接问题解析
项目背景
uni-meter是一个开源的电能监测项目,能够集成多种智能电表设备,实现电能数据的采集、处理和转发。在实际应用中,用户经常需要将不同品牌的智能电表数据整合到一个统一的监控系统中。
问题现象
在使用uni-meter v1.1.4版本时,用户尝试将SHRDZM智能电表通过UDP协议接入系统,并期望将数据转发至Hoymiles MS-A2逆变器。配置完成后发现Hoymiles MS-A2接收到的电能数据与预期不符,特别是电网数据和三相(A-C相)数据缺失。
配置分析
用户的uni-meter配置文件显示:
- 输入设备配置为SHRDZM智能电表,监听UDP端口9522
- 输出设备配置为ShellyPro3EM,通过MAC地址A4EECDBC799F识别设备
从技术角度看,配置结构本身没有问题,符合uni-meter的标准配置格式。
排查过程
-
网络抓包分析:通过Wireshark抓包确认SHRDZM电表确实在发送数据,且数据格式正确。
-
系统状态检查:uni-meter的状态页面显示服务运行正常,但数据接收不完整。
-
应用对比:与S-Miles Home官方应用显示的数据进行对比,确认数据差异。
-
日志调试:启用uni-meter的DEBUG级别日志,发现实际接收到的UDP数据与预期不符。
根本原因
经过深入排查,发现问题根源在于端口配置不匹配:
- SHRDZM电表实际使用的UDP端口与uni-meter配置中指定的监听端口不一致
- 这种不匹配导致uni-meter无法正确接收电表发送的全部数据
解决方案
-
端口统一:确保SHRDZM电表的发送端口与uni-meter的监听端口完全一致。
-
日志验证:修改配置后,通过DEBUG日志确认数据接收情况:
<logger name="uni-meter.input" level="DEBUG" additivity="false"> <appender-ref ref="STDOUT" /> </logger> -
网络配置检查:特别是在虚拟化环境中,需要确认:
- 虚拟机网络模式(桥接/NAT)
- 端口转发规则
- 防火墙设置
经验总结
-
在智能电表系统集成中,端口一致性是最常见但也最容易忽视的配置项。
-
虚拟化环境下的网络配置需要特别注意,建议:
- 使用桥接模式确保网络连通性
- 检查宿主机防火墙规则
- 验证端口映射是否正确
-
uni-meter的DEBUG日志是排查数据接收问题的有力工具,建议在集成初期就启用详细日志。
-
对于多设备集成系统,建议采用分步验证法:
- 先验证单设备数据采集
- 再验证数据传输
- 最后验证整个系统功能
通过这次问题排查,我们再次认识到在IoT系统集成中,基础网络配置的重要性。即使是简单的端口不匹配,也可能导致看似复杂的数据异常现象。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



