From bdbc38c9378fbe526b07d0a3cf43e2d10df26e41 Mon Sep 17 00:00:00 2001 From: Milan Meulemans Date: Fri, 9 Apr 2021 01:43:41 +0200 Subject: [PATCH] Catch expected errors and log them in rituals perfume genie (#48870) * Add update error logging * Move try available to else * Remove TimeoutError --- .../components/rituals_perfume_genie/switch.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/rituals_perfume_genie/switch.py b/homeassistant/components/rituals_perfume_genie/switch.py index 471be52b054..bc8e2b5e175 100644 --- a/homeassistant/components/rituals_perfume_genie/switch.py +++ b/homeassistant/components/rituals_perfume_genie/switch.py @@ -1,10 +1,15 @@ """Support for Rituals Perfume Genie switches.""" from datetime import timedelta +import logging + +import aiohttp from homeassistant.components.switch import SwitchEntity from .const import DOMAIN +_LOGGER = logging.getLogger(__name__) + SCAN_INTERVAL = timedelta(seconds=30) ON_STATE = "1" @@ -33,6 +38,7 @@ class DiffuserSwitch(SwitchEntity): def __init__(self, diffuser): """Initialize the switch.""" self._diffuser = diffuser + self._available = True @property def device_info(self): @@ -53,7 +59,7 @@ class DiffuserSwitch(SwitchEntity): @property def available(self): """Return if the device is available.""" - return self._diffuser.data["hub"]["status"] == AVAILABLE_STATE + return self._available @property def name(self): @@ -89,4 +95,10 @@ class DiffuserSwitch(SwitchEntity): async def async_update(self): """Update the data of the device.""" - await self._diffuser.update_data() + try: + await self._diffuser.update_data() + except aiohttp.ClientError: + self._available = False + _LOGGER.error("Unable to retrieve data from rituals.sense-company.com") + else: + self._available = self._diffuser.data["hub"]["status"] == AVAILABLE_STATE