mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 21:57:51 +00:00
Added support to language codes on Weather Underground (#4815)
* Added supported to language codes to Weather Underground * Removed unecessary None assigments
This commit is contained in:
parent
2708e193ec
commit
4d2480bbd1
@ -19,12 +19,15 @@ from homeassistant.helpers.entity import Entity
|
|||||||
from homeassistant.util import Throttle
|
from homeassistant.util import Throttle
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
_RESOURCE = 'http://api.wunderground.com/api/{}/conditions/q/'
|
_RESOURCE = 'http://api.wunderground.com/api/{}/conditions/{}/q/'
|
||||||
_ALERTS = 'http://api.wunderground.com/api/{}/alerts/q/'
|
_ALERTS = 'http://api.wunderground.com/api/{}/alerts/{}/q/'
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
CONF_ATTRIBUTION = "Data provided by the WUnderground weather service"
|
CONF_ATTRIBUTION = "Data provided by the WUnderground weather service"
|
||||||
CONF_PWS_ID = 'pws_id'
|
CONF_PWS_ID = 'pws_id'
|
||||||
|
CONF_LANG = 'lang'
|
||||||
|
|
||||||
|
DEFAULT_LANG = 'EN'
|
||||||
|
|
||||||
MIN_TIME_BETWEEN_UPDATES_ALERTS = timedelta(minutes=15)
|
MIN_TIME_BETWEEN_UPDATES_ALERTS = timedelta(minutes=15)
|
||||||
MIN_TIME_BETWEEN_UPDATES_OBSERVATION = timedelta(minutes=5)
|
MIN_TIME_BETWEEN_UPDATES_OBSERVATION = timedelta(minutes=5)
|
||||||
@ -80,9 +83,29 @@ ALERTS_ATTRS = [
|
|||||||
'message',
|
'message',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Language Supported Codes
|
||||||
|
LANG_CODES = [
|
||||||
|
'AF', 'AL', 'AR', 'HY', 'AZ', 'EU',
|
||||||
|
'BY', 'BU', 'LI', 'MY', 'CA', 'CN',
|
||||||
|
'TW', 'CR', 'CZ', 'DK', 'DV', 'NL',
|
||||||
|
'EN', 'EO', 'ET', 'FA', 'FI', 'FR',
|
||||||
|
'FC', 'GZ', 'DL', 'KA', 'GR', 'GU',
|
||||||
|
'HT', 'IL', 'HI', 'HU', 'IS', 'IO',
|
||||||
|
'ID', 'IR', 'IT', 'JP', 'JW', 'KM',
|
||||||
|
'KR', 'KU', 'LA', 'LV', 'LT', 'ND',
|
||||||
|
'MK', 'MT', 'GM', 'MI', 'MR', 'MN',
|
||||||
|
'NO', 'OC', 'PS', 'GN', 'PL', 'BR',
|
||||||
|
'PA', 'PU', 'RO', 'RU', 'SR', 'SK',
|
||||||
|
'SL', 'SP', 'SI', 'SW', 'CH', 'TL',
|
||||||
|
'TT', 'TH', 'UA', 'UZ', 'VU', 'CY',
|
||||||
|
'SN', 'JI', 'YI',
|
||||||
|
]
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_API_KEY): cv.string,
|
vol.Required(CONF_API_KEY): cv.string,
|
||||||
vol.Optional(CONF_PWS_ID): cv.string,
|
vol.Optional(CONF_PWS_ID): cv.string,
|
||||||
|
vol.Optional(CONF_LANG, default=DEFAULT_LANG):
|
||||||
|
vol.All(vol.In(LANG_CODES)),
|
||||||
vol.Required(CONF_MONITORED_CONDITIONS, default=[]):
|
vol.Required(CONF_MONITORED_CONDITIONS, default=[]):
|
||||||
vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]),
|
vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]),
|
||||||
})
|
})
|
||||||
@ -92,7 +115,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
"""Setup the WUnderground sensor."""
|
"""Setup the WUnderground sensor."""
|
||||||
rest = WUndergroundData(hass,
|
rest = WUndergroundData(hass,
|
||||||
config.get(CONF_API_KEY),
|
config.get(CONF_API_KEY),
|
||||||
config.get(CONF_PWS_ID, None))
|
config.get(CONF_PWS_ID),
|
||||||
|
config.get(CONF_LANG))
|
||||||
sensors = []
|
sensors = []
|
||||||
for variable in config[CONF_MONITORED_CONDITIONS]:
|
for variable in config[CONF_MONITORED_CONDITIONS]:
|
||||||
sensors.append(WUndergroundSensor(rest, variable))
|
sensors.append(WUndergroundSensor(rest, variable))
|
||||||
@ -192,18 +216,19 @@ class WUndergroundSensor(Entity):
|
|||||||
class WUndergroundData(object):
|
class WUndergroundData(object):
|
||||||
"""Get data from WUnderground."""
|
"""Get data from WUnderground."""
|
||||||
|
|
||||||
def __init__(self, hass, api_key, pws_id=None):
|
def __init__(self, hass, api_key, pws_id, lang):
|
||||||
"""Initialize the data object."""
|
"""Initialize the data object."""
|
||||||
self._hass = hass
|
self._hass = hass
|
||||||
self._api_key = api_key
|
self._api_key = api_key
|
||||||
self._pws_id = pws_id
|
self._pws_id = pws_id
|
||||||
|
self._lang = 'lang:{}'.format(lang)
|
||||||
self._latitude = hass.config.latitude
|
self._latitude = hass.config.latitude
|
||||||
self._longitude = hass.config.longitude
|
self._longitude = hass.config.longitude
|
||||||
self.data = None
|
self.data = None
|
||||||
self.alerts = None
|
self.alerts = None
|
||||||
|
|
||||||
def _build_url(self, baseurl=_RESOURCE):
|
def _build_url(self, baseurl=_RESOURCE):
|
||||||
url = baseurl.format(self._api_key)
|
url = baseurl.format(self._api_key, self._lang)
|
||||||
if self._pws_id:
|
if self._pws_id:
|
||||||
url = url + 'pws:{}'.format(self._pws_id)
|
url = url + 'pws:{}'.format(self._pws_id)
|
||||||
else:
|
else:
|
||||||
|
@ -23,6 +23,16 @@ VALID_CONFIG = {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INVALID_CONFIG = {
|
||||||
|
'platform': 'wunderground',
|
||||||
|
'api_key': 'BOB',
|
||||||
|
'pws_id': 'bar',
|
||||||
|
'lang': 'foo',
|
||||||
|
'monitored_conditions': [
|
||||||
|
'weather', 'feelslike_c', 'alerts'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
FEELS_LIKE = '40'
|
FEELS_LIKE = '40'
|
||||||
WEATHER = 'Clear'
|
WEATHER = 'Clear'
|
||||||
HTTPS_ICON_URL = 'https://icons.wxug.com/i/c/k/clear.gif'
|
HTTPS_ICON_URL = 'https://icons.wxug.com/i/c/k/clear.gif'
|
||||||
@ -128,17 +138,9 @@ class TestWundergroundSetup(unittest.TestCase):
|
|||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
wunderground.setup_platform(self.hass, VALID_CONFIG,
|
wunderground.setup_platform(self.hass, VALID_CONFIG,
|
||||||
self.add_devices, None))
|
self.add_devices, None))
|
||||||
invalid_config = {
|
|
||||||
'platform': 'wunderground',
|
|
||||||
'api_key': 'BOB',
|
|
||||||
'pws_id': 'bar',
|
|
||||||
'monitored_conditions': [
|
|
||||||
'weather', 'feelslike_c', 'alerts'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
wunderground.setup_platform(self.hass, invalid_config,
|
wunderground.setup_platform(self.hass, INVALID_CONFIG,
|
||||||
self.add_devices, None))
|
self.add_devices, None))
|
||||||
|
|
||||||
@unittest.mock.patch('requests.get', side_effect=mocked_requests_get)
|
@unittest.mock.patch('requests.get', side_effect=mocked_requests_get)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user