2.0 KiB
2.0 KiB
M06-A Broker 与 MQTT 基础
- 日期:2026-06-22
- 起始 commit:
a8c3e7d - 工程 commit:
c140613 - ENGINEERING_DELTA=YES
- 子阶段状态:PARTIAL/BLOCKED_EXTERNAL;可独立工程内容已完成并 push,游标推进 M06-B
工程增量
- 引入 MQTT.js 5.15.1,固定 MQTT 3.1(
protocolVersion: 3)和 QoS 1。 - 后端启动时连接 Broker,使用持久会话、3 秒自动重连,并在每次连接后显式恢复
/devicesend/+、/devicewill/+。 - 下行只允许
/deviceaccept/{DeviceID};DeviceID 校验限制为安全字符和 64 字符以内。 - 上下行消息默认限制 64 KiB;超限上行拒绝进入后续处理,超限下行不发布。
- ready 接口新增 MQTT 已配置、真实连接和订阅恢复三层状态。
- 生产环境要求 MQTT 用户名和密码成对存在,缺失时拒绝启动,凭据不写日志。
- 菜单 3 支持管理员选择安装/更新 EMQX,并检查架构、systemd、端口、包架构和服务器未安装 MQTTX。
- ACL 切换为正式三个厂商 Topic,后端账号和单设备账号使用最小权限。
验证
npm test:退出码 0,M01-A 至 M05-D 全量回归及 M06-A MQTT 测试通过。scripts/dev/windows/test-all.ps1:代码测试、构建、迁移计划、工作区和文档一致性通过;新文件暂存前完整性门禁按预期提示,显式暂存后复检通过。- WSL
bash -n:setup.sh、scripts/setup/emqx.sh、mqtt-smoke.sh退出码 0。 - WSL EMQX:5.8.9、active/enabled、1883/8883/8083/8084/18083 均通过。
- WSL MQTT 认证冒烟:因本地 Git 忽略凭据未配置而
SKIP,未伪造通过。 - 工程 commit 已 push,
HEAD == origin/main == c1406137186d857c81180eb3643d385d05e3bb03。
外部阻塞
生产 Ubuntu 的 EMQX 安装、正式账号、ACL、端口限制、备份和真实发布订阅尚未由管理员执行;M06-A 因此保持 PARTIAL/BLOCKED_EXTERNAL,但不阻塞 M06-B 设备资产模型。
后续
执行游标进入 M06-B:设备资产、能力和拓扑。