同步协议 V1.03:双主题发布对齐 + initialize 数据格式修正

vd960DBN:
- heartbeat/sensor/initialize 发布统一走 dld960/{sn}/dev
- dev_initialize_pub 补 model/hard_ver/soft_ver,删 extra_info.version

DBNMQTTool:
- 协议版本号更新至 V1.03
- 协议 Topic 树和模拟页增加 initialize 支持
This commit is contained in:
wangfq
2026-07-10 08:49:28 +08:00
parent 652fc5f938
commit 11d1a96d24
5 changed files with 66 additions and 18 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
"""
DLD960 IoT MQTT 协议定义
基于《DLD960_IoT_MQTT协议.md》V1.01
基于《DLD960_IoT_MQTT协议.md》V1.03
双主题结构:{sn}/srv(服务器下发)、{sn}/dev(设备上报)
消息类型由 JSON `cmd` 字段区分。
"""
+38
View File
@@ -419,6 +419,21 @@ class MainWindow(QMainWindow):
g2l.addLayout(g2l2)
layout.addWidget(g2)
# -- initialize --
g_init = QGroupBox("上电初始化 (initialize) — V1.03")
g_init_l = QVBoxLayout(g_init)
self._sim_init = QPlainTextEdit()
self._sim_init.setFont(QFont("Consolas", 10))
self._sim_init.setPlainText(self._sample_initialize_data())
g_init_l.addWidget(self._sim_init)
g_init_l2 = QHBoxLayout()
b_init = QPushButton("发送")
b_init.clicked.connect(self._sim_send_initialize)
g_init_l2.addWidget(b_init)
g_init_l2.addStretch()
g_init_l.addLayout(g_init_l2)
layout.addWidget(g_init)
# -- heartbeat --
g3 = QGroupBox("心跳上报 (heartbeat)")
g3l = QVBoxLayout(g3)
@@ -479,6 +494,24 @@ class MainWindow(QMainWindow):
]}
}, indent=2)
def _sample_initialize_data(self) -> str:
return json.dumps({
"msg_id": 1,
"cmd": "initialize",
"ts": 1719000000,
"data": {
"dev_serial": "DC045A49718F",
"model": "DLD960",
"hard_ver": "1.0",
"soft_ver": "1.0",
"extra_info": {
"code": "869756049404948",
"csq": "21",
"location": "113.9237976,022.6400375"
}
}
}, indent=2)
def _sample_heartbeat_data(self) -> str:
return json.dumps({
"msg_id": 200,
@@ -509,6 +542,10 @@ class MainWindow(QMainWindow):
sn = self._sim_sn.text()
self._sim_publish(topic_up(sn), self._sim_event.toPlainText())
def _sim_send_initialize(self):
sn = self._sim_sn.text()
self._sim_publish(topic_up(sn), self._sim_init.toPlainText())
def _sim_send_hb(self):
sn = self._sim_sn.text()
self._sim_publish(topic_up(sn), self._sim_hb.toPlainText())
@@ -602,6 +639,7 @@ class MainWindow(QMainWindow):
item = QTreeWidgetItem(dev, [topic_up(sn), "设备发布:loop_data / event_report / heartbeat / 命令响应"])
# 子条目列出 cmd 类型
for cmd_name, desc in [
("initialize", "设备上电初始化 (V1.03)"),
("loop_data", "线圈传感数据上报"),
("event_report", "事件上报(有车/无车/故障)"),
("heartbeat", "设备心跳"),