mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 11:47:06 +00:00
Add support for wind, battery, radio signals for Netatmo sensor (#2351)
* Add support for wind, battery, radio signals * Fix indentation error * second indentation fix * Fix for pylint too many statements error * Moving "pylint: disable=too-many-statements"
This commit is contained in:
parent
d7b006600e
commit
9ce9b8debb
@ -11,19 +11,29 @@ from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.util import Throttle
|
||||
from homeassistant.loader import get_component
|
||||
|
||||
|
||||
DEPENDENCIES = ["netatmo"]
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
SENSOR_TYPES = {
|
||||
'temperature': ['Temperature', TEMP_CELSIUS, 'mdi:thermometer'],
|
||||
'co2': ['CO2', 'ppm', 'mdi:cloud'],
|
||||
'pressure': ['Pressure', 'mbar', 'mdi:gauge'],
|
||||
'noise': ['Noise', 'dB', 'mdi:volume-high'],
|
||||
'humidity': ['Humidity', '%', 'mdi:water-percent'],
|
||||
'rain': ['Rain', 'mm', 'mdi:weather-rainy'],
|
||||
'sum_rain_1': ['sum_rain_1', 'mm', 'mdi:weather-rainy'],
|
||||
'sum_rain_24': ['sum_rain_24', 'mm', 'mdi:weather-rainy'],
|
||||
'temperature': ['Temperature', TEMP_CELSIUS, 'mdi:thermometer'],
|
||||
'co2': ['CO2', 'ppm', 'mdi:cloud'],
|
||||
'pressure': ['Pressure', 'mbar', 'mdi:gauge'],
|
||||
'noise': ['Noise', 'dB', 'mdi:volume-high'],
|
||||
'humidity': ['Humidity', '%', 'mdi:water-percent'],
|
||||
'rain': ['Rain', 'mm', 'mdi:weather-rainy'],
|
||||
'sum_rain_1': ['sum_rain_1', 'mm', 'mdi:weather-rainy'],
|
||||
'sum_rain_24': ['sum_rain_24', 'mm', 'mdi:weather-rainy'],
|
||||
'battery_vp': ['Battery', '', 'mdi:battery'],
|
||||
'min_temp': ['Min Temp.', TEMP_CELSIUS, 'mdi:thermometer'],
|
||||
'max_temp': ['Max Temp.', TEMP_CELSIUS, 'mdi:thermometer'],
|
||||
'WindAngle': ['Angle', '', 'mdi:compass'],
|
||||
'WindStrength': ['Strength', 'km/h', 'mdi:weather-windy'],
|
||||
'GustAngle': ['Gust Angle', '', 'mdi:compass'],
|
||||
'GustStrength': ['Gust Strength', 'km/h', 'mdi:weather-windy'],
|
||||
'rf_status': ['Radio', '', 'mdi:signal'],
|
||||
'wifi_status': ['Wifi', '', 'mdi:wifi']
|
||||
}
|
||||
|
||||
CONF_STATION = 'station'
|
||||
@ -97,6 +107,8 @@ class NetAtmoSensor(Entity):
|
||||
return self._unit_of_measurement
|
||||
|
||||
# pylint: disable=too-many-branches
|
||||
# Fix for pylint too many statements error
|
||||
# pylint: disable=too-many-statements
|
||||
def update(self):
|
||||
"""Get the latest data from NetAtmo API and updates the states."""
|
||||
self.netatmo_data.update()
|
||||
@ -118,6 +130,79 @@ class NetAtmoSensor(Entity):
|
||||
self._state = data['CO2']
|
||||
elif self.type == 'pressure':
|
||||
self._state = round(data['Pressure'], 1)
|
||||
elif self.type == 'battery_vp':
|
||||
if data['battery_vp'] >= 5500:
|
||||
self._state = "Full"
|
||||
elif data['battery_vp'] >= 5100:
|
||||
self._state = "High"
|
||||
elif data['battery_vp'] >= 4600:
|
||||
self._state = "Medium"
|
||||
elif data['battery_vp'] >= 4100:
|
||||
self._state = "Low"
|
||||
elif data['battery_vp'] < 4100:
|
||||
self._state = "Very Low"
|
||||
elif self.type == 'min_temp':
|
||||
self._state = data['min_temp']
|
||||
elif self.type == 'max_temp':
|
||||
self._state = data['max_temp']
|
||||
elif self.type == 'WindAngle':
|
||||
if data['WindAngle'] >= 330:
|
||||
self._state = "North (%d\xb0)" % data['WindAngle']
|
||||
elif data['WindAngle'] >= 300:
|
||||
self._state = "North-West (%d\xb0)" % data['WindAngle']
|
||||
elif data['WindAngle'] >= 240:
|
||||
self._state = "West (%d\xb0)" % data['WindAngle']
|
||||
elif data['WindAngle'] >= 210:
|
||||
self._state = "South-West (%d\xb0)" % data['WindAngle']
|
||||
elif data['WindAngle'] >= 150:
|
||||
self._state = "South (%d\xb0)" % data['WindAngle']
|
||||
elif data['WindAngle'] >= 120:
|
||||
self._state = "South-East (%d\xb0)" % data['WindAngle']
|
||||
elif data['WindAngle'] >= 60:
|
||||
self._state = "East (%d\xb0)" % data['WindAngle']
|
||||
elif data['WindAngle'] >= 30:
|
||||
self._state = "North-East (%d\xb0)" % data['WindAngle']
|
||||
elif data['WindAngle'] >= 0:
|
||||
self._state = "North (%d\xb0)" % data['WindAngle']
|
||||
elif self.type == 'WindStrength':
|
||||
self._state = data['WindStrength']
|
||||
elif self.type == 'GustAngle':
|
||||
if data['GustAngle'] >= 330:
|
||||
self._state = "North (%d\xb0)" % data['GustAngle']
|
||||
elif data['GustAngle'] >= 300:
|
||||
self._state = "North-West (%d\xb0)" % data['GustAngle']
|
||||
elif data['GustAngle'] >= 240:
|
||||
self._state = "West (%d\xb0)" % data['GustAngle']
|
||||
elif data['GustAngle'] >= 210:
|
||||
self._state = "South-West (%d\xb0)" % data['GustAngle']
|
||||
elif data['GustAngle'] >= 150:
|
||||
self._state = "South (%d\xb0)" % data['GustAngle']
|
||||
elif data['GustAngle'] >= 120:
|
||||
self._state = "South-East (%d\xb0)" % data['GustAngle']
|
||||
elif data['GustAngle'] >= 60:
|
||||
self._state = "East (%d\xb0)" % data['GustAngle']
|
||||
elif data['GustAngle'] >= 30:
|
||||
self._state = "North-East (%d\xb0)" % data['GustAngle']
|
||||
elif data['GustAngle'] >= 0:
|
||||
self._state = "North (%d\xb0)" % data['GustAngle']
|
||||
elif self.type == 'GustStrength':
|
||||
self._state = data['GustStrength']
|
||||
elif self.type == 'rf_status':
|
||||
if data['rf_status'] >= 90:
|
||||
self._state = "Low"
|
||||
elif data['rf_status'] >= 76:
|
||||
self._state = "Medium"
|
||||
elif data['rf_status'] >= 60:
|
||||
self._state = "High"
|
||||
elif data['rf_status'] <= 59:
|
||||
self._state = "Full"
|
||||
elif self.type == 'wifi_status':
|
||||
if data['wifi_status'] >= 86:
|
||||
self._state = "Bad"
|
||||
elif data['wifi_status'] >= 71:
|
||||
self._state = "Middle"
|
||||
elif data['wifi_status'] <= 70:
|
||||
self._state = "Good"
|
||||
|
||||
|
||||
class NetAtmoData(object):
|
||||
|
Loading…
x
Reference in New Issue
Block a user