Config validation of yr sensor (#1767)

This commit is contained in:
Daniel Høyer Iversen 2016-04-10 19:43:05 +02:00 committed by Paulus Schoutsen
parent 24257fe4a3
commit d3493c7e5a
2 changed files with 26 additions and 28 deletions

View File

@ -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:

View File

@ -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')