Skip to content

Commit a10a6ad

Browse files
committed
Define RelayLock class, implement
1 parent a9d05f1 commit a10a6ad

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

plugwise_usb/api.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,13 @@ class RelayConfig:
172172
init_state: bool | None = None
173173

174174

175+
@dataclass(frozen=True)
176+
class RelayLock:
177+
"""Status of relay lock."""
178+
179+
lock_state: bool | None = None
180+
181+
175182
@dataclass(frozen=True)
176183
class RelayState:
177184
"""Status of relay."""

plugwise_usb/nodes/circle.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
NodeType,
1919
PowerStatistics,
2020
RelayConfig,
21+
RelayLock,
2122
RelayState,
2223
)
2324
from ..connection import StickController
@@ -85,7 +86,7 @@ def __init__(
8586
super().__init__(mac, address, controller, loaded_callback)
8687

8788
# Relay
88-
self._relay_lock = False
89+
self._relay_lock: RelayLock = RelayLock(lock_state=False)
8990
self._relay_state: RelayState = RelayState()
9091
self._relay_config: RelayConfig = RelayConfig()
9192

@@ -178,13 +179,12 @@ async def relay_init_on(self) -> None:
178179
await self._relay_init_set(True)
179180

180181
@property
181-
def relay_lock(self) -> bool:
182+
def relay_lock(self) -> RelayLock:
182183
"""State of the relay lock."""
183184
return self._relay_lock
184185

185-
async def set_relay_lock(self, state: bool) -> None:
186+
async def set_relay_lock(self, state: bool) -> RelayLock:
186187
"""Set the state of the relay-lock."""
187-
self._relay_lock = state
188188
await self._relay_update_lock(state)
189189
await self.publish_feature_update_to_subscribers(
190190
NodeFeature.RELAY_LOCK, state
@@ -644,7 +644,7 @@ async def set_relay(self, state: bool) -> bool:
644644
f"Changing state of relay is not supported for node {self.mac}"
645645
)
646646

647-
if self._relay_lock:
647+
if getattr(self._relay_lock, "lock_state"):
648648
raise NodeError("Changing state of relay failed, it is locked")
649649

650650
_LOGGER.debug("set_relay() start")
@@ -710,10 +710,10 @@ async def _relay_update_state(
710710
)
711711
await self.save_cache()
712712

713-
async def _relay_update_lock(self, lock: bool) -> None:
713+
async def _relay_update_lock(self, state: bool) -> None:
714714
"""Process relay lock update."""
715715
state_update = False
716-
if lock:
716+
if state:
717717
self._set_cache(CACHE_RELAY_LOCK, "True")
718718
if not self._relay_lock:
719719
state_update = True
@@ -722,7 +722,7 @@ async def _relay_update_lock(self, lock: bool) -> None:
722722
if self._relay_lock:
723723
state_update = True
724724

725-
self._relay_lock = lock
725+
self._relay_lock = replace(self._relay_lock, lock_state=state)
726726
if state_update:
727727
await self.publish_feature_update_to_subscribers(
728728
NodeFeature.RELAY_LOCK, self._relay_lock

0 commit comments

Comments
 (0)