diff --git a/homeassistant/components/sensor/yr.py b/homeassistant/components/sensor/yr.py index 0286fd834dda67a74cf9faf94bd2ccf5bc231b9a..3a434e30a85fec5f213bd3b6ba80d52ec026e460 100644 --- a/homeassistant/components/sensor/yr.py +++ b/homeassistant/components/sensor/yr.py @@ -5,9 +5,10 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.yr/ """ import logging - import requests +import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE from homeassistant.helpers.entity import Entity from homeassistant.util import dt as dt_util @@ -18,6 +19,8 @@ _LOGGER = logging.getLogger(__name__) REQUIREMENTS = ['xmltodict'] +CONF_MONITORED_CONDITIONS = 'monitored_conditions' + # Sensor types are defined like so: SENSOR_TYPES = { 'symbol': ['Symbol', None], @@ -36,6 +39,13 @@ SENSOR_TYPES = { 'dewpointTemperature': ['Dewpoint temperature', '°C'], } +PLATFORM_SCHEMA = vol.Schema({ + vol.Required('platform'): 'yr', + vol.Optional(CONF_MONITORED_CONDITIONS, default=[]): + [vol.In(SENSOR_TYPES.keys())], + vol.Optional('elevation'): cv.positive_int, +}) + def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the Yr.no sensor.""" @@ -58,12 +68,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): weather = YrData(coordinates) dev = [] - if 'monitored_conditions' in config: - for variable in config['monitored_conditions']: - if variable not in SENSOR_TYPES: - _LOGGER.error('Sensor type: "%s" does not exist', variable) - else: - dev.append(YrSensor(variable, weather)) + for sensor_type in config[CONF_MONITORED_CONDITIONS]: + dev.append(YrSensor(sensor_type, weather)) # add symbol as default sensor if len(dev) == 0: diff --git a/tests/components/sensor/test_yr.py b/tests/components/sensor/test_yr.py index aa15d7cf3eab3e96c8a504a52ed9b7748cad871f..c60324e38b94dd746c1f50c2d8a38d1cd4268376 100644 --- a/tests/components/sensor/test_yr.py +++ b/tests/components/sensor/test_yr.py @@ -4,9 +4,8 @@ from unittest.mock import patch import pytest -import homeassistant.components.sensor as sensor +from homeassistant.bootstrap import _setup_component import homeassistant.util.dt as dt_util - from tests.common import get_test_home_assistant @@ -32,12 +31,9 @@ class TestSensorYr: return_value=betamax_session): with patch('homeassistant.components.sensor.yr.dt_util.utcnow', return_value=now): - assert sensor.setup(self.hass, { - 'sensor': { - 'platform': 'yr', - 'elevation': 0, - } - }) + assert _setup_component(self.hass, 'sensor', { + 'sensor': {'platform': 'yr', + 'elevation': 0}}) state = self.hass.states.get('sensor.yr_symbol') @@ -53,19 +49,15 @@ class TestSensorYr: return_value=betamax_session): with patch('homeassistant.components.sensor.yr.dt_util.utcnow', return_value=now): - assert sensor.setup(self.hass, { - 'sensor': { - 'platform': 'yr', - 'elevation': 0, - 'monitored_conditions': { - 'pressure', - 'windDirection', - 'humidity', - 'fog', - 'windSpeed' - } - } - }) + assert _setup_component(self.hass, 'sensor', { + 'sensor': {'platform': 'yr', + 'elevation': 0, + 'monitored_conditions': [ + 'pressure', + 'windDirection', + 'humidity', + 'fog', + 'windSpeed']}}) state = self.hass.states.get('sensor.yr_pressure') assert 'hPa' == state.attributes.get('unit_of_measurement')