From afa7e0bfe875ec2df146658f85eddf97e5816cee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Mrozek?= <Michsior14@users.noreply.github.com> Date: Mon, 14 Oct 2019 07:01:40 +0200 Subject: [PATCH] fix: exception after kaiterra api call timeout (#27622) --- homeassistant/components/kaiterra/__init__.py | 20 ++++++++--------- .../components/kaiterra/air_quality.py | 8 +++---- homeassistant/components/kaiterra/api_data.py | 22 ++++++++----------- homeassistant/components/kaiterra/sensor.py | 8 +++---- 4 files changed, 24 insertions(+), 34 deletions(-) diff --git a/homeassistant/components/kaiterra/__init__.py b/homeassistant/components/kaiterra/__init__.py index 8c61ad54184..d043dc15eaf 100644 --- a/homeassistant/components/kaiterra/__init__.py +++ b/homeassistant/components/kaiterra/__init__.py @@ -1,35 +1,33 @@ """Support for Kaiterra devices.""" import voluptuous as vol -from homeassistant.helpers.aiohttp_client import async_get_clientsession -from homeassistant.helpers.event import async_track_time_interval -from homeassistant.helpers.discovery import async_load_platform -from homeassistant.helpers import config_validation as cv - from homeassistant.const import ( CONF_API_KEY, - CONF_DEVICES, CONF_DEVICE_ID, + CONF_DEVICES, + CONF_NAME, CONF_SCAN_INTERVAL, CONF_TYPE, - CONF_NAME, ) +from homeassistant.helpers import config_validation as cv +from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.helpers.discovery import async_load_platform +from homeassistant.helpers.event import async_track_time_interval +from .api_data import KaiterraApiData from .const import ( AVAILABLE_AQI_STANDARDS, - AVAILABLE_UNITS, AVAILABLE_DEVICE_TYPES, + AVAILABLE_UNITS, CONF_AQI_STANDARD, CONF_PREFERRED_UNITS, - DOMAIN, DEFAULT_AQI_STANDARD, DEFAULT_PREFERRED_UNIT, DEFAULT_SCAN_INTERVAL, + DOMAIN, KAITERRA_COMPONENTS, ) -from .api_data import KaiterraApiData - KAITERRA_DEVICE_SCHEMA = vol.Schema( { vol.Required(CONF_DEVICE_ID): cv.string, diff --git a/homeassistant/components/kaiterra/air_quality.py b/homeassistant/components/kaiterra/air_quality.py index 70699de394c..1de1a4bd6c5 100644 --- a/homeassistant/components/kaiterra/air_quality.py +++ b/homeassistant/components/kaiterra/air_quality.py @@ -1,16 +1,14 @@ """Support for Kaiterra Air Quality Sensors.""" from homeassistant.components.air_quality import AirQualityEntity - -from homeassistant.helpers.dispatcher import async_dispatcher_connect - from homeassistant.const import CONF_DEVICE_ID, CONF_NAME +from homeassistant.helpers.dispatcher import async_dispatcher_connect from .const import ( - DOMAIN, - ATTR_VOC, ATTR_AQI_LEVEL, ATTR_AQI_POLLUTANT, + ATTR_VOC, DISPATCHER_KAITERRA, + DOMAIN, ) diff --git a/homeassistant/components/kaiterra/api_data.py b/homeassistant/components/kaiterra/api_data.py index 81e28438d56..e0f4d817e03 100644 --- a/homeassistant/components/kaiterra/api_data.py +++ b/homeassistant/components/kaiterra/api_data.py @@ -1,21 +1,17 @@ """Data for all Kaiterra devices.""" -from logging import getLogger - import asyncio - -import async_timeout +from logging import getLogger from aiohttp.client_exceptions import ClientResponseError +import async_timeout +from kaiterra_async_client import AQIStandard, KaiterraAPIClient, Units -from kaiterra_async_client import KaiterraAPIClient, AQIStandard, Units - +from homeassistant.const import CONF_API_KEY, CONF_DEVICE_ID, CONF_DEVICES, CONF_TYPE from homeassistant.helpers.dispatcher import async_dispatcher_send -from homeassistant.const import CONF_API_KEY, CONF_DEVICES, CONF_DEVICE_ID, CONF_TYPE - from .const import ( - AQI_SCALE, AQI_LEVEL, + AQI_SCALE, CONF_AQI_STANDARD, CONF_PREFERRED_UNITS, DISPATCHER_KAITERRA, @@ -60,9 +56,10 @@ class KaiterraApiData: with async_timeout.timeout(10): data = await self._api.get_latest_sensor_readings(self._devices) except (ClientResponseError, asyncio.TimeoutError): - _LOGGER.debug("Couldn't fetch data") + _LOGGER.debug("Couldn't fetch data from Kaiterra API") self.data = {} async_dispatcher_send(self._hass, DISPATCHER_KAITERRA) + return _LOGGER.debug("New data retrieved: %s", data) @@ -102,8 +99,7 @@ class KaiterraApiData: device["aqi_pollutant"] = {"value": main_pollutant} self.data[self._devices_ids[i]] = device - - async_dispatcher_send(self._hass, DISPATCHER_KAITERRA) except IndexError as err: _LOGGER.error("Parsing error %s", err) - async_dispatcher_send(self._hass, DISPATCHER_KAITERRA) + + async_dispatcher_send(self._hass, DISPATCHER_KAITERRA) diff --git a/homeassistant/components/kaiterra/sensor.py b/homeassistant/components/kaiterra/sensor.py index 4ff6435b64d..e86d6f7d836 100644 --- a/homeassistant/components/kaiterra/sensor.py +++ b/homeassistant/components/kaiterra/sensor.py @@ -1,11 +1,9 @@ """Support for Kaiterra Temperature ahn Humidity Sensors.""" -from homeassistant.helpers.entity import Entity - -from homeassistant.helpers.dispatcher import async_dispatcher_connect - from homeassistant.const import CONF_DEVICE_ID, CONF_NAME, TEMP_CELSIUS, TEMP_FAHRENHEIT +from homeassistant.helpers.dispatcher import async_dispatcher_connect +from homeassistant.helpers.entity import Entity -from .const import DOMAIN, DISPATCHER_KAITERRA +from .const import DISPATCHER_KAITERRA, DOMAIN SENSORS = [ {"name": "Temperature", "prop": "rtemp", "device_class": "temperature"}, -- GitLab