补充设备告警与休眠设置后端能力
This commit is contained in:
@@ -7,6 +7,7 @@ from typing import Awaitable, Callable, Dict, Optional
|
||||
import aiomqtt
|
||||
|
||||
from banban.service.binding import BindingService
|
||||
from banban.service.device_alarm import device_alarm_service
|
||||
from banban.service.device_setting import device_setting_service
|
||||
from banban.service.location import location_service
|
||||
from config import settings
|
||||
@@ -240,6 +241,25 @@ class TalkingQMQTTService:
|
||||
status = payload.get("status")
|
||||
if status == "success":
|
||||
logger.info(device_id, "", f"[定时休眠] 设备 {device_id} 休眠时间设置成功")
|
||||
data = payload.get("data", {}) or {}
|
||||
start = data.get("start")
|
||||
end = data.get("end")
|
||||
timezone = data.get("timezone") or "Asia/Shanghai"
|
||||
if start and end:
|
||||
try:
|
||||
await self._schedule_persistence(
|
||||
device_id,
|
||||
"sleep_schedule",
|
||||
device_setting_service.upsert_sleep_schedule(
|
||||
device_id=device_id,
|
||||
sleep_mode=1,
|
||||
disable_time_start=datetime.strptime(start, "%H:%M").time(),
|
||||
disable_time_end=datetime.strptime(end, "%H:%M").time(),
|
||||
timezone=timezone,
|
||||
),
|
||||
)
|
||||
except ValueError:
|
||||
logger.warning(device_id, "", f"[定时休眠] 无法解析设备返回的时间: {payload}")
|
||||
else:
|
||||
logger.warning(device_id, "", f"[定时休眠] 设备 {device_id} 休眠时间设置失败: {payload}")
|
||||
|
||||
@@ -252,6 +272,11 @@ class TalkingQMQTTService:
|
||||
|
||||
async def _handle_alarm_report(self, device_id: str, payload: dict):
|
||||
logger.info(device_id, "", f"[告警] 设备 {device_id} 发送紧急报警")
|
||||
await self._schedule_persistence(
|
||||
device_id,
|
||||
"alarm_event",
|
||||
device_alarm_service.record_alarm_event(device_id=device_id, source_msg_id="010"),
|
||||
)
|
||||
await self._publish(f"device/{device_id}/event_resp", {"msg_id": "010", "status": "success"})
|
||||
|
||||
async def _handle_short_press_message(self, device_id: str, payload: dict):
|
||||
|
||||
Reference in New Issue
Block a user