From b186b2760049770756e11b00a029b1f4b4d89031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Thu, 1 Mar 2018 23:15:27 +0100 Subject: [PATCH] Tibber: retry if we fail to connect at startup (#12620) * Tibber: retry if we fail to connect at startup * Tibber: retry if we fail to connect at startup * Tibber: retry if we fail to connect at startup * Tibber: retry if we fail to connect at startup * Update tibber.py * Update tibber.py --- homeassistant/components/sensor/tibber.py | 24 ++++++++++++++--------- requirements_all.txt | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/sensor/tibber.py b/homeassistant/components/sensor/tibber.py index 519ff05cbd8..e56d5595e32 100644 --- a/homeassistant/components/sensor/tibber.py +++ b/homeassistant/components/sensor/tibber.py @@ -9,16 +9,18 @@ import asyncio import logging from datetime import timedelta +import aiohttp import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import CONF_ACCESS_TOKEN +from homeassistant.exceptions import PlatformNotReady from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.entity import Entity from homeassistant.util import dt as dt_util -REQUIREMENTS = ['pyTibber==0.2.1'] +REQUIREMENTS = ['pyTibber==0.3.0'] _LOGGER = logging.getLogger(__name__) @@ -33,14 +35,18 @@ SCAN_INTERVAL = timedelta(minutes=1) @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up the Tibber sensor.""" - import Tibber - tibber = Tibber.Tibber(config[CONF_ACCESS_TOKEN], - websession=async_get_clientsession(hass)) - yield from tibber.update_info() - dev = [] - for home in tibber.get_homes(): - yield from home.update_info() - dev.append(TibberSensor(home)) + import tibber + tibber_connection = tibber.Tibber(config[CONF_ACCESS_TOKEN], + websession=async_get_clientsession(hass)) + + try: + yield from tibber_connection.update_info() + dev = [] + for home in tibber_connection.get_homes(): + yield from home.update_info() + dev.append(TibberSensor(home)) + except (asyncio.TimeoutError, aiohttp.ClientError): + raise PlatformNotReady() from None async_add_devices(dev, True) diff --git a/requirements_all.txt b/requirements_all.txt index ab1583c8cd1..8bbf005c0d7 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -644,7 +644,7 @@ pyHS100==0.3.0 pyRFXtrx==0.21.1 # homeassistant.components.sensor.tibber -pyTibber==0.2.1 +pyTibber==0.3.0 # homeassistant.components.switch.dlink pyW215==0.6.0