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

5.4 KiB
Raw Blame History

电子开关-加热灯罩 台上验收测试笔记

  • 固件:V1.0.0JBao_Heat_Lamp_V1.0.0_*,提交 426bb8d
  • 协议:CBR0 / PRCBR0MAX_PACKAGE_LEN=512DP 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=2DP23
  • 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=512APP 能读完整 124B run_recordDP20,本阶段可为 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>TmaxT<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=2DP23
  • 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