Skip to content

Commit

Permalink
Reduce startup time for System Bridge integration (#91171)
Browse files Browse the repository at this point in the history
  • Loading branch information
timmo001 authored and balloob committed Apr 13, 2023
1 parent c601266 commit 48df638
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 12 deletions.
22 changes: 13 additions & 9 deletions homeassistant/components/system_bridge/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@
SERVICE_SEND_TEXT = "send_text"


async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
) -> bool:
"""Set up System Bridge from a config entry."""

# Check version before initialising
Expand All @@ -64,11 +67,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
session=async_get_clientsession(hass),
)
try:
if not await version.check_supported():
raise ConfigEntryNotReady(
"You are not running a supported version of System Bridge. Please"
f" update to {SUPPORTED_VERSION} or higher."
)
async with async_timeout.timeout(10):
if not await version.check_supported():
raise ConfigEntryNotReady(
"You are not running a supported version of System Bridge. Please"
f" update to {SUPPORTED_VERSION} or higher."
)
except AuthenticationException as exception:
_LOGGER.error("Authentication failed for %s: %s", entry.title, exception)
raise ConfigEntryAuthFailed from exception
Expand All @@ -87,7 +91,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
entry=entry,
)
try:
async with async_timeout.timeout(30):
async with async_timeout.timeout(10):
await coordinator.async_get_data(MODULES)
except AuthenticationException as exception:
_LOGGER.error("Authentication failed for %s: %s", entry.title, exception)
Expand All @@ -105,8 +109,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:

try:
# Wait for initial data
async with async_timeout.timeout(30):
while not coordinator.is_ready():
async with async_timeout.timeout(10):
while not coordinator.is_ready:
_LOGGER.debug(
"Waiting for initial data from %s (%s)",
entry.title,
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/system_bridge/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ async def _validate_input(
data[CONF_API_KEY],
)
try:
async with async_timeout.timeout(30):
async with async_timeout.timeout(15):
await websocket_client.connect(session=async_get_clientsession(hass))
hass.async_create_task(websocket_client.listen())
response = await websocket_client.get_data(GetData(modules=["system"]))
Expand Down
5 changes: 3 additions & 2 deletions homeassistant/components/system_bridge/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ def __init__(
hass, LOGGER, name=DOMAIN, update_interval=timedelta(seconds=30)
)

@property
def is_ready(self) -> bool:
"""Return if the data is ready."""
if self.data is None:
Expand Down Expand Up @@ -157,7 +158,7 @@ async def _listen_for_data(self) -> None:
self.last_update_success = False
self.async_update_listeners()
except (ConnectionClosedException, ConnectionResetError) as exception:
self.logger.info(
self.logger.debug(
"Websocket connection closed for %s. Will retry: %s",
self.title,
exception,
Expand All @@ -168,7 +169,7 @@ async def _listen_for_data(self) -> None:
self.last_update_success = False
self.async_update_listeners()
except ConnectionErrorException as exception:
self.logger.warning(
self.logger.debug(
"Connection error occurred for %s. Will retry: %s",
self.title,
exception,
Expand Down

0 comments on commit 48df638

Please sign in to comment.