LED-Germany/05_Docs/OTA_HTTP_Deploy_Guide.md
2026-02-26 09:59:27 +08:00

3.1 KiB
Raw Blame History

远程 HTTP OTA 部署说明ESP32-C6HTTP OTA

本项目采用“远程服务器 HTTP OTA”方案设备从 HTTP 服务器下载 light.bin 并写入 OTA 分区),不依赖 Matter 标准 OTA Provider。

交付目录相关文件:

  • OTA 文件:Deliverable/02_Firmware_Binaries/cct/ota/light.bin
  • 设备端触发命令Matter shell 命令 matter esp ota <http://...>

1. OTA 文件与命名建议

建议按“产品/型号/版本号”组织目录,避免覆盖与混淆。

示例:

/ota/
  cct/
    2.1/
      light.bin
      sha256.txt
  • light.bin:本次升级包
  • sha256.txt(建议):文件校验值(用于发布侧校验/人工核对)

备注:当前设备端实现为 HTTP OTA非 HTTPS因此建议仅在内网或受控网络环境使用若后续要上公网建议评估签名校验或改为 HTTPS。


2. 部署方式(最简单:静态 HTTP

任何能提供静态文件下载的 HTTP 服务都可以,例如:

  • Nginx
  • Apache
  • Python 简易 HTTP 服务(仅用于开发/演示)

2.1 示例Python 简易 HTTP演示用

在放置 light.bin 的目录启动:

# Windows PowerShell
python -m http.server 8000

访问 URL 示例:

  • http://<PC_IP>:8000/light.bin

3. 设备端触发 OTA

3.1 触发命令

设备串口进入 Matter shell 后,执行:

matter esp ota http://<SERVER_IP>:<PORT>/path/to/light.bin

示例:

matter esp ota http://192.168.1.10:8000/light.bin

3.2 预期日志特征

升级过程中一般可看到:

  • 下载进度0% → 100%
  • 写入 OTA 分区成功
  • 提示升级成功并延时重启
  • 重启后从另一 OTA 分区启动(例如 Loaded app from partition ...
  • 启动日志中的 App version 更新

4. 版本管理建议

4.1 版本号两件事需要一致

  • 固件内部版本号(启动日志里的 App version
  • OTA 镜像头版本字段(用于升级判断与记录)

建议每次发布新固件时同步更新版本号(例如 2.0 → 2.1)。

4.2 服务器侧发布策略

  • 不覆盖旧版本文件,按版本目录存放
  • 用“latest”软链接/重定向(可选)
  • 记录每次发布的:版本号、发布时间、文件 SHA256

5. 常见问题排查

5.1 设备提示 404/无法连接

  • 检查 URL 是否可在 PC 浏览器直接下载
  • 检查服务器与设备是否在同一网段、是否被防火墙拦截
  • 确认端口未被占用

5.2 下载中断/升级失败

  • 检查 Wi-Fi/Thread 网络稳定性(尤其是演示环境)
  • 检查固件文件大小是否超出分区容量
  • 确认分区表为双 OTAota_0/ota_1/otadata

5.3 升级后版本号未变化

  • 确认你上传的是新版本 light.bin
  • 确认构建时已修改工程版本号(例如 PROJECT_VER / PROJECT_VER_NUMBER

6. 交付说明(建议写在测试报告里)

建议在测试报告中附:

  • 服务器目录与 URL 示例
  • 设备执行 matter esp ota 的截图/视频
  • 升级前后 App version 对比截图/视频