From 40131d811c1f0af9040a9f46de25b47a8bce576c Mon Sep 17 00:00:00 2001 From: Felix Rotthowe Date: Sun, 26 Mar 2023 09:35:49 +0200 Subject: [PATCH] Handle Livisi TokenExpiredException (#90258) * reauth * Request new Token on TokenExpiredException * relogin using stored auth data * fix imports * import formatting --- homeassistant/components/livisi/coordinator.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/livisi/coordinator.py b/homeassistant/components/livisi/coordinator.py index f745a66e827..56e928307c1 100644 --- a/homeassistant/components/livisi/coordinator.py +++ b/homeassistant/components/livisi/coordinator.py @@ -6,6 +6,7 @@ from typing import Any from aiohttp import ClientConnectorError from aiolivisi import AioLivisi, LivisiEvent, Websocket +from aiolivisi.errors import TokenExpiredException from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant @@ -55,8 +56,11 @@ class LivisiDataUpdateCoordinator(DataUpdateCoordinator[list[dict[str, Any]]]): """Get device configuration from LIVISI.""" try: return await self.async_get_devices() + except TokenExpiredException: + await self.aiolivisi.async_set_token(self.aiolivisi.livisi_connection_data) + return await self.async_get_devices() except ClientConnectorError as exc: - raise UpdateFailed("Failed to get LIVISI the devices") from exc + raise UpdateFailed("Failed to get livisi devices from controller") from exc def _async_dispatcher_send(self, event: str, source: str, data: Any) -> None: if data is not None: