fulREST ready

This commit is contained in:
Артём Кокос
2026-02-12 22:21:38 +07:00
parent c7adc24b07
commit 738edd4db9
5 changed files with 132 additions and 69 deletions

View File

@@ -1,25 +1,25 @@
import logging
from typing import Dict, List, Optional
from app.models.device import Device, Group
from app.models.device import DeviceSchema, GroupModel
logger = logging.getLogger(__name__)
class StateManager:
def __init__(self):
# Храним устройства по MAC (уникальный ID)
self.devices: Dict[str, Device] = {}
# Группы (люстры) по их ID
self.groups: Dict[str, Group] = {}
# Храним устройства как Pydantic объекты
self.devices: Dict[str, DeviceSchema] = {}
# Группы как модели SQLAlchemy
self.groups: Dict[str, GroupModel] = {}
def update_device(self, device_data: dict):
"""Обновляет или добавляет устройство в состояние."""
mac = device_data["mac"]
device = Device(
id=mac,
ip=device_data["ip"],
name=f"WiZ {mac[-4:]}", # Временное имя
room="Default",
# Используем DeviceSchema вместо Device
device = DeviceSchema(
id=mac, ip=device_data["ip"], name=f"WiZ {mac[-4:]}", room="Default"
)
self.devices[mac] = device
@@ -29,10 +29,10 @@ class StateManager:
if not group:
return []
# Извлекаем IP по MAC-адресам, которые хранятся в группе
return [
self.devices[d_id].ip for d_id in group.device_ids if d_id in self.devices
]
# Создаем синглтон для использования во всем приложении
state_manager = StateManager()