This example demonstrates the mesh ecosystem that contains devices acting in the Node role (also referred to as provisionee role). It also demonstrates how to use Mesh models by using the Generic OnOff model in an application.
Table of contents
The example is composed of the following minor examples:
You can use the provisioner example to evaluate the light switch example. The provisioner example provides a simple static provisioner implementation that sets up the demonstration network. The example provisions all the nodes in one mesh network. Additionally, it also configures key bindings and publication and subscription settings of the mesh model instances on these nodes to enable them to talk to each other.
The Generic OnOff Client/Server is used for manipulating the on/off state. Note that when the server has a publish address set (as in this example), the server will publish any operation of its state change to its publish address. More information about the Generic OnOff model can be found in the Generic OnOff model documentation and Generic OnOff server behavior documentation.
For a more detailed overview of the example structure and an introduction to various SDK APIs, see the following pages:
The following figure gives the overall view of the mesh network that will be set up by the static provisioner. Numbers in parentheses indicate the addresses that are assigned to these nodes by the provisioner.
Both the light switch server and light switch client examples have provisionee role. They support provisioning over Advertising bearer (PB-ADV) and GATT bearer (PB-GATT) and also support Mesh Proxy Service (Server). Read more about the Proxy feature in GATT provisioning and Proxy.
You need at least two compatible development kits for this example:
Additionally, you need one of the following for provisioning:
See Compatibility for information about the compatible development kits.
Depending on the provisioning method:
You can find the source code of this example and its minor examples in the following folder: <InstallFolder>/examples/light_switch
The buttons (1 to 4) are used to initiate certain actions, and the LEDs (1 to 4) are used to reflect the status of actions as follows:
true
).false
).To test the light switch example, build the examples by following the instructions in Building the mesh stack.
After building is complete, use one of the following methods, depending on the preferred provisioning approach:
Once the provisioning is complete, you can start interacting with the boards.
See provisioner example testing section for detailed steps required to provision and configure the boards using the static provisioner.
See Evaluating examples using the nRF Mesh mobile application for detailed steps required to provision and configure the boards using the nRF Mesh mobile app.
When using the nRF Mesh app with this example, the following naming convention is used in the app:
nRF5x Mesh Switch
.nRF5x Mesh Light
.The following model instances must be configured in the app for this example:
nRF5x Mesh Light
server board: Generic On Off Server.nRF5x Mesh Switch
client board: Generic On Off Client.At the end of the configuration process, the client example will be configured as follows:
Once the provisioning and the configuration of the client node and at least one of the server nodes are complete, you can press buttons on the client to see the LEDs getting toggled on the associated servers. See LED and button assignments section.
If an RTT terminal is available and connected to the client, sending the ASCII numbers 1
–4
will have the same effect as pressing the buttons.
If you are using RTT log, you can also press Button 1 on the servers to locally toggle the state of their LED 1, and the status reflecting this state will be sent to the client board. You can see the status printed in the RTT log of the client board.
If any of the devices is powered off and back on, it will remember its flash configuration and rejoin the network. For more information about the flash manager, see Flash manager.