"""FGLair (Fujitsu General) — локальное управление через LAN-протокол Ayla.""" from __future__ import annotations import logging from homeassistant import config_entries 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: if isinstance(config.get(DOMAIN), dict): hass.async_create_task( hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_IMPORT}, data=config[DOMAIN], ) ) return True async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: clients: dict[str, FglairClient] = hass.data.setdefault(DATA_CLIENTS, {}) client = FglairClient(hass, entry.data) await client.async_start() clients[entry.entry_id] = client entry.runtime_data = client if len(clients) == 1: pyfglair.set_log_handler(_log_handler) pyfglair.set_log_level(1) 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: await hass.async_add_executor_job(pyfglair.set_log_handler, None) return True