"""Config flow for Cast.""" import functools from pychromecast.discovery import discover_chromecasts, stop_discovery from homeassistant import config_entries from homeassistant.components import zeroconf from homeassistant.helpers import config_entry_flow from .const import DOMAIN from .helpers import ChromeCastZeroconf async def _async_has_devices(hass): """ Return if there are devices that can be discovered. This function will be called if no devices are already found through the zeroconf integration. """ zeroconf_instance = ChromeCastZeroconf.get_zeroconf() if zeroconf_instance is None: zeroconf_instance = await zeroconf.async_get_instance(hass) casts, browser = await hass.async_add_executor_job( functools.partial(discover_chromecasts, zeroconf_instance=zeroconf_instance) ) stop_discovery(browser) return casts config_entry_flow.register_discovery_flow( DOMAIN, "Google Cast", _async_has_devices, config_entries.CONN_CLASS_LOCAL_PUSH )