Skip to content

Commit d50fcb1

Browse files
committed
Calculate also difference in days,
next to difference within a day
1 parent 78d5081 commit d50fcb1

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

plugwise_usb/nodes/circle_plus.py

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,26 @@ async def clock_synchronize(self) -> bool:
7777
await self._available_update_state(True, response.timestamp)
7878

7979
dt_now = datetime.now(tz=UTC)
80-
days_diff = (response.day_of_week.value - dt_now.weekday()) % 7
80+
dt_now_date = dt_now.replace(hour=0, minute=0, second=0, microsecond=0)
81+
response_date = datetime(
82+
response.date.value.year,
83+
response.date.value.month,
84+
response.date.value.day,
85+
hour=0,
86+
minute=0,
87+
second=0,
88+
microsecond=0,
89+
tzinfo=UTC,
90+
)
91+
if dt_now_date != response_date:
92+
_LOGGER.warning(
93+
"Reset realtime clock of node %s because time has drifted %s days",
94+
self._mac_in_str,
95+
int(abs((dt_now_date - response_date).days)),
96+
)
97+
return await self._send_clock_set_req()
98+
8199
circle_plus_timestamp: datetime = dt_now.replace(
82-
day=(dt_now.day + days_diff),
83100
hour=response.time.value.hour,
84101
minute=response.time.value.minute,
85102
second=response.time.value.second,
@@ -93,9 +110,13 @@ async def clock_synchronize(self) -> bool:
93110
_LOGGER.warning(
94111
"Reset realtime clock of node %s because time has drifted %s seconds while max drift is set to %s seconds)",
95112
self._mac_in_str,
96-
str(int(abs(clock_offset.total_seconds()))),
97-
str(MAX_TIME_DRIFT),
113+
int(abs(clock_offset.total_seconds())),
114+
MAX_TIME_DRIFT,
98115
)
116+
return await self._send_clock_set_req()
117+
118+
async def _send_clock_set_req(self) -> bool:
119+
"""Send CirclePlusRealTimeClockSetRequest."""
99120
set_request = CirclePlusRealTimeClockSetRequest(
100121
self._send, self._mac_in_bytes, datetime.now(tz=UTC)
101122
)

0 commit comments

Comments
 (0)