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: