diff --git a/aibox_sophon_adapter/edge_app_controller.py b/aibox_sophon_adapter/edge_app_controller.py index d1662c8..976fbba 100644 --- a/aibox_sophon_adapter/edge_app_controller.py +++ b/aibox_sophon_adapter/edge_app_controller.py @@ -161,7 +161,7 @@ async def _cmd_alg_media_fetch(payload: dict) -> dict | None: print(f"[alg_media_fetch]Response from internal_mqtt: {resp}") if resp is None: - return _reply(-5, "获取媒体信息超时或失败") + return _reply(-5, "获取算法媒体信息失败(内部请求无响应)") return resp async def _cmd_alg_task_fetch(payload: dict) -> dict | None: @@ -171,7 +171,12 @@ async def _cmd_alg_task_fetch(payload: dict) -> dict | None: 请求: {"Event": "/alg_task_fetch", "BoardId": "..."} 返回: {"board_id": ..., "tasks": [...]} """ - from .global_var import db + from .global_var import ( + db, + internal_mqtt, + internal_request_topic, + internal_response_topic, + ) board_id = payload.get("BoardId") if not board_id: @@ -182,6 +187,8 @@ async def _cmd_alg_task_fetch(payload: dict) -> dict | None: if db is None: return _reply(-5, "数据库未初始化") + if internal_mqtt is None: + return _reply(-5, "internal_mqtt 未初始化") async with db.get_session() as session: from .models.orm import BoardHeartbeat @@ -195,18 +202,15 @@ async def _cmd_alg_task_fetch(payload: dict) -> dict | None: print(f"[alg_task_fetch]Board {board_id} not found in database.") return _reply(-4, f"设备 {board_id} 不在数据库中") - import json - ping_data = {} - try: - ping_data = json.loads(record.ping_data) if record.ping_data else {} - except json.JSONDecodeError: - pass - - return { - "board_id": board_id, - "tasks": ping_data.get("Tasks", []), - } + + resp = await internal_mqtt.request( + request_topic=internal_request_topic, + response_topic=internal_response_topic, + payload=payload, + timeout=5 + ) + return resp # 命令注册表:command -> async handler(payload) -> data(返回 None 表示不回复) _COMMANDS: dict[str, Callable[[dict], Coroutine[Any, Any, Any]]] = {