modify: sophon 视频文件上传、告警接口
This commit is contained in:
@@ -7,6 +7,9 @@ AI Box Sophon Adapter 插件
|
||||
3. 持久化心跳数据到 SQLite 数据库
|
||||
4. 提供 HTTP API 查询设备在线状态和详情
|
||||
5. 后台定时检查离线设备,触发异常告警
|
||||
6. 视频上传接口 — 盒子告警时录制视频上传(FORM-DATA)
|
||||
7. 告警上报接口 — 违规事件 JSON 报文字动解析入库
|
||||
8. 告警查询接口 — 告警列表/详情查询
|
||||
|
||||
心跳超时机制:
|
||||
- 设备按配置间隔(默认 5 秒)上报心跳
|
||||
@@ -22,6 +25,7 @@ from chongming_worker import auto_bind_models
|
||||
from chongming_worker.runtime import create_workers as _create_workers
|
||||
|
||||
from .router import *
|
||||
from .routes import router # 自定义 FastAPI 路由(网关自动发现)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -51,7 +55,7 @@ async def _check_offline_devices(interval: float):
|
||||
from .models.orm import BoardHeartbeat
|
||||
from sqlalchemy import select
|
||||
|
||||
stmt = select(BoardHeartbeat).where(BoardHeartbeat.is_online == True)
|
||||
stmt = select(BoardHeartbeat).where(BoardHeartbeat.is_online == True) # type: ignore
|
||||
result = await session.execute(stmt)
|
||||
records = result.scalars().all()
|
||||
|
||||
@@ -97,18 +101,12 @@ async def create_workers(session, config, count=1, worker_manager=None):
|
||||
|
||||
# 初始化数据库
|
||||
data_dir = Path(config.get("data_dir", "./data")) if isinstance(config, dict) else Path("./data")
|
||||
db_path = data_dir / "storage" / "chongming" / "aibox_sophon_adapter.db"
|
||||
db_path = data_dir / "aibox_sophon_adapter.db"
|
||||
db_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
db = Database(db_path)
|
||||
await db.initialize()
|
||||
|
||||
# 创建表
|
||||
from .models.orm import BoardHeartbeat
|
||||
async with db.get_session() as sess:
|
||||
from sqlmodel import SQLModel
|
||||
await sess.run_sync(lambda s: SQLModel.metadata.create_all(s.bind))
|
||||
|
||||
set_global_var("db", db)
|
||||
set_global_var("heartbeat_timeout", hb_timeout)
|
||||
set_global_var("heartbeat_interval", hb_interval)
|
||||
|
||||
Reference in New Issue
Block a user