124 lines
3.1 KiB
Markdown
124 lines
3.1 KiB
Markdown
# 远程 HTTP OTA 部署说明(ESP32-C6,HTTP 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` 的目录启动:
|
||
|
||
```powershell
|
||
# Windows PowerShell
|
||
python -m http.server 8000
|
||
```
|
||
|
||
访问 URL 示例:
|
||
- `http://<PC_IP>:8000/light.bin`
|
||
|
||
---
|
||
|
||
## 3. 设备端触发 OTA
|
||
|
||
### 3.1 触发命令
|
||
|
||
设备串口进入 Matter shell 后,执行:
|
||
|
||
```text
|
||
matter esp ota http://<SERVER_IP>:<PORT>/path/to/light.bin
|
||
```
|
||
|
||
示例:
|
||
|
||
```text
|
||
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 网络稳定性(尤其是演示环境)
|
||
- 检查固件文件大小是否超出分区容量
|
||
- 确认分区表为双 OTA(`ota_0/ota_1/otadata`)
|
||
|
||
### 5.3 升级后版本号未变化
|
||
|
||
- 确认你上传的是新版本 `light.bin`
|
||
- 确认构建时已修改工程版本号(例如 `PROJECT_VER` / `PROJECT_VER_NUMBER`)
|
||
|
||
---
|
||
|
||
## 6. 交付说明(建议写在测试报告里)
|
||
|
||
建议在测试报告中附:
|
||
- 服务器目录与 URL 示例
|
||
- 设备执行 `matter esp ota` 的截图/视频
|
||
- 升级前后 `App version` 对比截图/视频
|