uni-meter项目:解决Hoymiles MS A2与Shelly电表集成问题
背景介绍
在光伏发电系统中,将电池存储系统与现有光伏系统集成是一个常见需求。uni-meter作为一款开源软件,能够实现智能电表与Hoymiles逆变器之间的通信转换,特别适用于那些已经拥有带红外读数的智能电表但需要与Hoymiles系统集成的场景。
问题现象
用户在使用uni-meter 1.1.2-UDP版本时遇到了集成问题。具体表现为:
- Hoymiles MS A2无法自动发现uni-meter设备
- 手动添加设备时,虽然能观察到两个RPC请求(rpcGetDeviceInfo和em.getconfig)被正确处理,但随后连接中断
- 应用最终显示"设备未找到"的错误提示
技术分析
从日志分析可以看出,系统初始化过程正常,HTTP服务器成功启动并监听80端口。两个关键RPC请求的处理也看似正确:
- Shelly.GetDeviceInfo请求返回了设备信息,包括设备ID、MAC地址、型号和固件版本等
- EM.GetConfig请求返回了电表配置,包括名称、相位选择器和CT类型等
然而,连接在第二个请求后中断,这表明可能存在以下问题:
- mDNS服务发现机制:Hoymiles设备通常通过mDNS服务发现来定位Shelly设备。在跨网段环境中,mDNS广播可能无法正常工作
- 响应数据格式:Hoymiles设备对JSON响应的属性顺序可能有特定要求,早期版本中通过@JsonPropertyOrder注解确保顺序正确
- 版本兼容性:测试版本(1.1.2-UDP)可能存在与生产环境的兼容性问题
解决方案
经过排查,问题最终确定为网络拓扑结构导致的mDNS服务发现问题。具体解决方案包括:
- 使用稳定版本:从测试版(1.1.2-UDP)升级到正式发布版(1.1.3)
- 调整网络架构:将uni-meter部署在与Hoymiles设备同一网段的VMware Linux虚拟机上,确保mDNS广播能够正常传播
- 验证MAC地址配置:确认uni-meter.conf中的MAC地址与avahi服务文件中指定的地址一致
技术要点
-
Hoymiles设备发现流程:
- 通过mDNS查找Shelly设备的IP地址
- 发送HTTP请求验证设备类型和配置
- 建立WebSocket连接持续获取数据(EM.GetStatus和EMData.GetStatus)
-
uni-meter关键功能:
- 模拟Shelly Pro3EM设备的HTTP接口
- 正确处理设备信息查询和电表配置请求
- 维持与Hoymiles设备的持久连接
最佳实践建议
- 生产环境中应使用官方发布的稳定版本而非测试版
- 确保uni-meter与Hoymiles设备位于同一广播域内,或配置适当的mDNS转发
- 部署前验证配置文件中的设备标识符一致性
- 对于复杂网络环境,考虑使用静态IP而非依赖服务发现
总结
通过正确配置网络环境和选择合适的软件版本,uni-meter能够可靠地实现传统智能电表与Hoymiles系统的集成。这一解决方案特别适合那些已经投资于特定电表设备但需要与Hoymiles光伏系统集成的用户,提供了一种经济高效的集成路径。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



