Skip to content
Snippets Groups Projects
Commit afa7e0bf authored by Michał Mrozek's avatar Michał Mrozek Committed by Paulus Schoutsen
Browse files

fix: exception after kaiterra api call timeout (#27622)

parent cf76f22c
No related branches found
No related tags found
No related merge requests found
"""Support for Kaiterra devices.""" """Support for Kaiterra devices."""
import voluptuous as vol 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 ( from homeassistant.const import (
CONF_API_KEY, CONF_API_KEY,
CONF_DEVICES,
CONF_DEVICE_ID, CONF_DEVICE_ID,
CONF_DEVICES,
CONF_NAME,
CONF_SCAN_INTERVAL, CONF_SCAN_INTERVAL,
CONF_TYPE, 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 ( from .const import (
AVAILABLE_AQI_STANDARDS, AVAILABLE_AQI_STANDARDS,
AVAILABLE_UNITS,
AVAILABLE_DEVICE_TYPES, AVAILABLE_DEVICE_TYPES,
AVAILABLE_UNITS,
CONF_AQI_STANDARD, CONF_AQI_STANDARD,
CONF_PREFERRED_UNITS, CONF_PREFERRED_UNITS,
DOMAIN,
DEFAULT_AQI_STANDARD, DEFAULT_AQI_STANDARD,
DEFAULT_PREFERRED_UNIT, DEFAULT_PREFERRED_UNIT,
DEFAULT_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL,
DOMAIN,
KAITERRA_COMPONENTS, KAITERRA_COMPONENTS,
) )
from .api_data import KaiterraApiData
KAITERRA_DEVICE_SCHEMA = vol.Schema( KAITERRA_DEVICE_SCHEMA = vol.Schema(
{ {
vol.Required(CONF_DEVICE_ID): cv.string, vol.Required(CONF_DEVICE_ID): cv.string,
......
"""Support for Kaiterra Air Quality Sensors.""" """Support for Kaiterra Air Quality Sensors."""
from homeassistant.components.air_quality import AirQualityEntity 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.const import CONF_DEVICE_ID, CONF_NAME
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from .const import ( from .const import (
DOMAIN,
ATTR_VOC,
ATTR_AQI_LEVEL, ATTR_AQI_LEVEL,
ATTR_AQI_POLLUTANT, ATTR_AQI_POLLUTANT,
ATTR_VOC,
DISPATCHER_KAITERRA, DISPATCHER_KAITERRA,
DOMAIN,
) )
......
"""Data for all Kaiterra devices.""" """Data for all Kaiterra devices."""
from logging import getLogger
import asyncio import asyncio
from logging import getLogger
import async_timeout
from aiohttp.client_exceptions import ClientResponseError 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.helpers.dispatcher import async_dispatcher_send
from homeassistant.const import CONF_API_KEY, CONF_DEVICES, CONF_DEVICE_ID, CONF_TYPE
from .const import ( from .const import (
AQI_SCALE,
AQI_LEVEL, AQI_LEVEL,
AQI_SCALE,
CONF_AQI_STANDARD, CONF_AQI_STANDARD,
CONF_PREFERRED_UNITS, CONF_PREFERRED_UNITS,
DISPATCHER_KAITERRA, DISPATCHER_KAITERRA,
...@@ -60,9 +56,10 @@ class KaiterraApiData: ...@@ -60,9 +56,10 @@ class KaiterraApiData:
with async_timeout.timeout(10): with async_timeout.timeout(10):
data = await self._api.get_latest_sensor_readings(self._devices) data = await self._api.get_latest_sensor_readings(self._devices)
except (ClientResponseError, asyncio.TimeoutError): except (ClientResponseError, asyncio.TimeoutError):
_LOGGER.debug("Couldn't fetch data") _LOGGER.debug("Couldn't fetch data from Kaiterra API")
self.data = {} self.data = {}
async_dispatcher_send(self._hass, DISPATCHER_KAITERRA) async_dispatcher_send(self._hass, DISPATCHER_KAITERRA)
return
_LOGGER.debug("New data retrieved: %s", data) _LOGGER.debug("New data retrieved: %s", data)
...@@ -102,8 +99,7 @@ class KaiterraApiData: ...@@ -102,8 +99,7 @@ class KaiterraApiData:
device["aqi_pollutant"] = {"value": main_pollutant} device["aqi_pollutant"] = {"value": main_pollutant}
self.data[self._devices_ids[i]] = device self.data[self._devices_ids[i]] = device
async_dispatcher_send(self._hass, DISPATCHER_KAITERRA)
except IndexError as err: except IndexError as err:
_LOGGER.error("Parsing error %s", err) _LOGGER.error("Parsing error %s", err)
async_dispatcher_send(self._hass, DISPATCHER_KAITERRA)
async_dispatcher_send(self._hass, DISPATCHER_KAITERRA)
"""Support for Kaiterra Temperature ahn Humidity Sensors.""" """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.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 = [ SENSORS = [
{"name": "Temperature", "prop": "rtemp", "device_class": "temperature"}, {"name": "Temperature", "prop": "rtemp", "device_class": "temperature"},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment