add mqtt and device test

This commit is contained in:
HycJack
2026-04-26 20:07:41 +08:00
parent 7c12ca59dd
commit 389f6c4040
22 changed files with 742 additions and 32 deletions

View File

@@ -2,6 +2,7 @@ import asyncio
import os
from contextlib import asynccontextmanager
from fastapi import FastAPI
from services import offline_audio_cache
from services.device_config import DeviceConfigManager
from services.schedule_session_cleanup import background_cleanup_task
from services.role_manager import role_manager
@@ -14,6 +15,8 @@ from api.assets import configure_static_assets
from database.init_db import init_db
from database.connection import get_db_manager
from services.firmware_scanner import firmware_scanner
from handlers.mqtt_handler import TalkingQMQTTService
from services.scheduler import TaskScheduler
device_config_manager = DeviceConfigManager()
@@ -29,6 +32,28 @@ async def lifespan(app: FastAPI):
)
init_directories()
scheduler = TaskScheduler.get_instance()
scheduler.start()
scheduler.add_interval_task(
interval_seconds=settings.talkingq_mqtt_nfc_notice_interval
)
if settings.talkingq_mqtt_broker:
mqtt_config = {
"broker": settings.talkingq_mqtt_broker,
"port": settings.talkingq_mqtt_port,
"username": settings.talkingq_mqtt_username,
"password": settings.talkingq_mqtt_password,
"device_prefix": settings.talkingq_mqtt_device_prefix,
"qos": settings.talkingq_mqtt_qos,
"keepalive": settings.talkingq_mqtt_keepalive,
"nfc_notice_interval": settings.talkingq_mqtt_nfc_notice_interval,
}
service = await TalkingQMQTTService.get_instance(mqtt_config)
await service.connect()
session_logger.system_info("startup", "TalkingQ MQTT 设备命令服务链接已启动")
else:
session_logger.system_info("startup", "未配置 TalkingQ_MQTTMQTT 服务链接未启动")
exit(1)
try:
session_logger.system_info("startup", "初始化数据库...")
await init_db()
@@ -93,6 +118,10 @@ async def lifespan(app: FastAPI):
if is_main_process:
session_logger.system_info("shutdown", f"关闭数据库连接时出错: {str(e)}")
TaskScheduler.reset_instance()
await TalkingQMQTTService.reset_instance()
session_logger.system_info("shutdown", "TalkingQ MQTT 服务链接已关闭")
if is_main_process:
session_logger.system_info("shutdown", "应用关闭")