From 9d9e4fa4bc1178c16f2afe729ba3adf50b2735e2 Mon Sep 17 00:00:00 2001 From: wangfq Date: Fri, 10 Jul 2026 09:04:39 +0800 Subject: [PATCH] =?UTF-8?q?DBNMQTTool:=20initialize=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=90=8E=E5=90=8C=E6=AD=A5=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=9E=8B=E5=8F=B7=E5=88=B0=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - device_manager.mark_online 增加 model/hard_ver/soft_ver 参数 - 修复旧格式 extra_info.version 取 soft_ver 的问题 - main.py 的 initialize 处理传入完整设备信息 --- DBNMQTTool/dbn_mqtt_tool/device_manager.py | 11 +++++++++-- DBNMQTTool/main.py | 11 ++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/DBNMQTTool/dbn_mqtt_tool/device_manager.py b/DBNMQTTool/dbn_mqtt_tool/device_manager.py index 3e36a2b..ebe8c13 100644 --- a/DBNMQTTool/dbn_mqtt_tool/device_manager.py +++ b/DBNMQTTool/dbn_mqtt_tool/device_manager.py @@ -92,15 +92,22 @@ class DeviceManager: dev.online = True self._notify() - def mark_online(self, dev_serial: str, extra_info: Optional[dict] = None): + def mark_online(self, dev_serial: str, model: str = "", + hard_ver: str = "", soft_ver: str = "", + extra_info: Optional[dict] = None): """V1.03: 设备上线初始化标记""" with self._lock: dev = self.get_or_create(dev_serial) dev.online = True dev.last_seen = datetime.now() + if model: + dev.model = model + if hard_ver: + dev.hard_ver = hard_ver + if soft_ver: + dev.soft_ver = soft_ver if extra_info: dev.extra_info = extra_info - dev.soft_ver = extra_info.get("version", dev.soft_ver) self._notify() def set_offline(self): diff --git a/DBNMQTTool/main.py b/DBNMQTTool/main.py index 583b246..3b47bad 100644 --- a/DBNMQTTool/main.py +++ b/DBNMQTTool/main.py @@ -899,10 +899,15 @@ class MainWindow(QMainWindow): # V1.03: 设备上线初始化 data = payload.get("data", {}) dev_sn = data.get("dev_serial", dev_serial) + model = data.get("model", "") + hard_ver = data.get("hard_ver", "") + soft_ver = data.get("soft_ver", "") extra = data.get("extra_info", {}) - self._devmgr.mark_online(dev_sn, extra) - self._log_recv(topic, payload, f"initialize sn={dev_sn} ver={extra.get('version','?')}") - self._show_json({"online": dev_sn, "info": extra}) + self._devmgr.mark_online(dev_sn, model=model, + hard_ver=hard_ver, soft_ver=soft_ver, + extra_info=extra) + self._log_recv(topic, payload, f"initialize sn={dev_sn} model={model}") + self._show_json({"online": dev_sn, "model": model, "extra": extra}) # 旧协议 / 无 cmd 字段 的消息(如 Initialize) elif "Method" in payload: