Catch Elgato connection errors (#67799)

This commit is contained in:
Franck Nijhof 2022-03-07 18:14:14 +01:00 committed by GitHub
parent f268191985
commit 48e6738367
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,13 +1,13 @@
"""Support for Elgato Lights.""" """Support for Elgato Lights."""
from typing import NamedTuple from typing import NamedTuple
from elgato import Elgato, Info, State from elgato import Elgato, ElgatoConnectionError, Info, State
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, CONF_PORT, Platform from homeassistant.const import CONF_HOST, CONF_PORT, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import DOMAIN, LOGGER, SCAN_INTERVAL from .const import DOMAIN, LOGGER, SCAN_INTERVAL
@ -31,12 +31,19 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
session=session, session=session,
) )
async def _async_update_data() -> State:
"""Fetch Elgato data."""
try:
return await elgato.state()
except ElgatoConnectionError as err:
raise UpdateFailed(err) from err
coordinator: DataUpdateCoordinator[State] = DataUpdateCoordinator( coordinator: DataUpdateCoordinator[State] = DataUpdateCoordinator(
hass, hass,
LOGGER, LOGGER,
name=f"{DOMAIN}_{entry.data[CONF_HOST]}", name=f"{DOMAIN}_{entry.data[CONF_HOST]}",
update_interval=SCAN_INTERVAL, update_interval=SCAN_INTERVAL,
update_method=elgato.state, update_method=_async_update_data,
) )
await coordinator.async_config_entry_first_refresh() await coordinator.async_config_entry_first_refresh()