From 9d1b94c24ae053954150bb6a9d209e61dee9eefb Mon Sep 17 00:00:00 2001 From: Luis Martinez de Bartolome Izquierdo Date: Tue, 27 Nov 2018 14:01:34 +0100 Subject: [PATCH] Supports the new Netatmo Home Coach (#18308) * Supports the new Netatmo Home Coach * unused import * Missing docstring * Fixed pylint * pydocs * doc style --- homeassistant/components/netatmo.py | 4 ++-- homeassistant/components/sensor/netatmo.py | 23 ++++++++++++++++------ requirements_all.txt | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/netatmo.py b/homeassistant/components/netatmo.py index d8924c6c301..b5b349d5073 100644 --- a/homeassistant/components/netatmo.py +++ b/homeassistant/components/netatmo.py @@ -16,7 +16,7 @@ from homeassistant.helpers import discovery import homeassistant.helpers.config_validation as cv from homeassistant.util import Throttle -REQUIREMENTS = ['pyatmo==1.2'] +REQUIREMENTS = ['pyatmo==1.3'] _LOGGER = logging.getLogger(__name__) @@ -52,7 +52,7 @@ def setup(hass, config): config[DOMAIN][CONF_USERNAME], config[DOMAIN][CONF_PASSWORD], 'read_station read_camera access_camera ' 'read_thermostat write_thermostat ' - 'read_presence access_presence') + 'read_presence access_presence read_homecoach') except HTTPError: _LOGGER.error("Unable to connect to Netatmo API") return False diff --git a/homeassistant/components/sensor/netatmo.py b/homeassistant/components/sensor/netatmo.py index f709e0169cf..2abaa801d68 100644 --- a/homeassistant/components/sensor/netatmo.py +++ b/homeassistant/components/sensor/netatmo.py @@ -304,6 +304,20 @@ class NetAtmoData: self.update() return self.data.keys() + def _detect_platform_type(self): + """Return the XXXData object corresponding to the specified platform. + + The return can be a WeatherStationData or a HomeCoachData. + """ + import pyatmo + for data_class in [pyatmo.WeatherStationData, pyatmo.HomeCoachData]: + try: + station_data = data_class(self.auth) + _LOGGER.debug("%s detected!", str(data_class.__name__)) + return station_data + except TypeError: + continue + def update(self): """Call the Netatmo API to update the data. @@ -316,12 +330,9 @@ class NetAtmoData: return try: - import pyatmo - try: - self.station_data = pyatmo.WeatherStationData(self.auth) - except TypeError: - _LOGGER.error("Failed to connect to NetAtmo") - return # finally statement will be executed + self.station_data = self._detect_platform_type() + if not self.station_data: + raise Exception("No Weather nor HomeCoach devices found") if self.station is not None: self.data = self.station_data.lastData( diff --git a/requirements_all.txt b/requirements_all.txt index 294f1cb1ebb..5b0a4d75550 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -849,7 +849,7 @@ pyalarmdotcom==0.3.2 pyarlo==0.2.2 # homeassistant.components.netatmo -pyatmo==1.2 +pyatmo==1.3 # homeassistant.components.apple_tv pyatv==0.3.10