From 57cd3058d9b8929166333c23506c75f3cb09afa8 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Thu, 22 Oct 2020 17:47:19 +0200 Subject: [PATCH] Always use shared zeroconf in cast config flow (#42210) --- homeassistant/components/cast/config_flow.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/cast/config_flow.py b/homeassistant/components/cast/config_flow.py index 80d4abc9796..e00048a7589 100644 --- a/homeassistant/components/cast/config_flow.py +++ b/homeassistant/components/cast/config_flow.py @@ -4,6 +4,7 @@ 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 @@ -11,12 +12,19 @@ from .helpers import ChromeCastZeroconf async def _async_has_devices(hass): - """Return if there are devices that can be discovered.""" + """ + 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=ChromeCastZeroconf.get_zeroconf() - ) + functools.partial(discover_chromecasts, zeroconf_instance=zeroconf_instance) ) stop_discovery(browser) return casts