Device identification in a Openthread network

Hello there,

I'm working on an Evaluation for Thread mesh with Openthread. I've been working on it for about 2 months, but I would say I understood a lot about configuring or setting up a Thread Network. I'm working with the nRF52840 DK. 

I already got the commissioning process done and I can send UDP packages per Broadcast and to a specific IP-Address.
I found information about the most important addresses in a Thread Network, but I'm not quite sure if I understood it all the way. For a network to fully work and be able to communicate I need to identify every device with a MAC-Address or similar. Somehow I haven't found a way to get a devices MAC yet, but as I understood it via this Link: https://openthread.io/guides/thread-primer/ipv6-addressing I don't need the MAC, I can just use the Extended-Address (LLA). But this address seems not to be bound to a hardware device, much more bound to this connection of the device.

Now to my question:

How does a device get the extended address of a new device? How can one device link another devices extended address to the IP-Address and perhaps send something to this IP?

Are there any documentations I haven't found yet that could also help me?

Also, are there any examples on Openthread Source Code or any Apps? I haven't been able to find anything and I think it could really help me understand a lot of things better. 

Thanks in advance!

Vincent

Parents Reply Children
  • Hello Amanda, 

    I've looked into the information you provided and it already helped me. But I'm still not sure about one thing:

    For example let's say I would like to build a Smart Home. I have one switch that joins the Network and is expected to operate a specific lamp A. But there are more Lamps in the Network for exaple a lamp B. 

    I now send the ML-EID of the new joined switch via CoAP to all lamps with multicast. How does the lamp A know that this is the switch he has been waiting for. And how does B know that it isn't? Don't I need some kind of Hardware-bound address/value that identifies this new joined board which I can send together with the ML-EID?

    Regards,

    Vincent

  • Hi, 

    The easy solution is to push a button on the device that is being paired, this is how it works in the CoAP samples (push the button to enable pairing mode, press the button on other devices to send pairing request, only the device in pairing mode will respond).

    Of course, you can do it other ways, e.g. include the HWID/SN of the device that will be paired in the multicast packet, etc. This is something they need to decide on, not part of the Thread protocol itself. 

    -Amanda H.

  • Hi,
    Thanks again. Your information is really helping me but I keep running into problems. 

    I have now implemented a function that establishes a Link between two devices. But these links don't get permanently saved, which I expected. How do I reestablish a link between two deices after one e.g. loses connection? Do I send some kind of ACK package every few seconds to try to reestablish the link or is there another way?

    Regards,

    Vincent

  • Hi, 

    It is not clear to us what you mean by "establishes a Link". Could you provide more details on exactly how the "link" is created, which address you use, and how the address is stored on the node?

    -Amanda H.

  • Sure sorry, that's my fault.

    By establish a Link I mean a direct IP-Connection. So one device can (if he wants to) send a single UDP Package directly to one other device. This IP is the ML-EID and the receiving device saves this in a gobal variable. Problem is now that this variable logically does not get saved after  the runtime stops and the "Link" gets lost as soon as the device e.g. reboots/crashes for whatever reason.

    Regards,

    Vincent

Related