Files
JBao_Heat_Lamp_FW/Doc/电子开关-加热灯罩_台上验收测试笔记.md
wuchuyuan e65b2b22b6 1、修复CBR0寿命与31天记录落盘失败(比较缓冲128→256)
2、APP换灯直接写DP3,DP4本版忽略;上电用restore灌RAM;读/全量打包权威剩余秒数
2026-09-08 12:29:02 +08:00

83 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 电子开关-加热灯罩 台上验收测试笔记
- 固件:V1.0.0`JBao_Heat_Lamp_V1.0.0_*`,提交 `426bb8d`
- 协议:CBR0 / PRCBR0`MAX_PACKAGE_LEN=512`DP 029
- 日期 / 测试人 / 烧录镜像 hash:
- 第 1 轮:____-__-__ / ____ / hash ______
- 第 2 轮:____-__-__ / ____ / hash ______
> 依据规格书 `Doc/电子开关-加热灯罩_固件需求规格书.md` 第 17 章。勾选 = 实测通过。
> 串口:UART0 TX=PC5,波特率按 SDK `TCFG_UART0`(日志 tag`[LIGHT]` / `[APP_NVM]` / `[APP_TMR]` / `[APP_LINK]` / `[JB_PRD]`)。
> 用 APP 直连时注意:DP9 是 WO(服务器下发),设备全量/差分上报不含 DP9。
---
## 1. P0 — 台上 Bring-up(不依赖 APP
- [ ] 1.1 上电即开机:无按键等待;**不强制清配对进绑定**(规格书 5.1/5.2,删除上电 `usr_goto_pair`
- [ ] 1.2 短按开/关:继电器在**过零沿**吸合/断开,红绿 LED 跟实际吸合态
- [ ] 1.3 按住 5s → 配对提示(绿灯快闪);松手进绑定广播;120s 超时失败保持开机、灯回跟继电器
- [ ] 1.4 按住 12s → 红绿交替,进 OTA(`usr_app_ota_init`
- [ ] 1.5 过零超时 100ms:开请求无沿 → 放弃保持关;关请求无沿 → 强断(`fault_code=2`DP23
- [ ] 1.6 运行中断电再上电:BLE 配对保留
> 仅 Bring-up 冒烟:把 `BOARD_LINKAGE/TIMER/TH_SCAN/RUNREC/LIGHT_LIFE/NVM_ENABLE` 置 0 编译(已验证 EXIT=0),板上复测 1.11.5。
## 2. P1 — 最小产品闭环
- [ ] 2.1 5s 配对后 APP 写 DP0 开/关灯泡:过零后灯与 DP0 上报一致(报**实际吸合态**)
- [ ] 2.2 短按同步上报 DP0
- [ ] 2.3 VM:改开关后断电,重新上电按上次开关恢复(开则等过零再吸合)
- [ ] 2.4 DP1 / DP2 / DP4 / DP58 写忽略;DP2 上报恒 0
- [ ] 2.5 DP9(WO):APP/服务器能写当前温度;设备全量上报**不含** DP9
- [ ] 2.6 定时 7 组 **11 字节** + `time_en` 能存(规格书 11.1 布局);`BOARD_TIMER_ENABLE=0` 不执行
- [ ] 2.7 `MAX_PACKAGE_LEN=512`APP 能读完整 124B `run_record`DP20,本阶段可为 0
- [ ] 2.8 第一次开机:DP3=2,592,000、DP25=0(串口应见 `[LIGHT] light life init, remain=2592000`
## 3. P2 — 自动化 + 寿命
- [ ] 3.1 断连已配对:500ms 见宝重连广播 ↔ 500ms 扫描交替;已连接停扫描
- [ ] 3.2 扫描匹配 `JBao-{缸体号}` 且配置版本相同才更新温度;湿度不参与开停
- [ ] 3.3 联动:`T<Tmin` 开灯、`T>Tmax` 关灯、中间保持;无匹配包保持上一态
- [ ] 3.4 缸体号 0 / `Tmin>Tmax` 不跑联动
- [ ] 3.5 手动作废后须先 `T>Tmax``T<Tmin` 才允许联动再开
- [ ] 3.6 定时 RTC 门闩:未对时绝不动作;对时后落在窗内立即开
- [ ] 3.7 定时:跨午夜窗、单次自毁(结束清 Byte0 落盘)、每天/每周、多组重叠
- [ ] 3.8 定时窗开始开、结束关,结束时立刻按 10.3 重判联动;**按 11.1 解析**Byte1=类型)
- [ ] 3.9 DP10 脉冲删除;DP11 重写立刻重判
- [ ] 3.10 运行记录:实际吸合累计,满 600s 落盘;对时后跨天左移
- [ ] 3.11 出厂重置(DP26 写 1):清业务 VM 留配对;剩余寿命回 2,592,000、DP25=0
- [ ] 3.12 过零超时 `fault_code=2`DP23
- [ ] 3.13 仲裁表(第 12 章)用例 1–13(见下节)
- [ ] 3.14 寿命:实际吸合才扣;到 0 停在 0、`alarm_code=1`、灯仍可亮(不互锁)
- [ ] 3.15 DP4 写 1:**不改寿命**(本版忽略);换灯请写 DP3=2,592,000
- [ ] 3.16 APP 写 DP3:任意 uint32 生效;>0 清告警、=0 置告警;立刻落盘
- [ ] 3.17 按键 5s 清绑定 **不**改寿命
- [ ] 3.18 点灯时 DP3 最多 1 分钟报一次;到期/写 DP3 立刻报
- [ ] 3.19 掉电再上电:未到期接着扣;已到期仍 0 且 DP25=1
## 4. 仲裁最小用例(灯泡语义)
**前置**:缸体号≠0、`Tmin≤Tmax`、已配对;「关」=DP0 写 0 / 短按关,「开」同理。温度源:已连接写 DP9;断连扫描 `JBao-{缸体}`
1. 空闲 `T<Tmin` → 开灯;短按关 → 保持关,即使仍低于 Tmin。
2. 用例 1 之后先到 `T>Tmax`,再回到 `T<Tmin`,才再次开。
3. 定时窗开始 → 开;窗未结束前保持开;结束时刻关;若此时 `T<Tmin`**联动再开**
4. 定时窗内再短按关 → 保持关到窗结束,定时不抢回;窗结束若已作废且仍 `T<Tmin` → **不要**被联动立刻打开。
5. 未对时,定时配置使能也不动作;对时后若在窗内立即开。
6. 上电 VM 为开、暂无温度 → 保持开(等过零吸合);温度到达后再按 10.3。
7. `T` 在 [Tmin, Tmax] → 保持上一态。
8. 断连扫描丢包 → 不关灯(保持上一态)。
9. 已连接写 **DP9** 使 `T<Tmin` → 开;断开后扫描到同一缸体更高温度 `T>Tmax` → 关。
10. 剩余寿命置 5,实际吸合 5 秒 → DP3=0、DP25=1,继电器保持开(若请求仍为开)。
11. 用例 10 之后 APP 写 DP3=2,592,000 → DP25=0。写 DP4=1 **不得**改寿命。
12. APP 写 DP3=100 后立刻拔电再上电 → 仍约 100(允许未满边沿的秒误差,**不允许**回到 2,592,000)。
13. 定时 11 字节:Byte1=1(每天)、Byte36=时分、Byte0=1 → 到点开;若误用加热垫偏移(Byte2 当类型)则本条失败。
## 5. 对账记录
| 轮次 | 日期 | 用例失败清单 | 根因 / 修复 commit | 回归 |
|---|---|---|---|---|
| 1 | | | | |
| 2 | | | | |