nRF Mesh are open source libraries for building your own Android and iOS Bluetooth mesh apps. It is also the name of the apps demonstrating a subset of the capabilities of the libraries. Use them in test and verification during development, and to build prototypes. You can provision, configure and control Bluetooth mesh networks. We encourage you to use them as a starting point for your Bluetooth mesh app development.
Provisioning is the process of adding a device to a mesh network, allowing it the become a mesh node. The process includes authentication of the device, and providing it with the necessary provision data, like the network key.
Provisioning is performed over a provisioning bearer, either PB-ADV or PB-GATT. The provisioning bearers are simply two different ways of transporting provisioning messages. PB-ADV uses advertising, while the PB-GATT uses connections and GATT. nRF Mesh provisions over PB-GATT, as a GATT bearer client. This means that the device being provisioned must be a GATT bearer server, and it also must support the proxy role.
The device must advertise with the Mesh Provisioning Service UUID, nRF Mesh will scan for advertisements with this UUID. After connection, the Mesh Provisioning Service is used to do the provisioning.
nRF Mesh supports the following types of authentication:
- Public key OOB – share the Elliptic Curve Diffie-Hellmann public key OOB
- Static OOB – share static information OOB
- Output OOB – Blink, Beep, Vibrate and Numeric. Device outputs a random number and this is input to the app. Alphanumeric is not supported.
- Input OOB – not supported.
Configure and control nodes
nRF Mesh offers a generic interface for configuring nodes as a configuration client. It can:
- Define and set application keys
- Bind application keys to specific models
- Assign publish address to a model – unicast or group
- Assign multiple subscribe addresses to a model – group
When it comes to node control, generic OnOff model is supported, but more models are planned.
The apps demonstrates the libraries
It is important to remember that the apps are just demonstrating the libraries, and a subset of the capabilities they have. So even though a feature is not visible in the app, it can still be supported by the library. And that real apps provided with end product would probably hide as much functionality as possible, automating the provisioning process.
Where to find it
The iOS app can be found on Apple App Store, and the library can be found on GitHub, here.
The Android app can be found on Google Play, and the library can be found on GitHub, here.
And as always, if you have feedback or any questions, please don’t hesitate to comment below.