@@ -191,7 +191,8 @@ async def get_operational_service(self,
191
191
raise ValueError ("Both node_id and compressed_fabric_id must be provided together or not at all." )
192
192
193
193
self ._name_filter = f'{ compressed_fabric_id :016x} -{ node_id :016x} .{ MdnsServiceType .OPERATIONAL .value } ' .upper ()
194
- return await self ._get_service (MdnsServiceType .OPERATIONAL , log_output , discovery_timeout_sec )
194
+ logger .info (f"name filter { self ._name_filter } " )
195
+ return await self ._get_service (MdnsServiceType .OPERATIONAL , log_output , discovery_timeout_sec , self ._name_filter )
195
196
196
197
async def get_border_router_service (self , log_output : bool = False ,
197
198
discovery_timeout_sec : float = DISCOVERY_TIMEOUT_SEC
@@ -493,7 +494,8 @@ def _get_instance_name(self, service_info: AsyncServiceInfo) -> str:
493
494
494
495
async def _get_service (self , service_type : MdnsServiceType ,
495
496
log_output : bool ,
496
- discovery_timeout_sec : float
497
+ discovery_timeout_sec : float ,
498
+ expected_value : str = None ,
497
499
) -> Optional [MdnsServiceInfo ]:
498
500
"""
499
501
Asynchronously discovers a specific type of mDNS service within the network and returns its details.
@@ -515,7 +517,12 @@ async def _get_service(self, service_type: MdnsServiceType,
515
517
logger .info ("Getting service from discovered services: %s" , self ._discovered_services )
516
518
517
519
if service_type .value in self ._discovered_services :
518
- return self ._discovered_services [service_type .value ][- 1 ]
520
+ if expected_value is not None :
521
+ for service in self ._discovered_services [service_type .value ]:
522
+ if service .service_name == expected_value .replace ("._MATTER._TCP.LOCAL." ,"._matter._tcp.local." ):
523
+ return service
524
+ else :
525
+ return self ._discovered_services [service_type .value ][0 ]
519
526
else :
520
527
return None
521
528
0 commit comments