Upgrade pyowm to 2.4.0 (#3067)

This commit is contained in:
Fabian Affolter 2016-09-01 10:38:50 +02:00 committed by Paulus Schoutsen
parent e045a6f0c3
commit 88e600827e
2 changed files with 32 additions and 28 deletions

View File

@ -9,14 +9,24 @@ from datetime import timedelta
import voluptuous as vol import voluptuous as vol
from homeassistant.const import (CONF_API_KEY, TEMP_CELSIUS, TEMP_FAHRENHEIT, from homeassistant.components.sensor import PLATFORM_SCHEMA
CONF_PLATFORM, CONF_MONITORED_CONDITIONS) from homeassistant.const import (
CONF_API_KEY, CONF_NAME, TEMP_CELSIUS, TEMP_FAHRENHEIT,
CONF_MONITORED_CONDITIONS)
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from homeassistant.util import Throttle from homeassistant.util import Throttle
REQUIREMENTS = ['pyowm==2.3.2'] REQUIREMENTS = ['pyowm==2.4.0']
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
CONF_FORECAST = 'forecast'
DEFAULT_NAME = 'OWM'
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=120)
SENSOR_TYPES = { SENSOR_TYPES = {
'weather': ['Condition', None], 'weather': ['Condition', None],
'temperature': ['Temperature', None], 'temperature': ['Temperature', None],
@ -28,17 +38,14 @@ SENSOR_TYPES = {
'snow': ['Snow', 'mm'] 'snow': ['Snow', 'mm']
} }
PLATFORM_SCHEMA = vol.Schema({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_PLATFORM): 'openweathermap', vol.Required(CONF_API_KEY): cv.string,
vol.Required(CONF_API_KEY): vol.Coerce(str),
vol.Optional(CONF_MONITORED_CONDITIONS, default=[]): vol.Optional(CONF_MONITORED_CONDITIONS, default=[]):
[vol.In(SENSOR_TYPES.keys())], vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]),
vol.Optional('forecast', default=False): cv.boolean vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_FORECAST, default=False): cv.boolean
}) })
# Return cached results if last scan was less then this time ago.
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=120)
def setup_platform(hass, config, add_devices, discovery_info=None): def setup_platform(hass, config, add_devices, discovery_info=None):
"""Setup the OpenWeatherMap sensor.""" """Setup the OpenWeatherMap sensor."""
@ -49,32 +56,29 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
from pyowm import OWM from pyowm import OWM
SENSOR_TYPES['temperature'][1] = hass.config.units.temperature_unit SENSOR_TYPES['temperature'][1] = hass.config.units.temperature_unit
forecast = config.get('forecast')
owm = OWM(config.get(CONF_API_KEY, None)) name = config.get(CONF_NAME)
forecast = config.get(CONF_FORECAST)
owm = OWM(config.get(CONF_API_KEY))
if not owm: if not owm:
_LOGGER.error( _LOGGER.error(
"Connection error " "Connection error "
"Please check your settings for OpenWeatherMap.") "Please check your settings for OpenWeatherMap")
return False return False
data = WeatherData(owm, forecast, hass.config.latitude, data = WeatherData(owm, forecast, hass.config.latitude,
hass.config.longitude) hass.config.longitude)
dev = [] dev = []
try: for variable in config[CONF_MONITORED_CONDITIONS]:
for variable in config['monitored_conditions']: dev.append(OpenWeatherMapSensor(
if variable not in SENSOR_TYPES: name, data, variable, SENSOR_TYPES[variable][1]))
_LOGGER.error('Sensor type: "%s" does not exist', variable)
else:
dev.append(OpenWeatherMapSensor(data, variable,
SENSOR_TYPES[variable][1]))
except KeyError:
pass
if forecast: if forecast:
SENSOR_TYPES['forecast'] = ['Forecast', None] SENSOR_TYPES['forecast'] = ['Forecast', None]
dev.append(OpenWeatherMapSensor(data, 'forecast', dev.append(OpenWeatherMapSensor(
SENSOR_TYPES['temperature'][1])) name, data, 'forecast', SENSOR_TYPES['temperature'][1]))
add_devices(dev) add_devices(dev)
@ -83,9 +87,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
class OpenWeatherMapSensor(Entity): class OpenWeatherMapSensor(Entity):
"""Implementation of an OpenWeatherMap sensor.""" """Implementation of an OpenWeatherMap sensor."""
def __init__(self, weather_data, sensor_type, temp_unit): def __init__(self, name, weather_data, sensor_type, temp_unit):
"""Initialize the sensor.""" """Initialize the sensor."""
self.client_name = 'Weather' self.client_name = name
self._name = SENSOR_TYPES[sensor_type][0] self._name = SENSOR_TYPES[sensor_type][0]
self.owa_client = weather_data self.owa_client = weather_data
self.temp_unit = temp_unit self.temp_unit = temp_unit

View File

@ -343,7 +343,7 @@ pynetio==0.1.6
pynx584==0.2 pynx584==0.2
# homeassistant.components.sensor.openweathermap # homeassistant.components.sensor.openweathermap
pyowm==2.3.2 pyowm==2.4.0
# homeassistant.components.switch.acer_projector # homeassistant.components.switch.acer_projector
pyserial<=3.1 pyserial<=3.1