Skip to content

Commit a9f7cdd

Browse files
committed
Fix bug where area sensor doesn't update
1 parent a4dd7a8 commit a9f7cdd

File tree

2 files changed

+16
-20
lines changed

2 files changed

+16
-20
lines changed

custom_components/load_shedding/__init__.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""The LoadShedding component."""
22
from __future__ import annotations
33

4-
from datetime import datetime, timedelta, timezone
4+
from datetime import UTC, datetime, timedelta, timezone
55
import logging
66
from typing import Any
77

@@ -186,7 +186,7 @@ def __init__(self, hass: HomeAssistant, sepush: SePush) -> None:
186186
async def _async_update_data(self) -> dict:
187187
"""Retrieve latest load shedding data."""
188188

189-
now = datetime.now(datetime.UTC).replace(microsecond=0)
189+
now = datetime.now(UTC).replace(microsecond=0)
190190
diff = 0
191191
if self.last_update is not None:
192192
diff = (now - self.last_update).seconds
@@ -207,7 +207,7 @@ async def _async_update_data(self) -> dict:
207207

208208
async def async_update_stage(self) -> dict:
209209
"""Retrieve latest stage."""
210-
now = datetime.now(datetime.UTC).replace(microsecond=0)
210+
now = datetime.now(UTC).replace(microsecond=0)
211211
try:
212212
esp = await self.hass.async_add_executor_job(self.sepush.status)
213213
except SePushError as err:
@@ -222,7 +222,7 @@ async def async_update_stage(self) -> dict:
222222
planned = [
223223
{
224224
ATTR_STAGE: stage,
225-
ATTR_START_TIME: start_time.astimezone(datetime.UTC),
225+
ATTR_START_TIME: start_time.astimezone(UTC),
226226
}
227227
]
228228

@@ -233,7 +233,7 @@ async def async_update_stage(self) -> dict:
233233
next_stage.get("stage_start_timestamp")
234234
)
235235
prev_end = prev_end.replace(second=0, microsecond=0)
236-
planned[i][ATTR_END_TIME] = prev_end.astimezone(datetime.UTC)
236+
planned[i][ATTR_END_TIME] = prev_end.astimezone(UTC)
237237

238238
# Next
239239
stage = Stage(int(next_stage.get("stage", "0")))
@@ -244,7 +244,7 @@ async def async_update_stage(self) -> dict:
244244
planned.append(
245245
{
246246
ATTR_STAGE: stage,
247-
ATTR_START_TIME: start_time.astimezone(datetime.UTC),
247+
ATTR_START_TIME: start_time.astimezone(UTC),
248248
}
249249
)
250250

@@ -289,7 +289,7 @@ def add_area(self, area: Area = None) -> None:
289289
async def _async_update_data(self) -> dict:
290290
"""Retrieve latest load shedding data."""
291291

292-
now = datetime.now(datetime.UTC).replace(microsecond=0)
292+
now = datetime.now(UTC).replace(microsecond=0)
293293
diff = 0
294294
if self.last_update is not None:
295295
diff = (now - self.last_update).seconds
@@ -332,10 +332,8 @@ async def async_update_area(self) -> dict:
332332
if note == str(Stage.LOAD_REDUCTION):
333333
stage = Stage.LOAD_REDUCTION
334334

335-
start = datetime.fromisoformat(event.get("start")).astimezone(
336-
datetime.UTC
337-
)
338-
end = datetime.fromisoformat(event.get("end")).astimezone(datetime.UTC)
335+
start = datetime.fromisoformat(event.get("start")).astimezone(UTC)
336+
end = datetime.fromisoformat(event.get("end")).astimezone(UTC)
339337

340338
events.append(
341339
{
@@ -478,7 +476,7 @@ def utc_dt(date: datetime, time: datetime) -> datetime:
478476
second=0,
479477
microsecond=0,
480478
tzinfo=sast,
481-
).astimezone(datetime.UTC)
479+
).astimezone(UTC)
482480

483481

484482
class LoadSheddingQuotaCoordinator(DataUpdateCoordinator[dict[str, Any]]):
@@ -494,7 +492,7 @@ def __init__(self, hass: HomeAssistant, sepush: SePush) -> None:
494492
async def _async_update_data(self) -> dict:
495493
"""Retrieve latest load shedding data."""
496494

497-
now = datetime.now(datetime.UTC).replace(microsecond=0)
495+
now = datetime.now(UTC).replace(microsecond=0)
498496
try:
499497
quota = await self.async_update_quota()
500498
except UpdateFailed as err:

custom_components/load_shedding/sensor.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from __future__ import annotations
33

44
from dataclasses import dataclass
5-
from datetime import datetime, timedelta
5+
from datetime import UTC, datetime, timedelta
66
from typing import Any, cast
77

88
from load_shedding.providers import Area, Stage
@@ -153,7 +153,7 @@ def extra_state_attributes(self) -> dict[str, list, Any]:
153153
if not self.data:
154154
return self._attr_extra_state_attributes
155155

156-
now = datetime.now(datetime.UTC)
156+
now = datetime.now(UTC)
157157
# data = get_sensor_attrs(planned, planned[0].get(ATTR_STAGE, Stage.UNKNOWN))
158158
# data[ATTR_PLANNED] = []
159159
data = dict(self._attr_extra_state_attributes)
@@ -200,8 +200,6 @@ class LoadSheddingAreaSensorEntity(
200200
):
201201
"""Define a LoadShedding Area sensor entity."""
202202

203-
coordinator: CoordinatorEntity
204-
205203
def __init__(self, coordinator: CoordinatorEntity, area: Area) -> None:
206204
"""Initialize."""
207205
super().__init__(coordinator)
@@ -241,7 +239,7 @@ def native_value(self) -> StateType:
241239
if not events:
242240
return STATE_OFF
243241

244-
now = datetime.now(datetime.UTC)
242+
now = datetime.now(UTC)
245243

246244
for event in events:
247245
if ATTR_END_TIME in event and event.get(ATTR_END_TIME) < now:
@@ -270,7 +268,7 @@ def extra_state_attributes(self) -> dict[str, list, Any]:
270268
if not self.data:
271269
return self._attr_extra_state_attributes
272270

273-
now = datetime.now(datetime.UTC)
271+
now = datetime.now(UTC)
274272
data = dict(self._attr_extra_state_attributes)
275273
if events := self.data.get(ATTR_FORECAST, []):
276274
data[ATTR_FORECAST] = []
@@ -388,7 +386,7 @@ def get_sensor_attrs(forecast: list, stage: Stage = Stage.NO_LOAD_SHEDDING) -> d
388386
ATTR_STAGE: stage.value,
389387
}
390388

391-
now = datetime.now(datetime.UTC)
389+
now = datetime.now(UTC)
392390
data = dict(DEFAULT_DATA)
393391
data[ATTR_STAGE] = stage.value
394392

0 commit comments

Comments
 (0)