# M06-G 真实硬件联调 - 日期:2026-06-24 - 起始 commit:`c00526f` - 工程 commit:`d01f771` - ENGINEERING_DELTA=YES - 子阶段状态:BLOCKED_EXTERNAL;烟测运行器已完成,真实设备未执行 ## 工程增量 - 新增 `hardware-smoke-runner`,默认 dry-run 生成控制箱、Sub-1G 门锁和智慧插座联调矩阵。 - 未配置 DeviceID 时安全 `SKIP`;未显式设置 `QIPAI_HARDWARE_SMOKE_ENABLE=true` 时只输出 `DRY_RUN`,不发布真实硬件命令。 - 危险动作默认关闭;只有 `QIPAI_HARDWARE_SMOKE_ALLOW_ACTIONS=true` 且提供对应 DeviceID/subID 时才加入控电、开锁和插座开关动作。 - 真实执行时通过 MQTT 3.1/QoS 1 发布 `/deviceaccept/{DeviceID}` 并等待 `/devicesend/{DeviceID}` 中匹配命令 ID 的 ACK。 - 输出 JSON 结果,便于后续粘贴进硬件联调报告和部署验收记录。 ## 验证 - Windows `npm run build`:退出码 0。 - Windows `node tests/hardware-smoke-runner.test.mjs`:退出码 0。 - Windows `node dist/devices/hardware-smoke-runner.js`:退出码 0,未配置 DeviceID 时返回 `SKIP`。 - Windows `npm test`:退出码 0,M01-A 至 M06-G 全量后端回归通过。 - 工程 commit 已 push,`HEAD == origin/main == d01f771`。 ## 外部阻塞与后续 缺生产 MQTT 账号/ACL、控制箱、Sub-1G 门锁、4G 智慧插座、DeviceID、subID 和现场配线/负载,未执行真实 ACK、断电保护、开锁、订单联动和异常恢复矩阵。M06 保持 `PARTIAL/BLOCKED_EXTERNAL`,游标旁路进入 M07-A 双余额账本。