From 50105eed74417d2fb13062292cdd83db2ccf276c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 18 May 2020 09:23:05 -0500 Subject: [PATCH] Handle UPS disconnects in NUT (#35758) --- homeassistant/components/nut/__init__.py | 6 ++++-- homeassistant/components/nut/sensor.py | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/nut/__init__.py b/homeassistant/components/nut/__init__.py index 99563ca65d4..5669b8a5c3b 100644 --- a/homeassistant/components/nut/__init__.py +++ b/homeassistant/components/nut/__init__.py @@ -18,7 +18,7 @@ from homeassistant.const import ( ) from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady -from homeassistant.helpers.update_coordinator import DataUpdateCoordinator +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from .const import ( COORDINATOR, @@ -61,7 +61,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry): async def async_update_data(): """Fetch data from NUT.""" async with async_timeout.timeout(10): - return await hass.async_add_executor_job(data.update) + await hass.async_add_executor_job(data.update) + if not data.status: + raise UpdateFailed("Error fetching UPS state") coordinator = DataUpdateCoordinator( hass, diff --git a/homeassistant/components/nut/sensor.py b/homeassistant/components/nut/sensor.py index 32daaaa2582..3c2144a0aee 100644 --- a/homeassistant/components/nut/sensor.py +++ b/homeassistant/components/nut/sensor.py @@ -189,6 +189,8 @@ class NUTSensor(Entity): @property def state(self): """Return entity state from ups.""" + if not self._data.status: + return None if self._type == KEY_STATUS_DISPLAY: return _format_display_state(self._data.status) return self._data.status.get(self._type)