Skip to content

Commit ba45582

Browse files
committed
Reset pulse-collection and request a NodeInfo update
1 parent 2ed14ff commit ba45582

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

plugwise_usb/nodes/circle.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
PULSES_PER_KW_SECOND,
2929
SECOND_IN_NANOSECONDS,
3030
)
31-
from ..exceptions import FeatureError, NodeError
31+
from ..exceptions import FeatureError, MessageError, NodeError
3232
from ..messages.requests import (
3333
CircleClockGetRequest,
3434
CircleClockSetRequest,
@@ -43,7 +43,7 @@
4343
from .helpers import EnergyCalibration, raise_not_loaded
4444
from .helpers.counter import EnergyCounters
4545
from .helpers.firmware import CIRCLE_FIRMWARE_SUPPORT
46-
from .helpers.pulses import PulseLogRecord, calc_log_address
46+
from .helpers.pulses import PulseCollection, PulseLogRecord, calc_log_address
4747
from .node import PlugwiseBaseNode
4848

4949
CACHE_CURRENT_LOG_ADDRESS = "current_log_address"
@@ -1228,6 +1228,11 @@ async def get_state(self, features: tuple[NodeFeature]) -> dict[NodeFeature, Any
12281228

12291229
async def energy_reset_request(self) -> None:
12301230
"""Send an energy-reset to a Node."""
1231+
if self._node_protocols is None:
1232+
raise NodeError(
1233+
"Unable to energy-rest when protocol version is unknown"
1234+
)
1235+
12311236
request = CircleClockSetRequest(
12321237
self._send,
12331238
self._mac_in_bytes,
@@ -1236,18 +1241,25 @@ async def energy_reset_request(self) -> None:
12361241
True,
12371242
)
12381243
if (response := await request.send()) is None:
1239-
raise NodeError(f"Energy-reset for {mac} failed")
1244+
raise NodeError(f"Energy-reset for {self._mac_in_str} failed")
12401245

12411246
if response.ack_id != NodeResponseType.CLOCK_ACCEPTED:
12421247
raise MessageError(
12431248
f"Unexpected NodeResponseType {response.ack_id!r} received as response to CircleClockSetRequest"
12441249
)
12451250

1251+
_LOGGER.warning("Energy reset for Node %s successful", self._mac_in_bytes)
12461252
# Clear the cached energy_collection
12471253
if self._cache_enabled:
12481254
self._node_cache.update_state(CACHE_ENERGY_COLLECTION, "")
1255+
_LOGGER.warning("Energy-collection cache cleared successfully")
12491256
await self._node_cache.save_cache()
12501257

1258+
# Clear PulseCollection._logs
1259+
self._energy_counters.reset_pulse_collection()
1260+
12511261
# Request a NodeInfo update
12521262
if await self.node_info_update() is None:
12531263
_LOGGER.warning("Node info update failed after energy-reset")
1264+
else:
1265+
_LOGGER.warning("Node info update after energy-reset successful")

plugwise_usb/nodes/helpers/counter.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ def add_pulse_stats(
100100
)
101101
self.update()
102102

103+
def reset_pulse_collection(self) -> None:
104+
""" Reset the related pulse collection."""
105+
self._pulse_collection.reset()
106+
103107
@property
104108
def energy_statistics(self) -> EnergyStatistics:
105109
"""Return collection with energy statistics."""

0 commit comments

Comments
 (0)