"""Config flow for escea.""" import asyncio from contextlib import suppress import logging from async_timeout import timeout from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import config_entry_flow from homeassistant.helpers.dispatcher import async_dispatcher_connect from .const import ( DISPATCH_CONTROLLER_DISCOVERED, DOMAIN, ESCEA_FIREPLACE, TIMEOUT_DISCOVERY, ) from .discovery import async_start_discovery_service, async_stop_discovery_service _LOGGER = logging.getLogger(__name__) async def _async_has_devices(hass: HomeAssistant) -> bool: controller_ready = asyncio.Event() @callback def dispatch_discovered(_): controller_ready.set() remove_handler = async_dispatcher_connect( hass, DISPATCH_CONTROLLER_DISCOVERED, dispatch_discovered ) discovery_service = await async_start_discovery_service(hass) with suppress(asyncio.TimeoutError): async with timeout(TIMEOUT_DISCOVERY): await controller_ready.wait() remove_handler() if not discovery_service.controllers: await async_stop_discovery_service(hass) _LOGGER.debug("No controllers found") return False _LOGGER.debug("Controllers %s", discovery_service.controllers) return True config_entry_flow.register_discovery_flow(DOMAIN, ESCEA_FIREPLACE, _async_has_devices)