SerVision is a compact and efficient LoRa-based IoT system designed to monitor critical environmental parameters in server rooms. It ensures early detection of potential risks—such as overheating, humidity spikes, or fire—by transmitting real-time data to a central platform using The Things Network (TTN). The collected data is stored, visualized, and used to trigger alerts when thresholds are exceeded.We carried out this project at Unilasalle Amiens .
The system is composed of two main microcontroller boards:
- an Arduino Leonardo with an Ethernet shield and LCD display,
- a SODAQ Explorer board for LoRa communication.
A custom PCB connects the two boards, along with external sensors (flame, humidity, temperature, luminosity). It includes a switchable UART line, power management, and 3D-printed casing for safe integration in server room environments. Dedicated openings allow easy access to cables and connectors.
The SerVision system uses two microcontrollers working together: an Arduino Leonardo and a SODAQ Explorer.
The Arduino Leonardo handles local sensing and data preparation. It reads temperature, humidity (DHT11), light (photoresistor), flame (digital sensor), and analog temperature. Every 1 min, it builds a structured serial frame like:
T:23.50;H:45.00;L:600;F:0;IP:101
It also pings three predefined IP addresses and includes their reachability in the frame. The data is shown on a 16x2 LCD and sent via serial to the SODAQ board.
The SODAQ Explorer parses the received frame, converts the values into a compact binary payload, and transmits it over LoRaWAN to The Things Network (TTN). It also checks for downlink messages: if one is received, it extracts the first byte and forwards it to the Arduino.
The Arduino interprets this byte to remotely enable or disable the IP monitoring logic, allowing basic remote control from the TTN platform.
LoRa- MQTT :
We used MQTT indirectly through The Things Network (TTN), which relies on this lightweight protocol to transfer messages between connected objects and third-party services. TTN takes care of receiving the LoRa data from the object, then publishes it in MQTT. Our Node-RED service then connects to TTN's MQTT broker to retrieve the data in real time.
- TTN :
Uplink :
The connected object ( by the Sodaq Explorer) sends 64-bit encoded data through LoRaWAN. This raw data is after decoded on TTN using a custom JavaScript script. The decoder transforms the binary payload into a structured object (you can see the decoder in code part below).
Downlink :
From our web interface, users can configure 3 different IP addresses for ping testing. These IPs are converted to hexadecimal, then encoded in Base64 and sent to TTN via the TTN v3 HTTP API :
fetch(`https://eu1.cloud.thethings.network/api/v3/as/applications/${appID}/devices/${deviceID}/down/push`, {
method: "POST",
headers: {
"Authorization": `Bearer ${accessKey}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
downlinks: [
{
f_port: 1,
frm_payload: "HEX_ENCODED_BASE64_STRING",
priority: "NORMAL"
}
]
})
});
The downlink is after received by the Sodaq Explorer, which transmits the information to the Arduino Leonardo by serial port, to reconfigure the network test IPs.
Server (Portainer)Our infrastructure is hosted on a Linux virtual machine, on which Portainer, a graphical Docker management interface, is installed. We run three services that are essential to the project:
- NodeRed
Flow A : Node-RED is at the heart of our application logic. It receives data from TTN via MQTT, processes it, displays it in real time and performs a number of actions : Send data to InfluxDB and Triggering alerts (send emails).
Flow B : Customised functions are used, for example, to send an email we use SMTP Gmail server (need authentication to a Google account) if a flame is detected or if the temperature exceeds a critical threshold or if we lost the gateway connexion.
- InfluxDB
InfluxDB is a time-series oriented database, perfect for storing our sensor measurements. It stores the history of the following data : Temperature, Humidity, Brightness, Network connections (local, gateway, public), Flame detection
Data is requested by HTTP API or directly from the website, for dynamic graphical display.
- Apache
The apache server offers a clear and responsive dashboard to monitor the environmental conditions. Written in php, the web appplication connects to the InfluxDB database that stores all sensor data received via LoRaWAN. An interface displays all their values. It also shows the network status of the three monitored IP addresses which can be set in the "downlink" form by the user. This entire system provides full visibility and control over the server room environment from any web browser.
You don't know if you really need our solution ; Nothing better than watch our promotion video :
Comments