diff --git a/homeassistant/components/openuv/__init__.py b/homeassistant/components/openuv/__init__.py index 167fcdcd0e6..2e4e89a00e6 100644 --- a/homeassistant/components/openuv/__init__.py +++ b/homeassistant/components/openuv/__init__.py @@ -289,9 +289,15 @@ class OpenUvEntity(Entity): def __init__(self, openuv): """Initialize.""" self._attrs = {ATTR_ATTRIBUTION: DEFAULT_ATTRIBUTION} + self._available = True self._name = None self.openuv = openuv + @property + def available(self) -> bool: + """Return True if entity is available.""" + return self._available + @property def device_state_attributes(self): """Return the state attributes.""" diff --git a/homeassistant/components/openuv/binary_sensor.py b/homeassistant/components/openuv/binary_sensor.py index 1e765abbbce..aa489647e25 100644 --- a/homeassistant/components/openuv/binary_sensor.py +++ b/homeassistant/components/openuv/binary_sensor.py @@ -100,8 +100,11 @@ class OpenUvBinarySensor(OpenUvEntity, BinarySensorDevice): data = self.openuv.data[DATA_PROTECTION_WINDOW] if not data: + self._available = False return + self._available = True + for key in ("from_time", "to_time", "from_uv", "to_uv"): if not data.get(key): _LOGGER.info("Skipping update due to missing data: %s", key) diff --git a/homeassistant/components/openuv/sensor.py b/homeassistant/components/openuv/sensor.py index a482464e4d0..9b57687d4c2 100644 --- a/homeassistant/components/openuv/sensor.py +++ b/homeassistant/components/openuv/sensor.py @@ -124,7 +124,14 @@ class OpenUvSensor(OpenUvEntity): async def async_update(self): """Update the state.""" - data = self.openuv.data[DATA_UV]["result"] + data = self.openuv.data[DATA_UV].get("result") + + if not data: + self._available = False + return + + self._available = True + if self._sensor_type == TYPE_CURRENT_OZONE_LEVEL: self._state = data["ozone"] elif self._sensor_type == TYPE_CURRENT_UV_INDEX: