Files
chongming-config/workers/aibox_sophon_adapter/config.toml
T

113 lines
6.1 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ====== 插件注册信息(控制加载方式) ======
[workers]
type = "aibox_sophon_adapter"
module = "plugins.aibox_sophon_adapter"
factory = "create_workers"
cleanup = "cleanup"
count = 1
[worker]
name = "aibox_sophon_adapter"
version = "0.1.0"
description = "AI Box Sophon 设备适配器 — MQTT 心跳上报与设备状态监控"
config_version = "1.0"
defaults = { method = "GET", timeout = 30, auth_required = false, cacheable = false, internal = false }
[worker.registration]
router_prefix = "/aibox_sophon_adapter"
tags = ["aibox_sophon_adapter", "sophon", "adapter"]
# ====== MQTT Bridge 额外订阅主题(本插件声明,网关自动订阅并路由到本插件) ======
# topic: 订阅主题,支持 +(单级)/ #(多级,须在末尾)通配符
# subject: 可选,目标 Zenoh subject,支持 {1} {2}... 占位符;
# 默认 "<插件类型>.<topic 最后一段>"
# response_topic: 可选,响应发布主题,支持占位符;默认 "<实际匹配主题>/response"
# 请求负载为信封协议: {"meta": {"method"/"timeout"/"cacheable"}, "data": {...}}
# meta 各字段可选(method 默认 GET,timeout 默认 30s,cacheable 默认 false)
# 盒子侧只支持设置根主题:根主题已改为 box(非 chongming 保留命名空间,避免被网关 Bridge 拦截),
# 盒子心跳发布到 box/aibox_sophon/board_ping,映射到本插件的心跳 RPC。
[[workers.mqtt_topics]]
topic = "box/aibox_sophon/board_ping"
subject = "aibox_sophon_adapter.board_ping"
# response_topic = "box/aibox_sophon/board_ping/response" # 默认即 "<实际匹配主题>/response"
# ====== Worker 运行时配置(由 lifespan_setup 传递给 create_workers) ======
[workers.config]
data_dir = "./data"
# mediamtx_addr = "rtsp://127.0.0.1:8554" # MediaMTX 地址
mediamtx_addr = "rtsp://127.0.0.1/channel" # MediaMTX 地址
link_path = "/data/bm-app" # 软链接路径
[workers.config.heartbeat]
interval = 5 # 设备上报间隔(秒)
timeout = 15 # 超时阈值(秒),超过此时间未收到心跳视为离线
check_interval = 10 # 服务端检查离线设备的间隔(秒)
[workers.config.mqtt_forward]
enabled = true
# uri 含凭据,请勿提交到仓库:留空时从环境变量 AIBOX_MQTT_URI 读取
# 格式 mqtt://user:pass@host:port,密码中特殊字符需 URL 编码(@ → %40)
uri = ""
topic = "/board_ping" # 转发目标主题
# ====== 外部 MQTT 订阅(本插件直接订阅外部 Broker,不走网关 Bridge) ======
# enabled: 是否启用外部订阅
# uri: 外部 Broker 地址(mqtt://user:pass@host:port,密码中特殊字符需 URL 编码)
# topics: 订阅主题列表,每项包含
# topic: 订阅主题,支持 +(单级)/ #(多级,须在末尾)通配符
# handler: 处理函数名,按序从插件 router 模块、插件包自身查找
# 若该函数首个参数为 Pydantic 模型,则以消息 JSON 构造模型后调用;
# 否则将消息 JSON 作为关键字参数展开调用
# reply_topic: 可选,回复主题;处理后返回值(非 None)发布到该主题
# 支持 {1} {2}... 占位符(填充 topic 通配符捕获值)
[workers.config.mqtt_subscribe]
enabled = true
# uri 含凭据,请勿提交到仓库:留空时从环境变量 AIBOX_MQTT_URI 读取(格式同 mqtt_forward)
uri = ""
# 边缘应用控制器:请求-响应协议
# 请求: 发布到 /edge_app_controller,消息 {"command": "query_status", ...}
# 回复: 处理结果发布到 /edge_app_controller_reply,统一封装 {"code": 0, "msg": "ok", "data": {...}}
[[workers.config.mqtt_subscribe.topics]]
topic = "/edge_app_controller" # 订阅主题(外部请求)
handler = "edge_app_controller" # 处理函数(按 command 分发)
reply_topic = "/edge_app_controller_reply" # 回复主题
# ====== 内部 MQTT 请求-响应客户端 ======
# 供外部订阅 handler 内部对任意应用进程发起请求-响应(主题显式传入,不依赖 chongming 协议)
# uri: 目标 Broker(默认内部 127.0.0.1:1883;如需连外部可改为外部地址)
# 使用示例(handler 内):
# resp = await internal_mqtt.request(
# request_topic="/other_app/request", # 目标应用监听的请求主题
# response_topic="/other_app/reply/#", # 目标应用回复的主题(支持 +/# 或 {rid} 模板)
# payload={"BoardId": ...},
# timeout=30,
# )
[workers.config.internal_mqtt]
enabled = true
uri = "mqtt://127.0.0.1:1883"
# 内部请求-响应主题(edge_app_controller 的 alg_media_fetch 命令使用)。
# 与盒子侧约定一致:盒子只设根主题 box(非 chongming 保留命名空间),
# 子路径固定 aibox_sophon/...,回复主题固定为 ..._reply。
# 不要用 chongming/{插件}/{操作}——网关 MQTT Bridge 订阅 chongming/+/+,
# 会拦截 3 级主题并按 Worker RPC 路由,而 edge_app_controller 不是 @rpc_method,
# 会导致 worker_manager 报 "Worker ... 无回复,尝试重试"。
request_topic = "box/aibox_sophon/edge_app_controller"
response_topic = "box/aibox_sophon/edge_app_controller_reply"
[workers.config.alarm_retention]
max_records = 100 # 最多保留的告警记录数,设为 0 表示不限制
[workers.config.doubao_analysis]
enabled = false # 是否启用豆包 AI 分析告警图片
[workers.config.alarm_forward]
# enabled = false # 是否启用告警转发到外部平台
enabled = true # 是否启用告警转发到外部平台
# url = "http://dg.datagoo.cn:60014/open-api/event-alarm/receive" # 外部告警接收地址
url = "http://192.168.1.6:48092/open-api/event-alarm/receive" # 外部告警接收地址
# video_upload_url = "http://dg.datagoo.cn:60014/open-api/event-alarm/receiveVideoUpload" # 外部视频上传地址
video_upload_url = "http://192.168.1.6:49092/open-api/event-alarm/receiveVideoUpload" # 外部视频上传地址
timeout = 10.0 # 转发请求超时(秒)