Skip to content

Commit 2a1e670

Browse files
committed
Update unregister_node functions
1 parent 68e5659 commit 2a1e670

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

plugwise_usb/network/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,12 @@ async def clear_cache(self) -> None:
166166

167167
async def unregister_node(self, mac: str) -> None:
168168
"""Unregister node from current Plugwise network."""
169+
if not validate_mac(mac):
170+
raise NodeError(f"MAC {mac} invalid")
171+
172+
node_to_remove = self._nodes[mac]
169173
try:
170-
await self._register.unregister_node(mac)
174+
await self._register.unregister_node(node_to_remove)
171175
except (KeyError, NodeError) as exc:
172176
raise MessageError("Mac not registered, already deleted?") from exc
173177

plugwise_usb/network/registry.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import logging
99
from typing import Final
1010

11-
from ..api import NodeType
11+
from ..api import NodeType, PlugwiseNode
1212
from ..constants import UTF8
1313
from ..exceptions import CacheError, NodeError, StickError
1414
from ..helpers.util import validate_mac
@@ -266,27 +266,26 @@ async def register_node(self, mac: str) -> None:
266266
if self.update_network_registration(mac):
267267
await self._exec_node_discover_callback(mac, None, False)
268268

269-
async def unregister_node(self, mac: str) -> None:
269+
async def unregister_node(self, node: PlugwiseNode) -> None:
270270
"""Unregister node from current Plugwise network."""
271-
if not validate_mac(mac):
272-
raise NodeError(f"MAC {mac} invalid")
273-
274-
if mac not in self._registry:
275-
raise NodeError(f"No existing Node ({mac}) found to unregister")
271+
if node.mac not in self._registry:
272+
raise NodeError(f"No existing Node ({node.mac}) found to unregister")
276273

277-
request = NodeRemoveRequest(self._send_to_controller, self._mac_nc, mac)
274+
# First reset the node, then remove it from the network.
275+
node.reset_node()
276+
request = NodeRemoveRequest(self._send_to_controller, self._mac_nc, node.mac)
278277
if (response := await request.send()) is None:
279278
raise NodeError(
280279
f"The Zigbee network coordinator '{self._mac_nc!r}'"
281-
+ f" did not respond to unregister node '{mac}'"
280+
+ f" did not respond to unregister node '{node.mac}'"
282281
)
283282
if response.status.value != 1:
284283
raise NodeError(
285284
f"The Zigbee network coordinator '{self._mac_nc!r}'"
286-
+ f" failed to unregister node '{mac}'"
285+
+ f" failed to unregister node '{node.mac}'"
287286
)
288287

289-
await self.remove_network_registration(mac)
288+
await self.remove_network_registration(node.mac)
290289

291290
async def clear_register_cache(self) -> None:
292291
"""Clear current cache."""

0 commit comments

Comments
 (0)