-
Notifications
You must be signed in to change notification settings - Fork 0
Finding an IntelliCenter controller
parnic edited this page Jan 4, 2025
·
5 revisions
IntelliCenter controllers respond to mDNS queries. That is, a multicast UDP query to 224.0.0.251:5353 following the mDNS packet format.
Specifically, that means (all in big-endian):
- Transaction ID: 0x0000
- Flags: 0x0000
- Questions: 0x0001
- All RRs: 0x0000
- Queries:
- 1:
- Name: _http._tcp.local (dots are not part of the query, only delimiters here; each segment is prefixed by the length of the segment and the entire string ends with a 0 octet, so [05]_http[04]_tcp[05]local[00])
- Type: PTR (0x000c)
- Class: IN (0x0001)
- 1:
The unit will respond with a unicast packet. For my local system, that packet contains (for an IPv4 system):
- Transaction ID: 0x0000
- Flags: 0x8400 (Breaking down the bits here, that means 1 0000 1 0 0 0 0 0 0 0000, or 1: "is response", 0000: "opcode 0", 1: "is authority", 0: "not truncated", 0: "no recursion desired", 0: "no recursion available", 0: reserved 0 bit, 0: "answer is not authenticated", 0: "non-authenticated data is unaccaptable" (🤷), 0000: "no error")
- Questions: 0x0000
- For some queries, the issued Question will be included as part of the response. If this value is > 0, you'll need to process/skip over the questions after reading RRs and before processing answers. Question segments follow the format laid out above (Name, Type, Class).
- Answer RRs: 0x0004
- Authority RRs: 0x0000
- Additional RRs: 0x0000
- Answers:
- 1:
- Name: _http._tcp.local
- Type: 0x000c
- Class: 0x0001
- TTL: 0x00001194
- Data: Pentair -i -nHome[._http._tcp.local] (Length: 20, where the section in []s is a pointer to the name earlier in the packet)
- 2:
- Name: [Pentair -i -nHome[._http._tcp.local]]
- Type: 0x0010 (TXT)
- Class: 0x8001
- TTL: 0x00001194
- Data: (Length: 1, just a 00 octet)
- 3:
- Name: [Pentair -i -nHome[._http._tcp.local]]
- Type: 0x0021 (SRV)
- Class: 0x8001
- TTL: 0x00000078
- Data: pentair[.local]:6680
- This is represented as: Data length: 0x0010 which consists of Priority: 0x0000, Weight: 0x0000, Port: 0x1a18 (6680), Target: pentair[.local] ([.local] is a pointer; Port here is the port for the websocket connection, 6681 is the controller's telnet port)
- 4:
- Name: [pentair[.local]]
- Type: 0x0001 (A)
- Class: 0x8001
- TTL: 0x00000078
- Data: 10.0.0.41 (which is the IP of your controller, represented by bytes: 00 04 0a 00 00 29 - 0004 is the length, then each octet of the address)
- 1:
For decoding the Answers name pointers, see https://mislove.org/teaching/cs4700/spring11/handouts/project1-primer.pdf pages 4 and 5.
Search terms: pentair intellicenter api documentation locate find search query broadcast controller device control panel