Skip to content

Commit dd50c46

Browse files
authored
Update label on interview (#909)
1 parent 90418ba commit dd50c46

File tree

1 file changed

+28
-16
lines changed

1 file changed

+28
-16
lines changed

matter_server/server/device_controller.py

+28-16
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ async def commission_with_code(
345345
retries = 3
346346
while retries:
347347
try:
348-
await self.interview_node(node_id)
348+
await self._interview_node(node_id)
349349
except (NodeNotResolving, NodeInterviewFailed) as err:
350350
if retries <= 0:
351351
raise err
@@ -425,7 +425,7 @@ async def commission_on_network(
425425
retries = 3
426426
while retries:
427427
try:
428-
await self.interview_node(node_id)
428+
await self._interview_node(node_id)
429429
except NodeInterviewFailed as err:
430430
if retries <= 0:
431431
raise err
@@ -567,17 +567,7 @@ async def discover_commissionable_nodes(
567567
for x in sdk_result
568568
]
569569

570-
@api_command(APICommand.INTERVIEW_NODE)
571-
async def interview_node(self, node_id: int) -> None:
572-
"""Interview a node."""
573-
if node_id >= TEST_NODE_START:
574-
LOGGER.debug(
575-
"interview_node called for test node %s",
576-
node_id,
577-
)
578-
self.server.signal_event(EventType.NODE_UPDATED, self._nodes[node_id])
579-
return
580-
570+
async def _interview_node(self, node_id: int) -> None:
581571
try:
582572
LOGGER.info("Interviewing node: %s", node_id)
583573
read_response: Attribute.AsyncReadTransaction.ReadResponse = (
@@ -622,6 +612,28 @@ async def interview_node(self, node_id: int) -> None:
622612

623613
LOGGER.debug("Interview of node %s completed", node_id)
624614

615+
@api_command(APICommand.INTERVIEW_NODE)
616+
async def interview_node(self, node_id: int) -> None:
617+
"""Interview a node."""
618+
if node_id >= TEST_NODE_START:
619+
LOGGER.debug(
620+
"interview_node called for test node %s",
621+
node_id,
622+
)
623+
self.server.signal_event(EventType.NODE_UPDATED, self._nodes[node_id])
624+
return
625+
626+
await self._interview_node(node_id)
627+
628+
if self._default_fabric_label:
629+
await self._chip_device_controller.send_command(
630+
node_id,
631+
0,
632+
Clusters.OperationalCredentials.Commands.UpdateFabricLabel(
633+
self._default_fabric_label
634+
),
635+
)
636+
625637
@api_command(APICommand.DEVICE_COMMAND)
626638
async def send_device_command(
627639
self,
@@ -1114,7 +1126,7 @@ def attribute_updated_callback(
11141126
and new_value != old_value
11151127
):
11161128
# schedule a full interview of the node if the software version changed
1117-
self._loop.create_task(self.interview_node(node_id))
1129+
self._loop.create_task(self._interview_node(node_id))
11181130

11191131
# store updated value in node attributes
11201132
node.attributes[str(path)] = new_value
@@ -1346,7 +1358,7 @@ async def _setup_node_try_once(
13461358
or node_data.interview_version != DATA_MODEL_SCHEMA_VERSION
13471359
):
13481360
try:
1349-
await self.interview_node(node_id)
1361+
await self._interview_node(node_id)
13501362
except NodeInterviewFailed as err:
13511363
node_logger.warning(
13521364
"Setup for node failed: %s",
@@ -1436,7 +1448,7 @@ async def _handle_endpoints_added(
14361448
) -> None:
14371449
"""Handle callback for when bridge endpoint(s) get added."""
14381450
# we simply do a full interview of the node
1439-
await self.interview_node(node_id)
1451+
await self._interview_node(node_id)
14401452
# signal event to consumers
14411453
for endpoint_id in endpoints:
14421454
self.server.signal_event(

0 commit comments

Comments
 (0)