uni-meter项目:解决Hoymiles MS A2与Shelly电表集成问题

uni-meter项目:解决Hoymiles MS A2与Shelly电表集成问题

背景介绍

在光伏发电系统中,将电池存储系统与现有光伏系统集成是一个常见需求。uni-meter作为一款开源软件,能够实现智能电表与Hoymiles逆变器之间的通信转换,特别适用于那些已经拥有带红外读数的智能电表但需要与Hoymiles系统集成的场景。

问题现象

用户在使用uni-meter 1.1.2-UDP版本时遇到了集成问题。具体表现为:

  1. Hoymiles MS A2无法自动发现uni-meter设备
  2. 手动添加设备时,虽然能观察到两个RPC请求(rpcGetDeviceInfo和em.getconfig)被正确处理,但随后连接中断
  3. 应用最终显示"设备未找到"的错误提示

技术分析

从日志分析可以看出,系统初始化过程正常,HTTP服务器成功启动并监听80端口。两个关键RPC请求的处理也看似正确:

  1. Shelly.GetDeviceInfo请求返回了设备信息,包括设备ID、MAC地址、型号和固件版本等
  2. EM.GetConfig请求返回了电表配置,包括名称、相位选择器和CT类型等

然而,连接在第二个请求后中断,这表明可能存在以下问题:

  1. mDNS服务发现机制:Hoymiles设备通常通过mDNS服务发现来定位Shelly设备。在跨网段环境中,mDNS广播可能无法正常工作
  2. 响应数据格式:Hoymiles设备对JSON响应的属性顺序可能有特定要求,早期版本中通过@JsonPropertyOrder注解确保顺序正确
  3. 版本兼容性:测试版本(1.1.2-UDP)可能存在与生产环境的兼容性问题

解决方案

经过排查,问题最终确定为网络拓扑结构导致的mDNS服务发现问题。具体解决方案包括:

  1. 使用稳定版本:从测试版(1.1.2-UDP)升级到正式发布版(1.1.3)
  2. 调整网络架构:将uni-meter部署在与Hoymiles设备同一网段的VMware Linux虚拟机上,确保mDNS广播能够正常传播
  3. 验证MAC地址配置:确认uni-meter.conf中的MAC地址与avahi服务文件中指定的地址一致

技术要点

  1. Hoymiles设备发现流程

    • 通过mDNS查找Shelly设备的IP地址
    • 发送HTTP请求验证设备类型和配置
    • 建立WebSocket连接持续获取数据(EM.GetStatus和EMData.GetStatus)
  2. uni-meter关键功能

    • 模拟Shelly Pro3EM设备的HTTP接口
    • 正确处理设备信息查询和电表配置请求
    • 维持与Hoymiles设备的持久连接

最佳实践建议

  1. 生产环境中应使用官方发布的稳定版本而非测试版
  2. 确保uni-meter与Hoymiles设备位于同一广播域内,或配置适当的mDNS转发
  3. 部署前验证配置文件中的设备标识符一致性
  4. 对于复杂网络环境,考虑使用静态IP而非依赖服务发现

总结

通过正确配置网络环境和选择合适的软件版本,uni-meter能够可靠地实现传统智能电表与Hoymiles系统的集成。这一解决方案特别适合那些已经投资于特定电表设备但需要与Hoymiles光伏系统集成的用户,提供了一种经济高效的集成路径。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值