diff --git a/vd960DBN/docs/devlog.md b/vd960DBN/docs/devlog.md index c042047..741a899 100644 --- a/vd960DBN/docs/devlog.md +++ b/vd960DBN/docs/devlog.md @@ -206,10 +206,53 @@ topic 修正为 V1.01 双主题协议 `dld960/{sn}/dev`(此前遗留旧 topic --- +## 2026-07-10 — 双主题发布统一 + initialize 对齐 + packet_id 断连修复 + +### 1. 双主题发布统一 (dld960/{sn}/dev) + +此前 heartbeat 和传感器上报仍使用旧 topic 路径(`dev/status`、`g_iot_topic.topic_pub`),与 V1.01 双主题模型不一致。 + +**修复**: 所有 MQTT 发布统一为 `dld960/{sn}/dev`: +- `iot_mqtt_srv.c` heartbeat: `iot_make_topic(..., "dev", "status", ...)` → `snprintf(..., "dld960/%s/dev", ...)` +- `iot_mqtt_srv.c` iot_mqtt_publish_sensor: `g_iot_topic.topic_pub` → `dld960/{sn}/dev` +- `net_srv.c` dev_initialize_pub: `g_iot_topic.topic_pub` → `dld960/{sn}/dev` + +### 2. initialize 消息格式对齐 V1.03 + +`dev_initialize_pub()` 原先缺少顶层 `model`/`hard_ver`/`soft_ver` 字段,且在 `extra_info` 中有已废弃的 `version` 字段。 + +**修复**: 对齐协议文档 §5.1: +- 补充 `model`(PRODUCT_MODEL)、`hard_ver`(HARDWARE_VER)、`soft_ver`(FIRMWARE_VER) 到 `data` 顶层 +- 移除 `extra_info.version` +- 缓冲区扩容 256→512 字节 + +### 3. mqtt_publish() packet_id=0 导致 broker 断连 🔴 + +**现象**: 设备收到查询指令后正确发布响应 JSON,10ms 后 broker 主动断开 TCP 连接(SockInt stat=0x10)。 + +**根因**: `net_srv.c` 的 `mqtt_publish()` 调用 `MQTTSerialize_publish()` 时 `packet_id` 硬编码为 `0`。当 `req_qos=1`(命令响应使用 QoS 1)时,MQTT 规范要求 `packet_id ≠ 0`,`0` 属于协议违规,broker 检测后直接踢掉连接。 + +**修复**: 新增 `static uint16_t s_mqtt_pkt_id` 计数器,QoS>0 时自增作为 packet_id,QoS=0 保持 0。 + +```c +static uint16_t s_mqtt_pkt_id = 0; +uint16_t pkt_id = (req_qos > 0) ? ++s_mqtt_pkt_id : 0; +``` + +### 4. DBNMQTTool 同步更新 + +- 协议版本注释 V1.01→V1.03 +- 协议 Topic 树 + 模拟页增加 `initialize` 支持 +- `device_manager.mark_online()` 扩展 `model`/`hard_ver`/`soft_ver` 参数,设备列表正确显示型号 +- 增加 `dld960/+/dev/#` 通配订阅兼容旧固件多级 topic + +--- + ## 修订记录 | 版本 | 时间 | 说明 | |------|------|------| +| V3.2 | 2026-07-10 | 双主题发布统一 + initialize 数据格式对齐 V1.03 + mqtt_publish packet_id=0 断连修复 | | V3.1 | 2026-07-09 | V1.03: 订阅后发 initialize 上线消息; iot_mqtt_srv 订阅改双主题 | | V3.0 | 2026-07-08 | MQTT 稳定性修复: socket初始化/buffer溢出/分批发送/hex dump/PINGREQ | | V2.9 | 2026-07-07 | MQTT V1.01 双主题协议 + 命令分发 + report_config 7参数 |