mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
openthread: add README for discovery delegate.
This commit is contained in:
parent
0f08d4050d
commit
a1e0273db2
@ -117,105 +117,6 @@ I(8139) OPENTHREAD:[NOTE]-MLE-----: Allocate router id 50
|
|||||||
I(8139) OPENTHREAD:[NOTE]-MLE-----: RLOC16 fffe -> c800
|
I(8139) OPENTHREAD:[NOTE]-MLE-----: RLOC16 fffe -> c800
|
||||||
I(8159) OPENTHREAD:[NOTE]-MLE-----: Role Detached -> Leader
|
I(8159) OPENTHREAD:[NOTE]-MLE-----: Role Detached -> Leader
|
||||||
```
|
```
|
||||||
## Using the border agent feature
|
|
||||||
|
|
||||||
You need to build ot-commissioner on the host machine and another Thread end device running OpenThread cli.
|
|
||||||
|
|
||||||
You can find the guide to build and run ot-commissioner [here](https://openthread.io/guides/commissioner/build).
|
|
||||||
|
|
||||||
Make sure to configure the same PSKc as the one in sdkconfig in ot-commisioner's config file `non-ccm-config.json`
|
|
||||||
|
|
||||||
### Connect the commissioner to the border router
|
|
||||||
|
|
||||||
Note that the target address `192.168.1.100` shall match the actual Wi-Fi IP address of the device. `49154` is a port number used by the OT commissioner.
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
$ commissioner-cli /usr/local/etc/commissioner/non-ccm-config.json
|
|
||||||
> start 192.168.1.100 49154
|
|
||||||
[done]
|
|
||||||
> active
|
|
||||||
true
|
|
||||||
[done]
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also verify the commissioner connection from the border router's log:
|
|
||||||
|
|
||||||
```
|
|
||||||
I(59709) OPENTHREAD:[INFO]-MESH-CP-: DTLS started
|
|
||||||
I(65469) OPENTHREAD:[INFO]-MESH-CP-: Commissioner connected
|
|
||||||
I(65479) OPENTHREAD:[INFO]-MESH-CP-: Forwarded request to leader on c/lp
|
|
||||||
I(65489) OPENTHREAD:[INFO]-MESH-CP-: received petition
|
|
||||||
I(65489) OPENTHREAD:[INFO]-MESH-CP-: sent petition response
|
|
||||||
I(65489) OPENTHREAD:[INFO]-MESH-CP-: commissioner accepted: session ID=3077, ALOC=fd04:b642:9ba9:fcdc:0:ff:fe00:fc35
|
|
||||||
I(65499) OPENTHREAD:[INFO]-MESH-CP-: Sent to commissioner
|
|
||||||
I(65509) OPENTHREAD:[INFO]-CORE----: Notifier: StateChanged (0x00000201) [Ip6+ NetData]
|
|
||||||
I(65529) OPENTHREAD:[INFO]-BBR-----: PBBR state: None
|
|
||||||
I(65539) OPENTHREAD:[INFO]-BBR-----: Domain Prefix: ::/0, state: None
|
|
||||||
I(65559) OPENTHREAD:[INFO]-MESH-CP-: Forwarded request to leader on c/ag
|
|
||||||
W(65559) OPENTHREAD:[WARN]-MESH-CP-: Failed to notify commissioner on ProxyRx (c/ur): DestinationAddressFiltered
|
|
||||||
I(65579) OPENTHREAD:[INFO]-MESH-CP-: sent active dataset get response to fd04:b642:9ba9:fcdc:0:ff:fe00:c800
|
|
||||||
W(65579) OPENTHREAD:[WARN]-MESH-CP-: Failed to notify commissioner on ProxyRx (c/ur): DestinationAddressFiltered
|
|
||||||
I(65589) OPENTHREAD:[INFO]-MESH-CP-: Sent to commissioner
|
|
||||||
I(65629) OPENTHREAD:[INFO]-MESH-CP-: Forwarded request to leader on c/ag
|
|
||||||
W(65629) OPENTHREAD:[WARN]-MESH-CP-: Failed to notify commissioner on ProxyRx (c/ur): DestinationAddressFiltered
|
|
||||||
I(65649) OPENTHREAD:[INFO]-MESH-CP-: sent active dataset get response to fd04:b642:9ba9:fcdc:0:ff:fe00:c800
|
|
||||||
W(65649) OPENTHREAD:[WARN]-MESH-CP-: Failed to notify commissioner on ProxyRx (c/ur): DestinationAddressFiltered
|
|
||||||
I(65659) OPENTHREAD:[INFO]-MESH-CP-: Sent to commissioner
|
|
||||||
I(65689) OPENTHREAD:[INFO]-MESH-CP-: Proxy transmit sent to fd04:b642:9ba9:fcdc:0:ff:fe00:fc00
|
|
||||||
W(65689) OPENTHREAD:[WARN]-MESH-CP-: Failed to notify commissioner on ProxyRx (c/ur): DestinationAddressFiltered
|
|
||||||
I(65699) OPENTHREAD:[INFO]-MESH-CP-: sent pending dataset get response to fd04:b642:9ba9:fcdc:0:ff:fe00:fc35
|
|
||||||
I(65709) OPENTHREAD:[INFO]-MESH-CP-: Sent to commissioner on c/ur
|
|
||||||
I(65749) OPENTHREAD:[INFO]-MESH-CP-: Proxy transmit sent to fd04:b642:9ba9:fcdc:0:ff:fe00:fc00
|
|
||||||
W(65749) OPENTHREAD:[WARN]-MESH-CP-: Failed to notify commissioner on ProxyRx (c/ur): DestinationAddressFiltered
|
|
||||||
I(65759) OPENTHREAD:[INFO]-MESH-CP-: sent commissioning dataset set response
|
|
||||||
I(65769) OPENTHREAD:[INFO]-MESH-CP-: Sent to commissioner on c/ur
|
|
||||||
I(65769) OPENTHREAD:[INFO]-CORE----: Notifier: StateChanged (0x00000200) [NetData]
|
|
||||||
I(65789) OPENTHREAD:[INFO]-BBR-----: PBBR state: None
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
### Commission the joiner
|
|
||||||
|
|
||||||
In the OT commissioner cli, run:
|
|
||||||
``` bash
|
|
||||||
> joiner enableall meshcop J01NU5
|
|
||||||
[done]
|
|
||||||
>
|
|
||||||
```
|
|
||||||
|
|
||||||
In the joining device's cli, run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
> ifconfig up
|
|
||||||
Done
|
|
||||||
> joiner start J01NU5
|
|
||||||
Done
|
|
||||||
> Join success!
|
|
||||||
> thread start
|
|
||||||
Done
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also find these log lines in the border router:
|
|
||||||
|
|
||||||
```
|
|
||||||
I(531219) OPENTHREAD:[INFO]-MESH-CP-: Received relay transmit
|
|
||||||
I(531229) OPENTHREAD:[INFO]-MESH-CP-: Received kek
|
|
||||||
I(531279) OPENTHREAD:[INFO]-MAC-----: Sent IPv6 UDP msg, len:85, chksum:14a0, to:92335c4b320830fb, sec:no, prio:net
|
|
||||||
I(531279) OPENTHREAD:[INFO]-MAC-----: src:[fe80:0:0:0:ac2f:720a:6fe4:c837]:1000
|
|
||||||
I(531289) OPENTHREAD:[INFO]-MAC-----: dst:[fe80:0:0:0:9033:5c4b:3208:30fb]:1000
|
|
||||||
I(531299) OPENTHREAD:[INFO]-MESH-CP-: Sending JOIN_ENT.ntf
|
|
||||||
I(531299) OPENTHREAD:[INFO]-MESH-CP-: Sent joiner entrust length = 161
|
|
||||||
|
|
||||||
......
|
|
||||||
|
|
||||||
I(552699) OPENTHREAD:[INFO]-MLE-----: Receive Child ID Request (fe80:0:0:0:8434:c5ec:fe9f:c088)
|
|
||||||
I(552729) OPENTHREAD:[INFO]-CORE----: [settings] Added ChildInfo {rloc:0xc801, extaddr:8634c5ecfe9fc088, timeout:240, mode:0x0f, version:3}
|
|
||||||
I(552729) OPENTHREAD:[INFO]-MLE-----: Send Child ID Response (fe80:0:0:0:8434:c5ec:fe9f:c088,0xc801)
|
|
||||||
I(552739) OPENTHREAD:[INFO]-CORE----: Notifier: StateChanged (0x00000400) [Child+]
|
|
||||||
I(552749) OPENTHREAD:[INFO]-UTIL----: Starting Child Supervision
|
|
||||||
```
|
|
||||||
|
|
||||||
The device has now joined the same Thread network based on the key set by the commissioner.
|
|
||||||
|
|
||||||
## Bidirectional IPv6 connectivity
|
## Bidirectional IPv6 connectivity
|
||||||
|
|
||||||
@ -236,7 +137,7 @@ For mobile devices, the route table rules will be automatically configured after
|
|||||||
|
|
||||||
### Testing IPv6 connectivity
|
### Testing IPv6 connectivity
|
||||||
|
|
||||||
Now in the joining device, check the IP addresses:
|
Now in the Thread end device, check the IP addresses:
|
||||||
|
|
||||||
```
|
```
|
||||||
> ipaddr
|
> ipaddr
|
||||||
@ -262,6 +163,7 @@ PING fde6:75ff:def4:3bc3:9e9e:3ef:4245:28b5(fde6:75ff:def4:3bc3:9e9e:3ef:4245:28
|
|||||||
|
|
||||||
The newly introduced service registration protocol([SRP](https://datatracker.ietf.org/doc/html/draft-ietf-dnssd-srp-10)) allows devices in the Thread network to register a service. The border router will forward the service to the Wi-Fi network via mDNS.
|
The newly introduced service registration protocol([SRP](https://datatracker.ietf.org/doc/html/draft-ietf-dnssd-srp-10)) allows devices in the Thread network to register a service. The border router will forward the service to the Wi-Fi network via mDNS.
|
||||||
|
|
||||||
|
### Publish the service using SRP
|
||||||
Now we'll publish the service `my-service._test._udp` with hostname `test0` and port 12345
|
Now we'll publish the service `my-service._test._udp` with hostname `test0` and port 12345
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -293,3 +195,57 @@ $ avahi-browse -r _test._udp -t
|
|||||||
port = [12345]
|
port = [12345]
|
||||||
txt = []
|
txt = []
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Discovery delegate
|
||||||
|
|
||||||
|
First, the service `testhost._test._udp` need to be published using `avahi-publish-service` on the Wi-Fi network(for example Host).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ avahi-publish-service testhost _test._udp 12345 test=1 dn="aabbbb"
|
||||||
|
```
|
||||||
|
|
||||||
|
Then get the border router's OMR prefix global unicast address(or ML-EID), and configure it on the Thread end device.
|
||||||
|
|
||||||
|
On the border router:
|
||||||
|
```
|
||||||
|
> ipaddr
|
||||||
|
fdde:ad00:beef:0:0:ff:fe00:fc10
|
||||||
|
fd9b:347f:93f7:1:1003:8f00:bcc1:3038
|
||||||
|
fdde:ad00:beef:0:0:ff:fe00:fc00
|
||||||
|
fdde:ad00:beef:0:0:ff:fe00:b800
|
||||||
|
fdde:ad00:beef:0:f891:287:866:776
|
||||||
|
fe80:0:0:0:77:bca6:6079:785b
|
||||||
|
Done
|
||||||
|
```
|
||||||
|
|
||||||
|
On the Thread end device:
|
||||||
|
```
|
||||||
|
> dns config fd9b:347f:93f7:1:1003:8f00:bcc1:3038
|
||||||
|
(or
|
||||||
|
> dns config fdde:ad00:beef:0:f891:287:866:776)
|
||||||
|
Done
|
||||||
|
```
|
||||||
|
|
||||||
|
Now the service published on the Host can be discovered on the Thread end device.
|
||||||
|
```
|
||||||
|
> dns resolve FA001208.default.service.arpa.
|
||||||
|
DNS response for FA001208.default.service.arpa. - fdde:ad00:beef:cafe:b939:26be:7516:b87e TTL:120
|
||||||
|
Done
|
||||||
|
|
||||||
|
> dns browse _test._udp.default.service.arpa.
|
||||||
|
DNS browse response for _test._udp.default.service.arpa.
|
||||||
|
testhost
|
||||||
|
Port:5683, Priority:0, Weight:0, TTL:120
|
||||||
|
Host:FA001208.default.service.arpa.
|
||||||
|
HostAddress:fdde:ad00:beef:cafe:b939:26be:7516:b87e TTL:120
|
||||||
|
TXT:[test=31, dn=616162626262] TTL:120
|
||||||
|
Done
|
||||||
|
|
||||||
|
> dns service testhost _test._udp.default.service.arpa.
|
||||||
|
DNS service resolution response for testhost for service _test._udp.default.service.arpa.
|
||||||
|
Port:5683, Priority:0, Weight:0, TTL:120
|
||||||
|
Host:FA001208.default.service.arpa.
|
||||||
|
HostAddress:fdde:ad00:beef:cafe:b939:26be:7516:b87e TTL:120
|
||||||
|
TXT:[test=31, dn=616162626262] TTL:120
|
||||||
|
Done
|
||||||
|
```
|
||||||
|
Loading…
x
Reference in New Issue
Block a user