RUI3-Best-Practice - Collection of RUI3 example code

On Github we started a collection of RUI3 examples that go above the simple examples provided with the RUI3 BSP’s.

I wrote these examples and they were scattered all over Github, some as RAKwireles repos, some in my own account. For easier access, I put them into this collection. Distributions from the community are welcome to be added to this collection.

:warning: IMPORTANT

These examples require at least RUI3 V4.1.1 or newer.
At the time this code was published, RUI3 V4.1.1 was still in staging. It can be installed by using the Arduino BSP JSON file for the staging version from
in the Additional Boards Manager URLs setting in ArduinoIDE.
Installation guides for Arduino IDE and Visual Studio Code can be found in the RAK Documentation Center.

At the moment 8 examples are available, but I am working to add more in the future:


This simple example is just showing how to design an application that is event based and keeps the MCU and LoRa transceiver in low power mode whenever possible.

It includes as well a simple example how to implement custom AT commands.


A simple sensor application based on RAK1901 and RAK1902. It reads temperature, humidity and barometric pressure from these sensors and sends them in a configurable interval.

This example is using the Cayenne LPP data format to send the formatted payload.


A motion based location tracker using the RAK12500 and RAK1904 WisBlock modules. Based on the RUI3-LowPower-Example code.

This example is using the Cayenne LPP data format to send the formatted payload.


A door or window alarm system using the RAK13011 magnetic relay switch module. This examples features the usage of a queue to collect events. For the alarm system (or open/close counter), this was necessary, because events could be triggered faster than the uplink packets can be sent over LoRaWAN.


Example code for using the RAK5811 0-5V analog input module with RUI3. For lowest power consumption, the RAK5811 is powered down until a data reading is required. The interval time for reading the data can be setup with AT command.


A sensor application that combines temperature, humidity, barometric pressure, CO2 and VOC sensing. It detect automatically which sensors are attached and adjusts its payload to the available sensor data. It supports WisBlock RAK1906, RAK12037 and RAK12047 sensor modules


This is a PoC of a very basic signal tester. It works in both LoRa P2P and LoRaWAN mode. It uses a simple OLED display and has no GUI. All settings are done over USB with RUI3 AT commands.

It is a very simple (~30 US$ cheap) device that can help to check LoRa and LoRaWAN coverage. It does not claim to be a super precise instrument, it is just an affordable small instrument to check signal coverage.

RUI3 Modbus Master example

This example is a simple Modbus Master that reads sensor values from a Modbus Slave. For easy testing a Modbus Slave application is available for another WisBlock/WisDuo based module with a temperature, humidity and barometric pressure sensor.


Hello @beegee, probably the Git repo is not public because all links leads to 404.

Thanks for make this examples available, In my case I’ve followed your github user beegee-tokyo and the examples in your repo where very useful to me.

Best regards

Are the Github links broken for “RUI3-Best-Practice” or not yet public accessible?

Fixed. The repo is public now.

1 Like

Added RUI3-RAK12007-Waterlevel

will be sealed after sensor assembly

temporary installation, only clipped to the tank border

temporary installation, needs improvements

@beegee thank-you for fixing the link to this interesting collection of helpful examples.



This is a PoC of a simple LoRa Mesh Network. It includes everything to setup a Mesh Network (compatible with WisBlock-API-Mesh).
It supports a limited number of Mesh nodes (15 with the RAK3172 and 30 with the RAK4630 and RAK11720) and sends a dummy data packet.
Beside of packet broadcasting it supports sending data to a specific other node and it is as well possible to define a master node to which all other nodes are sending the packets.

A few more examples

RUI3-Relay-Class-C How to use downlinks
RUI3-Sensor-Node-EPD-2.13 adding a Epaper display
RUI3-Sensor-Node-EPD-2.13-VSC (shows some VSC features explained in the new Tips-n-Tricks)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

As RUI3 V4.1.1 takes longer to release than expected, I decided to make the code compatible with the released RUI3 V4.1.0

The main branch of this repository supports RUI3 V4.1.0.
But RUI3 V4.1.0 does not support the LinkCheck functionality!
In addition the format of API calls for LoRa P2P have changed in RUI3 V4.1.1!

The examples for RUI3 V4.1.1 are in the branch V4.1.1.
At the time this code was published, RUI3 V4.1.1 is still in staging. It can be installed by using the Arduino BSP JSON file for the staging version by using in the Additional Boards Manager URLs settings in ArduinoIDE.