From e9e029deaf83344acaf22329c3b804ccbb58367e Mon Sep 17 00:00:00 2001 From: chakcy <947105045@qq.com> Date: Mon, 10 Aug 2026 10:44:52 +0800 Subject: [PATCH] =?UTF-8?q?modify=20mqtt=20=E6=A0=B9=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aibox_sophon_adapter/__init__.py | 11 ++++++----- aibox_sophon_adapter/edge_app_controller.py | 10 +++++----- aibox_sophon_adapter/global_var.py | 7 ++++--- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/aibox_sophon_adapter/__init__.py b/aibox_sophon_adapter/__init__.py index d946541..830bb0d 100644 --- a/aibox_sophon_adapter/__init__.py +++ b/aibox_sophon_adapter/__init__.py @@ -283,15 +283,16 @@ async def create_workers(session, config, count=1, worker_manager=None): int_mqtt_enabled = int_mqtt_cfg.get("enabled", False) int_mqtt_client = None # 内部请求-响应主题(edge_app_controller 的 alg_media_fetch 命令使用)。 - # 注意:勿用 chongming/{插件}/{操作} 保留命名空间——网关 MQTT Bridge 订阅了 - # chongming/+/+,会拦截该命名空间并按 Worker RPC 路由,而 edge_app_controller + # 与盒子侧约定一致(盒子只设根主题 box,子路径固定 aibox_sophon/...); + # 勿用 chongming/{插件}/{操作} 保留命名空间——网关 MQTT Bridge 订阅了 + # chongming/+/+,会拦截 3 级主题并按 Worker RPC 路由,而 edge_app_controller # 不是 @rpc_method(Worker 无对应 Queryable),导致 worker_manager 报 - # "Worker ... 无回复,尝试重试"。请与对端应用(设备)约定一致的主题。 + # "Worker ... 无回复,尝试重试"。 int_req_topic = int_mqtt_cfg.get( - "request_topic", "/internal/aibox_sophon_adapter/edge_app_controller" + "request_topic", "box/aibox_sophon/edge_app_controller" ) int_resp_topic = int_mqtt_cfg.get( - "response_topic", "/internal/aibox_sophon_adapter/edge_app_controller_reply" + "response_topic", "box/aibox_sophon/edge_app_controller_reply" ) if int_mqtt_enabled: from chongming_mqtt.internal_mqtt import InternalMQTTClient diff --git a/aibox_sophon_adapter/edge_app_controller.py b/aibox_sophon_adapter/edge_app_controller.py index 82de95b..d1662c8 100644 --- a/aibox_sophon_adapter/edge_app_controller.py +++ b/aibox_sophon_adapter/edge_app_controller.py @@ -146,11 +146,11 @@ async def _cmd_alg_media_fetch(payload: dict) -> dict | None: print(f"[alg_media_fetch]Board {board_id} not found in database.") return _reply(-4, f"设备 {board_id} 不在数据库中") - # 内部请求-响应主题:勿用 chongming/{插件}/{操作} 保留命名空间。 - # 网关 MQTT Bridge 订阅了 chongming/+/+,会拦截该命名空间并按 Worker RPC - # 路由,而 edge_app_controller 不是 @rpc_method(Worker 无对应 Queryable), - # 会导致 worker_manager 报 "Worker ... 无回复,尝试重试"。 - # 主题由 [workers.config.internal_mqtt] 配置,需与对端应用(设备)约定一致。 + # 内部请求-响应主题由 [workers.config.internal_mqtt] 配置,与盒子侧约定一致 + # (盒子只设根主题 box,子路径固定 aibox_sophon/...,回复主题固定为 ..._reply)。 + # 勿用 chongming/{插件}/{操作}:网关 Bridge 订阅 chongming/+/+,会拦截 + # 3 级主题并按 Worker RPC 路由,而 edge_app_controller 不是 @rpc_method + # (Worker 无对应 Queryable),会导致 worker_manager 报 "无回复"。 resp = await internal_mqtt.request( request_topic=internal_request_topic, response_topic=internal_response_topic, diff --git a/aibox_sophon_adapter/global_var.py b/aibox_sophon_adapter/global_var.py index 9054514..cc277c3 100644 --- a/aibox_sophon_adapter/global_var.py +++ b/aibox_sophon_adapter/global_var.py @@ -31,9 +31,10 @@ mqtt_subscribe: "MQTTSubscribeClient | None" = None internal_mqtt: "InternalMQTTClient | None" = None # 内部请求-响应主题(edge_app_controller 的 alg_media_fetch 命令使用) -# 注意:勿用 chongming/{插件}/{操作} 保留命名空间(网关 Bridge 会拦截并按 Worker RPC 路由) -internal_request_topic: str = "/internal/aibox_sophon_adapter/edge_app_controller" -internal_response_topic: str = "/internal/aibox_sophon_adapter/edge_app_controller_reply" +# 与盒子侧约定一致(盒子只设根主题 box,子路径固定 aibox_sophon/...); +# 勿用 chongming/{插件}/{操作} 保留命名空间(网关 Bridge 订阅 chongming/+/+ 会拦截 3 级主题并按 Worker RPC 路由) +internal_request_topic: str = "box/aibox_sophon/edge_app_controller" +internal_response_topic: str = "box/aibox_sophon/edge_app_controller_reply" # 上传文件根目录(用于清理告警关联视频) upload_root: str = "./data/uploads"