def test_search_request(self): """Test parsing and streaming SearchRequest KNX/IP packet.""" raw = ( 0x06, 0x10, 0x02, 0x01, 0x00, 0x0E, 0x08, 0x01, 0xE0, 0x00, 0x17, 0x0C, 0x0E, 0x57, ) xknx = XKNX() knxipframe = KNXIPFrame(xknx) knxipframe.from_knx(raw) assert isinstance(knxipframe.body, SearchRequest) assert knxipframe.body.discovery_endpoint == HPAI( ip_addr="224.0.23.12", port=3671 ) knxipframe2 = KNXIPFrame.init_from_body( SearchRequest( xknx, discovery_endpoint=HPAI(ip_addr="224.0.23.12", port=3671) ) ) assert knxipframe2.to_knx() == list(raw)
def test_search_reqeust(self): """Test string representation of KNX/IP SearchRequest.""" xknx = XKNX(loop=self.loop) search_request = SearchRequest(xknx) self.assertEqual( str(search_request), '<SearchRequest discovery_endpoint="<HPAI 224.0.23.12:3671 />" />')
async def _search_interface(self, interface: str, ip_addr: str) -> None: """Send a search request on a specific interface.""" logger.debug("Searching on %s / %s", interface, ip_addr) udp_client = UDPClient( self.xknx, (ip_addr, 0), (self.xknx.multicast_group, self.xknx.multicast_port), multicast=True, ) udp_client.register_callback( partial(self._response_rec_callback, interface=interface), [KNXIPServiceType.SEARCH_RESPONSE], ) await udp_client.connect() self._udp_clients.append(udp_client) (local_addr, local_port) = udp_client.getsockname() discovery_endpoint = HPAI(ip_addr=local_addr, port=local_port) search_request = SearchRequest(self.xknx, discovery_endpoint=discovery_endpoint) udp_client.send(KNXIPFrame.init_from_body(search_request))
def test_search_request(self): """Test parsing and streaming SearchRequest KNX/IP packet.""" raw = bytes.fromhex("06 10 02 01 00 0E 08 01 E0 00 17 0C 0E 57") knxipframe = KNXIPFrame() knxipframe.from_knx(raw) assert isinstance(knxipframe.body, SearchRequest) assert knxipframe.body.discovery_endpoint == HPAI( ip_addr="224.0.23.12", port=3671 ) knxipframe2 = KNXIPFrame.init_from_body( SearchRequest(discovery_endpoint=HPAI(ip_addr="224.0.23.12", port=3671)) ) assert knxipframe2.to_knx() == raw
async def _send_search_requests(udp_transport: UDPTransport) -> None: """Send search requests on a specific interface.""" await udp_transport.connect() discovery_endpoint = HPAI(*udp_transport.getsockname()) # send SearchRequestExtended requesting needed DIBs search_request_extended = SearchRequestExtended( discovery_endpoint=discovery_endpoint, srps=[ SRP.request_device_description([ DIBTypeCode.DEVICE_INFO, DIBTypeCode.SUPP_SVC_FAMILIES, DIBTypeCode.SECURED_SERVICE_FAMILIES, DIBTypeCode.TUNNELING_INFO, ]) ], ) udp_transport.send(KNXIPFrame.init_from_body(search_request_extended)) # send SearchRequest for Core-V1 devices search_request = SearchRequest(discovery_endpoint=discovery_endpoint) udp_transport.send(KNXIPFrame.init_from_body(search_request))
def test_search_reqeust(self): """Test string representation of KNX/IP SearchRequest.""" search_request = SearchRequest() assert (str(search_request) == '<SearchRequest discovery_endpoint="0.0.0.0:0/udp" />')