Files
chongming-plugins/aibox_sophon_adapter/global_var.py
T

103 lines
2.9 KiB
Python
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.
"""
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
# 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
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",
]