Skip to content

Commit 602797d

Browse files
committed
Circle: line up clock-sync method with CirclePlus
1 parent c9293ad commit 602797d

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

plugwise_usb/nodes/circle.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -880,9 +880,26 @@ async def clock_synchronize(self) -> bool:
880880
return False
881881

882882
dt_now = datetime.now(tz=UTC)
883-
days_diff = response.day_of_week.value - dt_now.weekday()
884-
target_date = dt_now + timedelta(days=days_diff)
885-
circle_timestamp = target_date.replace(
883+
dt_now_date = dt_now.replace(hour=0, minute=0, second=0, microsecond=0)
884+
response_date = datetime(
885+
response.date.value.year,
886+
response.date.value.month,
887+
response.date.value.day,
888+
hour=0,
889+
minute=0,
890+
second=0,
891+
microsecond=0,
892+
tzinfo=UTC,
893+
)
894+
if dt_now_date != response_date:
895+
_LOGGER.info(
896+
"Sync clock of node %s because time has drifted %s days",
897+
self._mac_in_str,
898+
int(abs((dt_now_date - response_date).days)),
899+
)
900+
return await self._send_clock_set_req()
901+
902+
circle_timestamp: datetime = dt_now.replace(
886903
hour=response.time.value.hour,
887904
minute=response.time.value.minute,
888905
second=response.time.value.second,
@@ -902,7 +919,10 @@ async def clock_synchronize(self) -> bool:
902919
raise NodeError(
903920
"Unable to synchronize clock when protocol version is unknown"
904921
)
922+
return await self._send_clock_set_req()
905923

924+
async def _send_clock_set_req(self) -> bool:
925+
"""Send CirclePlusRealTimeClockSetRequest."""
906926
set_request = CircleClockSetRequest(
907927
self._send,
908928
self._mac_in_bytes,

0 commit comments

Comments
 (0)