This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Connecting a single node in multiple networks

Hi,

I have a mesh network established with one of the nodes being the provisioner. I am currently using Laird BL652. I want to make an android application for the mesh such that android device can come in at anytime in the network and send data bytes to one of the node. So I had some questions regarding the implementation:

1. Can a single node be provisioned into multiple networks? i.e Can the node becon when it is already inside a mesh network?

That way I will be able to connect the mobile device making another network and provisioning the node with the android application. Does Nordic SDK and ADK support APIs for making and working with Multiple networks?

2. If I use import-export functionality, how do I transfer the keys to the application from the node?

Regards,

Sagar

  • Hi Sagar, 

    1.Our Mesh Stack and SDK is not designed so that a  node can be provisioned into multiple networks. It's possible for the phone to be the provisioner/node for multiple network (by exporting and importing network data) but not the node. But I wouldn't say that it's not possible. You would need to modify the dsm to store multiple credentials of different networks in the flash and can have an option to choose which credential it should use when booting up. 

    But I'm not sure why you need to have the node to be provisioned into multiple networks. Could you explain a little bit more ? 

    2. I'm not sure you are talking about the node or the app on the phone. What is the "keys to the application" ? It's not possible to export/import keys from the node. 

  • Thanks for the elaborate answer!

    I want to have an android device which might be optional for the end user of the product.So without the device the mesh should work. Basically the android device is an addon and not mandatory to the product. I want to add this android device to already functioning mesh. I know that the android device can't becon and so I thought that making 2 separate networks can be an implementation by making the android device the provisioner of the 2nd network. This way the existing network would not need to be changed, it would be just that the node has to becon again.  Plz let me know if this implementation can be done in some other way or if their are faults in my understanding.

    I was talking about the application. And the keys were network key and application key that would be required for the application.

    Thanks and Regards,

    Sagar

  • Hi Sagar, 

    The phone can be part of the network without being the provisioner. However, this use case has not been implemented on our phone's app. You would need to implement this in the app on the phone. To use an address dedicated for the phone and to extract the application key and network key and put that data on the phone. 

    An easier solution is to implement a proprietary GATT service to support the phone to communicate to the network. It's like a bridge protocol. The phone won't talk mesh directly but talk to the proxy node with your own service. This way you can make the phone to join a network easily. 

  • Ok so can u elaborate a bit on how to send those keys to the phone. Is it through BLE transfers?

    So GATT is used for configuring BLE transfers right!? Can I implement a mesh and still connect one of its node via BLE to external device like mobile?

    Thanks and Regards,

    Sagar

  • Hi Sagar
    It's not implemented on phone or on the firmware of the nRF52 on how it should be transferred. The keys are stored in dsm module. You would need to look into that and extract the keys from there. And how you want to send the keys to the phone is also up to you we don't have any example for that. 

    But as I mentioned, it's easier that you implement your own GATT service to do the communication. Think of an UART service that you can send data back and forth with the proxy node, and the proxy node will convert those data to mesh packet and send it over mesh. 

Related