From a0b6fdc36c9c0866bafdfd86ce695221a8d12fb5 Mon Sep 17 00:00:00 2001 From: Jules Dejaeghere Date: Sun, 12 May 2024 17:58:12 +0200 Subject: [PATCH] Add timezone offset in forecast service call response. Related to #26 --- custom_components/irm_kmi/coordinator.py | 11 ++++++----- tests/test_coordinator.py | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/custom_components/irm_kmi/coordinator.py b/custom_components/irm_kmi/coordinator.py index 1be0cf3..32e36e9 100644 --- a/custom_components/irm_kmi/coordinator.py +++ b/custom_components/irm_kmi/coordinator.py @@ -273,7 +273,7 @@ class IrmKmiCoordinator(TimestampDataUpdateCoordinator): return None forecasts = list() - day = datetime.now() + day = datetime.now(tz=pytz.timezone('Europe/Brussels')).replace(hour=0, minute=0, second=0, microsecond=0) for f in data: if 'dateShow' in f: @@ -282,6 +282,7 @@ class IrmKmiCoordinator(TimestampDataUpdateCoordinator): hour = f.get('hour', None) if hour is None: continue + day = day.replace(hour=int(hour)) precipitation_probability = None if f.get('precipChance', None) is not None: @@ -299,7 +300,7 @@ class IrmKmiCoordinator(TimestampDataUpdateCoordinator): pass forecast = Forecast( - datetime=day.strftime(f'%Y-%m-%dT{hour}:00:00'), + datetime=day.isoformat(), condition=CDT_MAP.get((ww, f.get('dayNight', None)), None), native_precipitation=f.get('precipQuantity', None), native_temperature=f.get('temp', None), @@ -347,10 +348,10 @@ class IrmKmiCoordinator(TimestampDataUpdateCoordinator): pass is_daytime = f.get('dayNight', None) == 'd' - + now = datetime.now(pytz.timezone('Europe/Brussels')) forecast = IrmKmiForecast( - datetime=(datetime.now() + timedelta(days=n_days)).strftime('%Y-%m-%d') - if is_daytime else datetime.now().strftime('%Y-%m-%d'), + datetime=(now + timedelta(days=n_days)).strftime('%Y-%m-%d') + if is_daytime else now.strftime('%Y-%m-%d'), condition=CDT_MAP.get((f.get('ww1', None), f.get('dayNight', None)), None), native_precipitation=precipitation, native_temperature=f.get('tempMax', None), diff --git a/tests/test_coordinator.py b/tests/test_coordinator.py index bd06d3b..1ebb152 100644 --- a/tests/test_coordinator.py +++ b/tests/test_coordinator.py @@ -113,7 +113,7 @@ async def test_daily_forecast( assert result[1] == expected -@freeze_time(datetime.fromisoformat('2023-12-26T18:30:00.028724')) +@freeze_time(datetime.fromisoformat('2023-12-26T18:30:00+01:00')) def test_hourly_forecast() -> None: api_data = get_api_data("forecast.json").get('for', {}).get('hourly') result = IrmKmiCoordinator.hourly_list_to_forecast(api_data) @@ -122,7 +122,7 @@ def test_hourly_forecast() -> None: assert len(result) == 49 expected = Forecast( - datetime='2023-12-27T02:00:00', + datetime='2023-12-27T02:00:00+01:00', condition=ATTR_CONDITION_RAINY, native_precipitation=.98, native_temperature=8,