Files
ignis-core/app/core/state.py
Артём Кокос c7adc24b07 Initial commit
2026-02-12 21:52:24 +07:00

39 lines
1.3 KiB
Python

import logging
from typing import Dict, List, Optional
from app.models.device import Device, Group
logger = logging.getLogger(__name__)
class StateManager:
def __init__(self):
# Храним устройства по MAC (уникальный ID)
self.devices: Dict[str, Device] = {}
# Группы (люстры) по их ID
self.groups: Dict[str, Group] = {}
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",
)
self.devices[mac] = device
def get_group_ips(self, group_id: str) -> List[str]:
"""Возвращает список IP всех ламп, входящих в группу."""
group = self.groups.get(group_id)
if not group:
return []
return [
self.devices[d_id].ip for d_id in group.device_ids if d_id in self.devices
]
# Создаем синглтон для использования во всем приложении
state_manager = StateManager()