mirror of
https://github.com/jdejaegh/irm-kmi-ha.git
synced 2025-06-27 03:35:56 +02:00
Fix language setting causing sensor to fail. Fix #10
This commit is contained in:
parent
274e53a9ca
commit
e1c2e8a659
3 changed files with 30 additions and 4 deletions
|
@ -65,6 +65,6 @@ class IrmKmiWarning(CoordinatorEntity, BinarySensorEntity):
|
||||||
warning['is_active'] = warning.get('starts_at') < now < warning.get('ends_at')
|
warning['is_active'] = warning.get('starts_at') < now < warning.get('ends_at')
|
||||||
|
|
||||||
attrs["active_warnings_friendly_names"] = ", ".join([warning['friendly_name'] for warning in attrs['warnings']
|
attrs["active_warnings_friendly_names"] = ", ".join([warning['friendly_name'] for warning in attrs['warnings']
|
||||||
if warning['is_active']])
|
if warning['is_active'] and warning['friendly_name'] != ''])
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
|
|
|
@ -56,7 +56,6 @@ class IrmKmiCoordinator(DataUpdateCoordinator):
|
||||||
"""
|
"""
|
||||||
if (zone := self.hass.states.get(self._zone)) is None:
|
if (zone := self.hass.states.get(self._zone)) is None:
|
||||||
raise UpdateFailed(f"Zone '{self._zone}' not found")
|
raise UpdateFailed(f"Zone '{self._zone}' not found")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Note: asyncio.TimeoutError and aiohttp.ClientError are already
|
# Note: asyncio.TimeoutError and aiohttp.ClientError are already
|
||||||
# handled by the data update coordinator.
|
# handled by the data update coordinator.
|
||||||
|
@ -371,13 +370,14 @@ class IrmKmiCoordinator(DataUpdateCoordinator):
|
||||||
except TypeError:
|
except TypeError:
|
||||||
level = None
|
level = None
|
||||||
|
|
||||||
|
lang = self.hass.config.language if self.hass.config.language in LANGS else 'en'
|
||||||
result.append(
|
result.append(
|
||||||
WarningData(
|
WarningData(
|
||||||
slug=SLUG_MAP.get(warning_id, 'unknown'),
|
slug=SLUG_MAP.get(warning_id, 'unknown'),
|
||||||
id=warning_id,
|
id=warning_id,
|
||||||
level=level,
|
level=level,
|
||||||
friendly_name=data.get('warningType', {}).get('name', {}).get(self.hass.config.language),
|
friendly_name=data.get('warningType', {}).get('name', {}).get(lang, ''),
|
||||||
text=data.get('text', {}).get(self.hass.config.language),
|
text=data.get('text', {}).get(lang, ''),
|
||||||
starts_at=start,
|
starts_at=start,
|
||||||
ends_at=end
|
ends_at=end
|
||||||
)
|
)
|
||||||
|
|
|
@ -30,3 +30,29 @@ async def test_warning_data(
|
||||||
assert w['is_active']
|
assert w['is_active']
|
||||||
|
|
||||||
assert warning.extra_state_attributes['active_warnings_friendly_names'] == "Fog, Ice or snow"
|
assert warning.extra_state_attributes['active_warnings_friendly_names'] == "Fog, Ice or snow"
|
||||||
|
|
||||||
|
|
||||||
|
@freeze_time(datetime.fromisoformat('2024-01-12T07:55:00+01:00'))
|
||||||
|
async def test_warning_data(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_config_entry: MockConfigEntry
|
||||||
|
) -> None:
|
||||||
|
# When language is unknown, default to english setting
|
||||||
|
hass.config.language = "foo"
|
||||||
|
|
||||||
|
api_data = get_api_data("be_forecast_warning.json")
|
||||||
|
coordinator = IrmKmiCoordinator(hass, mock_config_entry)
|
||||||
|
|
||||||
|
result = coordinator.warnings_from_data(api_data.get('for', {}).get('warning'))
|
||||||
|
|
||||||
|
coordinator.data = {'warnings': result}
|
||||||
|
warning = IrmKmiWarning(coordinator, mock_config_entry)
|
||||||
|
warning.hass = hass
|
||||||
|
|
||||||
|
assert warning.is_on
|
||||||
|
assert len(warning.extra_state_attributes['warnings']) == 2
|
||||||
|
|
||||||
|
for w in warning.extra_state_attributes['warnings']:
|
||||||
|
assert w['is_active']
|
||||||
|
|
||||||
|
assert warning.extra_state_attributes['active_warnings_friendly_names'] == "Fog, Ice or snow"
|
||||||
|
|
Loading…
Add table
Reference in a new issue