mirror of
https://github.com/home-assistant/core.git
synced 2025-07-13 16:27:08 +00:00
Add option to set language of openweathermap sensor, and handle updating errors (#8046)
* Add option to set language of openweathermap sensor messages * handle error updating openweathermap sensor
This commit is contained in:
parent
844c8149d7
commit
18f81d7824
@ -23,6 +23,7 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
|
|
||||||
CONF_ATTRIBUTION = "Data provided by OpenWeatherMap"
|
CONF_ATTRIBUTION = "Data provided by OpenWeatherMap"
|
||||||
CONF_FORECAST = 'forecast'
|
CONF_FORECAST = 'forecast'
|
||||||
|
CONF_LANGUAGE = 'language'
|
||||||
|
|
||||||
DEFAULT_NAME = 'OWM'
|
DEFAULT_NAME = 'OWM'
|
||||||
|
|
||||||
@ -45,7 +46,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
|||||||
vol.Optional(CONF_MONITORED_CONDITIONS, default=[]):
|
vol.Optional(CONF_MONITORED_CONDITIONS, default=[]):
|
||||||
vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]),
|
vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]),
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
vol.Optional(CONF_FORECAST, default=False): cv.boolean
|
vol.Optional(CONF_FORECAST, default=False): cv.boolean,
|
||||||
|
vol.Optional(CONF_LANGUAGE, default=None): cv.string,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -61,8 +63,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
|
|
||||||
name = config.get(CONF_NAME)
|
name = config.get(CONF_NAME)
|
||||||
forecast = config.get(CONF_FORECAST)
|
forecast = config.get(CONF_FORECAST)
|
||||||
|
language = config.get(CONF_LANGUAGE)
|
||||||
|
if isinstance(language, str):
|
||||||
|
language = language.lower()[:2]
|
||||||
|
|
||||||
owm = OWM(config.get(CONF_API_KEY))
|
owm = OWM(API_key=config.get(CONF_API_KEY), language=language)
|
||||||
|
|
||||||
if not owm:
|
if not owm:
|
||||||
_LOGGER.error("Unable to connect to OpenWeatherMap")
|
_LOGGER.error("Unable to connect to OpenWeatherMap")
|
||||||
@ -178,7 +183,10 @@ class WeatherData(object):
|
|||||||
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Get the latest data from OpenWeatherMap."""
|
"""Get the latest data from OpenWeatherMap."""
|
||||||
obs = self.owm.weather_at_coords(self.latitude, self.longitude)
|
try:
|
||||||
|
obs = self.owm.weather_at_coords(self.latitude, self.longitude)
|
||||||
|
except TypeError:
|
||||||
|
obs = None
|
||||||
if obs is None:
|
if obs is None:
|
||||||
_LOGGER.warning("Failed to fetch data from OpenWeatherMap")
|
_LOGGER.warning("Failed to fetch data from OpenWeatherMap")
|
||||||
return
|
return
|
||||||
@ -186,6 +194,9 @@ class WeatherData(object):
|
|||||||
self.data = obs.get_weather()
|
self.data = obs.get_weather()
|
||||||
|
|
||||||
if self.forecast == 1:
|
if self.forecast == 1:
|
||||||
obs = self.owm.three_hours_forecast_at_coords(
|
try:
|
||||||
self.latitude, self.longitude)
|
obs = self.owm.three_hours_forecast_at_coords(
|
||||||
self.fc_data = obs.get_forecast()
|
self.latitude, self.longitude)
|
||||||
|
self.fc_data = obs.get_forecast()
|
||||||
|
except TypeError:
|
||||||
|
_LOGGER.warning("Failed to fetch forecast from OpenWeatherMap")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user