Skip to content

Commit 3e5d8af

Browse files
committed
Skip loading node_info from cache when Node is available
- the data is already available from a NodeInfoRequest
1 parent 13941f5 commit 3e5d8af

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

plugwise_usb/nodes/node.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
CACHE_NODE_TYPE = "node_type"
5151
CACHE_HARDWARE = "hardware"
5252
CACHE_NODE_INFO_TIMESTAMP = "node_info_timestamp"
53+
CACHE_RELAY = "relay"
5354

5455
class PlugwiseBaseNode(FeaturePublisher, ABC):
5556
"""Abstract Base Class for a Plugwise node."""
@@ -459,44 +460,50 @@ async def node_info_update(
459460
_LOGGER.debug("No response for node_info_update() for %s", self.mac)
460461
await self._available_update_state(False)
461462
return self._node_info
463+
462464
await self._available_update_state(True, node_info.timestamp)
463465
await self.update_node_details(
464466
firmware=node_info.firmware,
465-
node_type=node_info.node_type,
466467
hardware=node_info.hardware,
467-
timestamp=node_info.timestamp,
468-
relay_state=node_info.relay_state,
469468
logaddress_pointer=node_info.current_logaddress_pointer,
469+
node_type=node_info.node_type,
470+
relay_state=node_info.relay_state,
471+
timestamp=node_info.timestamp,
470472
)
471473
return self._node_info
472474

473475
async def _node_info_load_from_cache(self) -> bool:
474476
"""Load node info settings from cache."""
477+
if self._available:
478+
# Skip loading this data from cache when the Node is available
479+
return True
480+
475481
firmware = self._get_cache_as_datetime(CACHE_FIRMWARE)
476482
hardware = self._get_cache(CACHE_HARDWARE)
477-
timestamp = self._get_cache_as_datetime(CACHE_NODE_INFO_TIMESTAMP)
478483
node_type: NodeType | None = None
479484
if (node_type_str := self._get_cache(CACHE_NODE_TYPE)) is not None:
480485
node_type = NodeType(int(node_type_str))
481486

487+
relay_state = self._get_cache(CACHE_RELAY)
488+
timestamp = self._get_cache_as_datetime(CACHE_NODE_INFO_TIMESTAMP)
482489
return await self.update_node_details(
483490
firmware=firmware,
484491
hardware=hardware,
492+
logaddress_pointer=None,
485493
node_type=node_type,
494+
relay_state=relay_state,
486495
timestamp=timestamp,
487-
relay_state=None,
488-
logaddress_pointer=None,
489496
)
490497

491498
# pylint: disable=too-many-arguments
492499
async def update_node_details(
493500
self,
494501
firmware: datetime | None,
495502
hardware: str | None,
503+
logaddress_pointer: int | None,
496504
node_type: NodeType | None,
497-
timestamp: datetime | None,
498505
relay_state: bool | None,
499-
logaddress_pointer: int | None,
506+
timestamp: datetime | None,
500507
) -> bool:
501508
"""Process new node info and return true if all fields are updated."""
502509
_LOGGER.debug(

0 commit comments

Comments
 (0)