Skip to content

NordicSemiconductor/Kotlin-Mesh-Library

Repository files navigation

A Kotlin library for Bluetooth Mesh

The nRF Mesh library allows to provision Bluetooth® Mesh devices into a mesh network, configure them and send and receive messages.

The library is compatible with the following Bluetooth specifications:

  • Mesh Protocol 1.1
  • Mesh Model 1.1
  • Mesh Configuration Database Profile 1.0.1

Note

Mesh Device Properties are still work in progress

Supported features

  1. Provisioning with:
    • OOB1 Public Key (most secure)
    • Input and Output OOB
    • No OOB (insecure)
    • Enhanced security, added in Mesh Protocol 1.1
  2. Configuration, including managing keys, publications, subscription, and heartbeats (both as client and server).
  3. Support for client and server models.
  4. Groups, including those with virtual labels.
  5. Scenes (both as client and server).
  6. Managing proxy filter.
  7. IV Index update (handled by Secure Network beacons).
  8. Key Refresh Procedure (using ConfigKeyRefreshPhaseSet messages, not Secure Network beacon).
  9. Heartbeats (both as client and server).
  10. Exporting network state with format compatible to Configuration Database Profile 1.0.1, including partial export.
  11. Option to use own transport layer with default GATT Bearer implementation available.

NOT (yet) supported features

The following features are not (yet) supported:

  1. The rest of models defined by Bluetooth SIG - PRs are welcome!
  2. IV Index update (initiation) - not a top priority, as other nodes may initiate the update.
  3. Health server messages - in our TODO list.

How to start

The library can be included as a project and will be avialable on maven central in the near future.

Product documentation is available here: Documentation.

nRF Mesh sample app

Most of the features listed above are demonstrated in nRF Mesh sample application.

The app is not yet published to Playstore but is available on this repo.

Supported features

  1. Provisioning with all available features.
  2. Configuration of local and remote nodes.
  3. Managing network (provisioners, network and application keys, scenes), resetting and exporting configuration.
  4. Managing groups, including those with virtual labels.
  5. Sending group messages.
  6. UI for local models, which include:
    • Generic OnOff Client and Server,
    • Generic Level Client and Server,
    • Simple OnOff vendor model by Nordic not supported yet.
    • Mesh vendor model by Nordic not supported yet.
  7. Support for some server models:
    • Generic OnOff,
  8. Scenes, both as client and server.
  9. Automatic connection to nearby nodes and automatic proxy filter management.
  10. IV Index test

Testing

All features are tested against nRF5 devices running nRF5 SDK for Mesh and nRF Connect SDK firmware.

Requirements

  • An Android Device with android 4.3 or newer device with BLE capabilities.

Optional

Feedback

Any feedback is more than welcome. Please, test the app, test the library and check out the API.

Use Issues to report a bug, or ask a question. We also encourage to submit Pull Requests with new features or bug fixes.

License

BSD 3-Clause License.

Footnotes

  1. OOB - Out Of Band

About

Provision, configure and control Bluetooth Mesh devices with nRF Mesh library

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •