107 lines
3.1 KiB
Python
107 lines
3.1 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
|
||
from .task_switch import In2TaskSwitch
|
||
|
||
# 数据库实例
|
||
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
|
||
|
||
# ip 音柱 TTS 播放开关
|
||
ip_sound_column_enabled: bool = True
|
||
|
||
# ip 音柱 TTS 播放音量(0-100)
|
||
ip_sound_column_volume: int = 50
|
||
|
||
# ip 音柱 TTS 播放内容(key: Summary,value: tts 文本)
|
||
ip_sound_column_tts: dict = {}
|
||
|
||
# 告警转发配置
|
||
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
|
||
|
||
# IN2 任务启停开关控制器(DI 有电启动全部任务,断电停止全部任务)
|
||
task_switch: "In2TaskSwitch | None" = None
|
||
|
||
|
||
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",
|
||
]
|