From 297072c1f647277a2efb18cf528c75618ad63550 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Sat, 11 Jun 2022 21:25:07 +0100 Subject: [PATCH] Fix initial data load for System Bridge (#73339) * Update package to 3.1.5 * Fix initial loading of data * Remove additional log and make method --- .../components/system_bridge/__init__.py | 16 +++++++++------- .../components/system_bridge/coordinator.py | 10 ++++++++++ .../components/system_bridge/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/system_bridge/__init__.py b/homeassistant/components/system_bridge/__init__.py index 68a017628b8..1bee974a4c4 100644 --- a/homeassistant/components/system_bridge/__init__.py +++ b/homeassistant/components/system_bridge/__init__.py @@ -98,19 +98,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: await coordinator.async_config_entry_first_refresh() - _LOGGER.debug("Data: %s", coordinator.data) - try: # Wait for initial data async with async_timeout.timeout(30): - while coordinator.data is None or all( - getattr(coordinator.data, module) is None for module in MODULES - ): + while not coordinator.is_ready(): _LOGGER.debug( - "Waiting for initial data from %s (%s): %s", + "Waiting for initial data from %s (%s)", entry.title, entry.data[CONF_HOST], - coordinator.data, ) await asyncio.sleep(1) except asyncio.TimeoutError as exception: @@ -118,6 +113,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: f"Timed out waiting for {entry.title} ({entry.data[CONF_HOST]})." ) from exception + _LOGGER.debug( + "Initial coordinator data for %s (%s):\n%s", + entry.title, + entry.data[CONF_HOST], + coordinator.data.json(), + ) + hass.data.setdefault(DOMAIN, {}) hass.data[DOMAIN][entry.entry_id] = coordinator diff --git a/homeassistant/components/system_bridge/coordinator.py b/homeassistant/components/system_bridge/coordinator.py index a7343116cde..6088967aa33 100644 --- a/homeassistant/components/system_bridge/coordinator.py +++ b/homeassistant/components/system_bridge/coordinator.py @@ -75,6 +75,16 @@ class SystemBridgeDataUpdateCoordinator( hass, LOGGER, name=DOMAIN, update_interval=timedelta(seconds=30) ) + def is_ready(self) -> bool: + """Return if the data is ready.""" + if self.data is None: + return False + for module in MODULES: + if getattr(self.data, module) is None: + self.logger.debug("%s - Module %s is None", self.title, module) + return False + return True + async def async_get_data( self, modules: list[str], diff --git a/homeassistant/components/system_bridge/manifest.json b/homeassistant/components/system_bridge/manifest.json index 76449e3f3ac..087613413d8 100644 --- a/homeassistant/components/system_bridge/manifest.json +++ b/homeassistant/components/system_bridge/manifest.json @@ -3,7 +3,7 @@ "name": "System Bridge", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/system_bridge", - "requirements": ["systembridgeconnector==3.1.3"], + "requirements": ["systembridgeconnector==3.1.5"], "codeowners": ["@timmo001"], "zeroconf": ["_system-bridge._tcp.local."], "after_dependencies": ["zeroconf"], diff --git a/requirements_all.txt b/requirements_all.txt index 47ae411433a..875ea35ad00 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2268,7 +2268,7 @@ swisshydrodata==0.1.0 synology-srm==0.2.0 # homeassistant.components.system_bridge -systembridgeconnector==3.1.3 +systembridgeconnector==3.1.5 # homeassistant.components.tailscale tailscale==0.2.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 74342f3c1f5..0caab7ebe70 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1504,7 +1504,7 @@ sunwatcher==0.2.1 surepy==0.7.2 # homeassistant.components.system_bridge -systembridgeconnector==3.1.3 +systembridgeconnector==3.1.5 # homeassistant.components.tailscale tailscale==0.2.0