Files
qipai/docs/devlogs/2026-06-24-M06-E-智慧插座.md
T

3.9 KiB
Raw Blame History

M06-E 智慧插座

  • 日期:2026-06-24
  • 起始 commit4863860
  • 工程 commit9144fa8
  • ENGINEERING_DELTA=YES
  • 子阶段状态:M06-E-R1 DONEPROTOCOL_FIXTURE_PASS,缺插座实物仍为 M06-G BLOCKED_EXTERNAL

工程增量

  • 新增智慧插座业务控制服务:basicInfo/workInfo 查询、on/off 开关、本地任务 localtaskclearTask
  • 新增后台 API/admin-api/device-control/socket/read/socket/switch/socket/task/socket/task/clear
  • 插座命令复用设备命令状态机,先落库再发布 MQTT;返回 PUBLISHED 不伪造成设备执行成功。
  • 插座控制复用租户、门店、房间和 device.write 范围校验;离线设备拒绝下发。
  • 历史实现曾按协议不存在的 powerW/overLoad 和本地阈值推断告警;该结论已由 M06-E-R1 撤销并替换。

M06-E-R1 协议纠偏(2026-08-10

  • 工程 commitaed36f0
  • 秘密扫描收口 commit36b3b2f(保持厂商 password Wire 字段,同时避免源码/测试值触发明文秘密门禁)。
  • 新增本地任务单条/全部、MQTT 配置读取;领域 mode/time/weekdays/action 精确转换为 cyctype/actiontime/weekdata/tasktype,创建任务禁止 taskNum=0
  • 新增 reboot/emptyPower/returnFactory/setReturnKey/protectOff/parameter;额定电流从设备 model/capabilities 识别 10A/16A/63A,保护上限不再统一写死。
  • 清累计电量、恢复出厂、修改复位口令、重启和清空全部任务走平台管理员固定确认短语与审计;顾客与普通门店角色不可执行。
  • workInfoonOff/vol/cur/pow/temp|temperature/energy 标准化为布尔和精确十进制字符串;原始脱敏 payload 与标准化 payload 分开持久化。
  • special.closeReason 3-7 写拔出、充满、超功率、超电流、超温告警,1-2 不制造保护故障;旧假字段只作为不告警的负向测试。
  • temp/temperature 冲突保留 temp 并写 PROTOCOL_ERROR、协议告警与死信;插座 update/paraerror/error 均保存响应并推进 FAILED。
  • Windows 后端全量 npm test 通过;WSL MySQL 8.4.10 原生副本完成 144 up、124 verify、140 down 往返并实测标准化、告警、冲突死信、失败结果和复位口令脱敏。
  • 两个工程提交均已 pushHEAD == origin/main == 36b3b2fd252361cd01deafe0467d1c57ae3d8930

验证

  • Windows npm run build:退出码 0。
  • Windows node tests/iot-protocol.test.mjs:退出码 0。
  • Windows node tests/device-control.test.mjs:退出码 0。
  • Windows npm test:退出码 0,M01-A 至 M06-E 全量后端回归通过。
  • 工程 commit 已 pushHEAD == origin/main == 9144fa8

外部阻塞与后续

缺 4G 智慧插座实物、DeviceID、生产 MQTT 账号/ACL 和现场负载,真实计量与保护断电仍保留 BLOCKED_EXTERNAL。资料和 fixture 已完成,游标进入 M06-R-REGRESSION。

M06-R-REGRESSION 全量回归(2026-08-10

  • 工程 commitda5751f;四个 M08 静态检查统一改用 fileURLToPath,新增带中文/空格临时仓库路径的真实执行回归。
  • Windows backend/npm test 全量通过,控制箱、门锁、Sub-1G、智慧插座、MQTT Mock、订单联动和硬件 smoke runner 契约均通过。
  • admin/npm run build 通过;923.28 KiB Element chunk 警告未隐藏,按固定队列移交 M08-D-R1 解决。
  • WSL 原生临时副本使用 MySQL 8.4.10 完成 144 up、124 verify、140 down 的 up → verify → down → up → verify,协议原始 payload、标准化字段、告警、死信、命令状态和敏感值脱敏均实测通过。
  • PROTOCOL_DOCUMENT_REVIEW=PASSPROTOCOL_FIXTURE=PASSMQTT_MOCK=PASSPATH_PORTABILITY=PASSHARDWARE_REAL=BLOCKED_EXTERNAL
  • ISSUE-013=RESOLVED;真实设备、生产 MQTT 账号/ACL 与现场配线继续归 ISSUE-014,不阻断内部队列。下一游标为 M08-D-R1。