94 lines
2.7 KiB
Python
94 lines
2.7 KiB
Python
"""
|
|
AI Box Sophon Adapter — 全局变量
|
|
|
|
模块级共享资源管理。
|
|
"""
|
|
from typing import Any, TYPE_CHECKING
|
|
|
|
from chongming_database import Database
|
|
from .models.orm import *
|
|
from chongming_stream_manager import StreamManager
|
|
|
|
if TYPE_CHECKING:
|
|
from chongming_mqtt.mqtt_forward import MQTTForwardClient
|
|
from chongming_mqtt.mqtt_subscribe import MQTTSubscribeClient
|
|
from chongming_mqtt.internal_mqtt import InternalMQTTClient
|
|
|
|
# 数据库实例
|
|
db: Database | None = None
|
|
|
|
# 视频流管理器
|
|
stream_manager: StreamManager | None = None
|
|
link_path: str | None = None
|
|
|
|
# 外部 MQTT 转发客户端
|
|
mqtt_forward: "MQTTForwardClient | None" = None
|
|
|
|
# 外部 MQTT 订阅客户端
|
|
mqtt_subscribe: "MQTTSubscribeClient | None" = None
|
|
|
|
# 内部 MQTT 请求-响应客户端(handler 内对任意应用进程发起请求-响应)
|
|
internal_mqtt: "InternalMQTTClient | None" = None
|
|
|
|
# 内部请求-响应主题(edge_app_controller 的 alg_media_fetch 命令使用)
|
|
# 与盒子侧约定一致(盒子只设根主题 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"
|
|
|
|
# 告警保留配置
|
|
alarm_max_records: int = 0 # 0 表示不限制
|
|
|
|
# 豆包 AI 分析开关
|
|
doubao_analysis_enabled: bool = True
|
|
|
|
# 告警转发配置
|
|
alarm_forward_enabled: bool = False
|
|
alarm_forward_url: str = "http://dg.datagoo.cn:60014/open-api/event-alarm/receive"
|
|
alarm_forward_video_url: str = "http://dg.datagoo.cn:60014/open-api/event-alarm/receiveVideoUpload"
|
|
alarm_forward_timeout: float = 10.0
|
|
|
|
# 心跳超时配置(秒)
|
|
heartbeat_timeout: float = 15.0
|
|
|
|
# 心跳上报间隔(秒)
|
|
heartbeat_interval: float = 5.0
|
|
|
|
# ffmpeg 是否可用(on_init 时探测;不可用时跳过 RTSP 拉流,不阻断心跳)
|
|
ffmpeg_available: bool = True
|
|
|
|
|
|
def set_global_var(name: str, value: Any) -> None:
|
|
"""
|
|
设置当前模块的全局变量。
|
|
|
|
Args:
|
|
name: 变量名(字符串)
|
|
value: 任意值
|
|
"""
|
|
globals()[name] = value
|
|
|
|
|
|
__all__ = [
|
|
"db",
|
|
"heartbeat_timeout",
|
|
"heartbeat_interval",
|
|
"mqtt_forward",
|
|
"mqtt_subscribe",
|
|
"internal_mqtt",
|
|
"internal_request_topic",
|
|
"internal_response_topic",
|
|
"upload_root",
|
|
"alarm_max_records",
|
|
"doubao_analysis_enabled",
|
|
"alarm_forward_enabled",
|
|
"alarm_forward_url",
|
|
"alarm_forward_video_url",
|
|
"alarm_forward_timeout",
|
|
"ffmpeg_available",
|
|
"set_global_var",
|
|
]
|