From 09ca440c20b9c3c8a732d30a318745951d00959a Mon Sep 17 00:00:00 2001 From: Giuseppe Date: Fri, 16 Jun 2017 07:14:46 +0200 Subject: [PATCH] Fixed the Wind sensor following new release of netatmo-api-python (#8030) * Fixed the Wind sensor following new release of netatmo-api-python The NetAtmo PR was at: https://github.com/jabesq/netatmo-api-python/pull/5 Essentially, this commit adds a protection when adding an incorrect monitored conditions to avoid to fail the entire NetAtmo component, plus for consistency reasons all conditions are now in lower case. * Fixes following the CI tests --- homeassistant/components/netatmo.py | 2 +- homeassistant/components/sensor/netatmo.py | 66 ++++++++++++---------- requirements_all.txt | 2 +- 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/homeassistant/components/netatmo.py b/homeassistant/components/netatmo.py index 2bd450a2917..606c9eef5b0 100644 --- a/homeassistant/components/netatmo.py +++ b/homeassistant/components/netatmo.py @@ -18,7 +18,7 @@ from homeassistant.util import Throttle REQUIREMENTS = [ 'https://github.com/jabesq/netatmo-api-python/archive/' - 'v0.9.1.zip#lnetatmo==0.9.1'] + 'v0.9.2.zip#lnetatmo==0.9.2'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/sensor/netatmo.py b/homeassistant/components/sensor/netatmo.py index a83b218ca8f..44d0732921c 100644 --- a/homeassistant/components/sensor/netatmo.py +++ b/homeassistant/components/sensor/netatmo.py @@ -41,12 +41,12 @@ SENSOR_TYPES = { 'battery_lvl': ['Battery_lvl', '', 'mdi:battery'], 'min_temp': ['Min Temp.', TEMP_CELSIUS, 'mdi:thermometer'], 'max_temp': ['Max Temp.', TEMP_CELSIUS, 'mdi:thermometer'], - 'WindAngle': ['Angle', '', 'mdi:compass'], - 'WindAngle_value': ['Angle Value', 'º', 'mdi:compass'], - 'WindStrength': ['Strength', 'km/h', 'mdi:weather-windy'], - 'GustAngle': ['Gust Angle', '', 'mdi:compass'], - 'GustAngle_value': ['Gust Angle Value', 'º', 'mdi:compass'], - 'GustStrength': ['Gust Strength', 'km/h', 'mdi:weather-windy'], + 'windangle': ['Angle', '', 'mdi:compass'], + 'windangle_value': ['Angle Value', 'º', 'mdi:compass'], + 'windstrength': ['Strength', 'km/h', 'mdi:weather-windy'], + 'gustangle': ['Gust Angle', '', 'mdi:compass'], + 'gustangle_value': ['Gust Angle Value', 'º', 'mdi:compass'], + 'guststrength': ['Gust Strength', 'km/h', 'mdi:weather-windy'], 'rf_status': ['Radio', '', 'mdi:signal'], 'rf_status_lvl': ['Radio_lvl', '', 'mdi:signal'], 'wifi_status': ['Wifi', '', 'mdi:wifi'], @@ -87,7 +87,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None): for module_name in data.get_module_names(): for variable in\ data.station_data.monitoredConditions(module_name): - dev.append(NetAtmoSensor(data, module_name, variable)) + if variable in SENSOR_TYPES.keys(): + dev.append(NetAtmoSensor(data, module_name, variable)) + else: + _LOGGER.warning("Ignoring unknown var %s for mod %s", + variable, module_name) except lnetatmo.NoDevice: return None @@ -214,51 +218,51 @@ class NetAtmoSensor(Entity): self._state = data['min_temp'] elif self.type == 'max_temp': self._state = data['max_temp'] - elif self.type == 'WindAngle_value': + elif self.type == 'windangle_value': self._state = data['WindAngle'] - elif self.type == 'WindAngle': + elif self.type == 'windangle': if data['WindAngle'] >= 330: - self._state = "North (%d\xb0)" % data['WindAngle'] + self._state = "N (%d\xb0)" % data['WindAngle'] elif data['WindAngle'] >= 300: - self._state = "North-West (%d\xb0)" % data['WindAngle'] + self._state = "NW (%d\xb0)" % data['WindAngle'] elif data['WindAngle'] >= 240: - self._state = "West (%d\xb0)" % data['WindAngle'] + self._state = "W (%d\xb0)" % data['WindAngle'] elif data['WindAngle'] >= 210: - self._state = "South-West (%d\xb0)" % data['WindAngle'] + self._state = "SW (%d\xb0)" % data['WindAngle'] elif data['WindAngle'] >= 150: - self._state = "South (%d\xb0)" % data['WindAngle'] + self._state = "S (%d\xb0)" % data['WindAngle'] elif data['WindAngle'] >= 120: - self._state = "South-East (%d\xb0)" % data['WindAngle'] + self._state = "SE (%d\xb0)" % data['WindAngle'] elif data['WindAngle'] >= 60: - self._state = "East (%d\xb0)" % data['WindAngle'] + self._state = "E (%d\xb0)" % data['WindAngle'] elif data['WindAngle'] >= 30: - self._state = "North-East (%d\xb0)" % data['WindAngle'] + self._state = "NE (%d\xb0)" % data['WindAngle'] elif data['WindAngle'] >= 0: - self._state = "North (%d\xb0)" % data['WindAngle'] - elif self.type == 'WindStrength': + self._state = "N (%d\xb0)" % data['WindAngle'] + elif self.type == 'windstrength': self._state = data['WindStrength'] - elif self.type == 'GustAngle_value': + elif self.type == 'gustangle_value': self._state = data['GustAngle'] - elif self.type == 'GustAngle': + elif self.type == 'gustangle': if data['GustAngle'] >= 330: - self._state = "North (%d\xb0)" % data['GustAngle'] + self._state = "N (%d\xb0)" % data['GustAngle'] elif data['GustAngle'] >= 300: - self._state = "North-West (%d\xb0)" % data['GustAngle'] + self._state = "NW (%d\xb0)" % data['GustAngle'] elif data['GustAngle'] >= 240: - self._state = "West (%d\xb0)" % data['GustAngle'] + self._state = "W (%d\xb0)" % data['GustAngle'] elif data['GustAngle'] >= 210: - self._state = "South-West (%d\xb0)" % data['GustAngle'] + self._state = "SW (%d\xb0)" % data['GustAngle'] elif data['GustAngle'] >= 150: - self._state = "South (%d\xb0)" % data['GustAngle'] + self._state = "S (%d\xb0)" % data['GustAngle'] elif data['GustAngle'] >= 120: - self._state = "South-East (%d\xb0)" % data['GustAngle'] + self._state = "SE (%d\xb0)" % data['GustAngle'] elif data['GustAngle'] >= 60: - self._state = "East (%d\xb0)" % data['GustAngle'] + self._state = "E (%d\xb0)" % data['GustAngle'] elif data['GustAngle'] >= 30: - self._state = "North-East (%d\xb0)" % data['GustAngle'] + self._state = "NE (%d\xb0)" % data['GustAngle'] elif data['GustAngle'] >= 0: - self._state = "North (%d\xb0)" % data['GustAngle'] - elif self.type == 'GustStrength': + self._state = "N (%d\xb0)" % data['GustAngle'] + elif self.type == 'guststrength': self._state = data['GustStrength'] elif self.type == 'rf_status_lvl': self._state = data['rf_status'] diff --git a/requirements_all.txt b/requirements_all.txt index 09fb62062ad..625285ebf3e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -283,7 +283,7 @@ https://github.com/aparraga/braviarc/archive/0.3.7.zip#braviarc==0.3.7 https://github.com/happyleavesaoc/spotipy/archive/544614f4b1d508201d363e84e871f86c90aa26b2.zip#spotipy==2.4.4 # homeassistant.components.netatmo -https://github.com/jabesq/netatmo-api-python/archive/v0.9.1.zip#lnetatmo==0.9.1 +https://github.com/jabesq/netatmo-api-python/archive/v0.9.2.zip#lnetatmo==0.9.2 # homeassistant.components.neato https://github.com/jabesq/pybotvac/archive/v0.0.3.zip#pybotvac==0.0.3