真实交付项目OTA 升级储能设备

储能 BMS 远程固件升级平台

为储能 BMS 厂商建设云端固件升级管理平台:WiFi 模组透传 Modbus 升级协议,云端通过 MQTT 对现场 BMS 做单台或批量远程升级,并按客户、项目管理设备和固件版本。

项目时间
2024-09 至 2024-11
项目周期
约 2 个月,含现场联调
交付团队
项目组

真实交付项目。客户名称已隐去;为保护客户数据,界面图按项目实际功能重绘,数值均为演示数据,设备编号、坐标和服务器信息不公开。

储能 BMS 远程固件升级平台 · 界面示意图
01 / 05
系统架构PC 后台

WiFi 模组透传 Modbus 升级帧,云端通过 Ctrl / reply 两个 MQTT 主题与每台设备一问一答。

升级链路
WiFi + MQTT
设备协议
Modbus RTU
升级方式
单台 / 批量
分片大小
1 KB
项目背景

项目背景与挑战

设备已经能用上位机通过串口升级,但每次都要工程师到现场。BMS 本身只认 Modbus 寄存器协议,联网靠 WiFi 模组,模组只负责收发;升级包要拆成 1KB 分片逐帧写入,现场信号不稳时单帧超时很常见,失败了还要能说清楚停在哪一帧。

适合已有串口升级流程、想把现场升级搬到云端的 BMS、PCS、储能柜和其他带 MCU 的设备厂商参考。

怎么做的

解决方案

  1. 01沿用设备现有的 Modbus 升级寄存器定义,WiFi 模组只做透明通道:云端下发走 Ctrl 主题,设备应答走 reply 主题,每台模组按序列号独立一组主题
  2. 02FastAPI 升级服务按「查询版本 → 写入升级请求 → 1KB 分片传输 → 写入完成」执行,每一步都等设备应答再继续
  3. 03单帧超时自动重试,累计失败分片超过上限即中止并记录原因,避免设备停在半升级状态还不被发现
  4. 04Vue 3 管理后台支持单台和批量升级,进度条和逐行升级日志实时刷新,升级完成后自动回读版本号
  5. 05客户、项目、设备、固件版本都记录创建用户,不同账号之间数据隔离;另提供远程重置设备参数和审计日志

技术栈

  • Python
  • FastAPI
  • Vue 3
  • Naive UI
  • MQTT
  • Modbus RTU
  • Docker

项目亮点

  • WiFi 模组透传 Modbus 升级协议
  • 单台 / 批量远程升级
  • 分片重试与失败中止,日志可追溯
  • 客户 / 项目 / 固件版本分权管理

适合参考的项目

  • 设备已有串口升级能力,希望改成远程升级的储能、电源和工业设备厂商
  • 设备通过 WiFi / 4G 模组透传串口协议上云的项目
  • 需要按客户、项目管理固件版本和升级记录的团队

交付时要重点关注

  • 升级协议先在本地串口跑通,再接 MQTT,两边用同一份帧格式定义。
  • 超时、重试和中止条件要在联调时用弱信号环境反复验证。
  • 升级完成后必须回读版本号,确认设备真的跑在新固件上。

做类似项目,建议先准备这些资料

  • 设备现有的升级协议(寄存器地址、帧格式、应答格式)和一台可联调样机
  • 联网方式:WiFi、4G 还是以太网,模组能否做串口透传
  • 固件包大小、分片大小和设备侧对超时的容忍度
  • 是否需要批量升级、按客户 / 项目分权,是否要保留升级日志
FAQ

关于这个项目的常见问题

设备只支持串口升级,能改成远程升级吗?+

这个项目就是这种情况。只要联网模组能做串口透传,云端可以把原有的升级帧装进 MQTT 下发,设备侧固件基本不用改。需要先拿到现有升级协议和样机做本地联调。

远程升级到一半断网了怎么办?+

每个分片都要等设备应答,超时会自动重试;累计失败超过上限就中止并记录停在第几帧。设备侧需要有 Bootloader 保底,下次可以重新发起升级。

能不能一次给一批设备升级?+

可以。后台勾选多台设备即可批量升级,每台设备独立执行、独立记录日志,某一台失败不影响其他设备。

项目咨询

想做类似「储能 BMS 远程固件升级平台」的项目?

把设备类型、协议资料、样机状态和计划上线时间发过来,我们会对照这个项目的做法,给你首期范围、报价区间和推进顺序建议。

如果你暂时不方便填写完整信息,也可以直接前往 联系页面 获取电话、邮箱与微信方式。

提交项目需求

适用于 储能 BMS 远程固件升级平台 场景,提交后默认进入业务咨询通道。

微信、电话、邮箱至少填写一项

点击发送即表示您同意我们的隐私政策和服务条款