core/homeassistant/components/cast/config_flow.py

36 lines
1.0 KiB
Python
Raw Normal View History

"""Config flow for Cast."""
2020-07-29 21:46:14 +00:00
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
2020-07-29 21:46:14 +00:00
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)
2020-07-29 21:46:14 +00:00
casts, browser = await hass.async_add_executor_job(
functools.partial(discover_chromecasts, zeroconf_instance=zeroconf_instance)
2020-07-29 21:46:14 +00:00
)
stop_discovery(browser)
return casts
config_entry_flow.register_discovery_flow(
2019-07-31 19:25:30 +00:00
DOMAIN, "Google Cast", _async_has_devices, config_entries.CONN_CLASS_LOCAL_PUSH
)