"""FGLair (Fujitsu General) — локальное управление через LAN-протокол Ayla.""" from __future__ import annotations import logging from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant import pyfglair from .const import DOMAIN from .fglair_client import FglairClient _LOGGER = logging.getLogger(__name__) PLATFORMS: list[str] = [] _LOG_LEVELS = { 0: logging.DEBUG, 1: logging.INFO, 2: logging.WARNING, 3: logging.ERROR, } DATA_CLIENTS = f"{DOMAIN}_clients" def _log_handler(level: int, message: str) -> None: _LOGGER.log(_LOG_LEVELS.get(level, logging.DEBUG), "pyfglair: %s", message) async def async_setup(hass: HomeAssistant, config: dict) -> bool: return True async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: clients: dict[str, FglairClient] = hass.data.setdefault(DATA_CLIENTS, {}) if not clients: pyfglair.set_log_handler(_log_handler) pyfglair.set_log_level(1) client = FglairClient(hass, entry.data) try: await client.async_start() except Exception: if not clients: pyfglair.set_log_handler(None) raise clients[entry.entry_id] = client entry.runtime_data = client if PLATFORMS: await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) return True async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: client: FglairClient = entry.runtime_data await client.async_stop() clients: dict[str, FglairClient] = hass.data.get(DATA_CLIENTS, {}) clients.pop(entry.entry_id, None) if not clients: pyfglair.set_log_handler(None) return True