|
12 | 12 |
|
13 | 13 | from ..api import NodeEvent, NodeType, PlugwiseNode, StickEvent |
14 | 14 | from ..connection import StickController |
15 | | -from ..constants import UTF8 |
| 15 | +from ..constants import UTC, UTF8 |
16 | 16 | from ..exceptions import CacheError, MessageError, NodeError, StickError, StickTimeout |
17 | 17 | from ..messages.requests import ( |
18 | | - CirclePlusAllowJoiningRequest, |
| 18 | + CircleClockSetRequest, |
19 | 19 | CircleMeasureIntervalRequest, |
| 20 | + CirclePlusAllowJoiningRequest, |
20 | 21 | NodePingRequest, |
21 | 22 | ) |
22 | 23 | from ..messages.responses import ( |
@@ -541,6 +542,23 @@ async def allow_join_requests(self, state: bool) -> None: |
541 | 542 | _LOGGER.debug("Sent AllowJoiningRequest to Circle+ with state=%s", state) |
542 | 543 | self.accept_join_request = state |
543 | 544 |
|
| 545 | + async def energy_reset_request(self, mac: str) -> None: |
| 546 | + """Send an energy-reset to a Node.""" |
| 547 | + request = CircleClockSetRequest( |
| 548 | + self._send, |
| 549 | + self._mac_in_bytes, |
| 550 | + datetime.now(tz=UTC), |
| 551 | + self._node_protocols.max, |
| 552 | + True, |
| 553 | + ) |
| 554 | + if (response := await request.send()) is None: |
| 555 | + raise NodeError(f"Energy-reset for {mac} failed") |
| 556 | + |
| 557 | + if response.ack_id != NodeResponseType.CLOCK_ACCEPTED: |
| 558 | + raise MessageError( |
| 559 | + f"Unknown NodeResponseType '{response.response_type.name}' received" |
| 560 | + ) |
| 561 | + |
544 | 562 | async def set_energy_intervals( |
545 | 563 | self, mac: str, consumption: int, production: int |
546 | 564 | ) -> None: |
|
0 commit comments