GROUU · Nodes · GROUUWAN
Under development · first node (WellBouy) deployed

GROUUWAN — the LoRaWAN track

Long-range, low-power sensing over LoRaWAN and The Things Network — the companion to the WiFi nodes, for sites WiFi can't reach. This page documents the architecture, hardware options and the TTN → MQTT bridge so it can be rebuilt on any stack. The first node on this track — WellBouy — is deployed and streaming live.

The Things Network EU868 · OTAA 2–15 km range Years on battery
Level of development

What's published so far

The track is defined, the integration path is documented, and the WellBouy node has validated it end-to-end. Additional node firmware is a working scaffold being filled out per sensor type.

Node firmware WellBouy (RadioLib / XIAO) fully validated; general farm-sensing scaffold in progress. ◑ In progress
TTN → MQTT bridge Two integration recipes documented (Node-RED and Mosquitto bridge). ✓ Documented
Hardware options Candidate radios researched and compared (below). ✓ Documented
Naming & topics Convention shared with the WiFi track. ✓ Defined
Why LoRaWAN

A companion to WiFi, not a replacement

WiFi is fine where a router reaches. LoRaWAN covers everything beyond it, on power budgets WiFi can't touch.

Need
WiFi
LoRaWAN
Long range (orchards, fields)
No
2–15 km
Battery / solar powered
Power hungry
Years
Internet backbone
Local only
Global (TTN)
New hardware needed
Existing router
LoRa gateway
How it works

Node → gateway → TTN → backend

Node

ESP32 / Arduino + LoRa radio, OTAA-joined.

Gateway

Any TTN-registered LoRa gateway, EU868.

TTN

The Things Network v3 → MQTT bridge.

Backend

Mosquitto → Node-RED → InfluxDB → Grafana.

🗺️📷 Diagram: end-to-end topology — node → gateway → TTN → backend
Hardware options

Pick a radio for the node

DIY · lowest cost
Arduino Pro Mini + RFM95

Discrete build, OTAA. Most control, most wiring.

XIAO · used in WellBouy
XIAO ESP32-S3 + Wio-SX1262

Compact, deep-sleep friendly, RadioLib. The stack the WellBouy node runs.

Dev board
Arduino MKR WAN 1300

Built-in LoRa module, official toolchain.

Reference firmware & parts

The committed V2 node

The firmware in the repo drives a Grove Wio-E5 (LoRa-E5) module over UART with AT commands — an OTAA join then a hex uplink. It is distinct from the WellBouy V3 path, which talks to a Wio-SX1262 directly through RadioLib; both reach the same TTN application.

src/main.cpp — OTAA join + hex uplink over the Wio-E5 AT interface

// OTAA join
at_send_check_response("+MODE: LWOTAA", 1000, "AT+MODE=LWOTAA\r\n");
at_send_check_response("+DR: EU868",    1000, "AT+DR=EU868\r\n");
at_send_check_response("+CH: NUM",      1000, "AT+CH=NUM,0-2\r\n");
at_send_check_response("+CLASS: A",     1000, "AT+CLASS=A\r\n");

// pack temp + humidity, send as a hex uplink
char cmd[128];
sprintf(cmd, "AT+CMSGHEX=\"%04X%04X\"\r\n", (int)temp, (int)humi);
ret = at_send_check_response("Done", 5000, cmd);
PartRoleSource
XIAO ESP32-C3MCU driving the radio + sensors
Grove Wio-E5 (LoRa-E5)LoRa radio — UART AT, OTAA, EU868
Sensirion SHT4xTemperature + humidity (I²C)
SSD1306 OLED 128×64Local status display (I²C)
LoRa gateway + TTNThe uplink path off-siteThe Things Network
How to reuse · TTN → MQTT bridge

Two ways into the same pipeline

Recommended
Node-RED subscription

Subscribe to v3/{app}/devices/{dev}/up using TTN's MQTT integration, parse the decoded payload in a function node, write to InfluxDB.

Alternative
Mosquitto bridge

A connection block in mosquitto.conf bridges eu1.cloud.thethings.network:8883 into local topics.

Naming convention: Grouu[Installation][Type][ID] → topic Grouu[Installation][Type][ID]/sensors
Reference scenarios

What the track is designed for

Typical node types the design targets — a menu to compose from, not a fixed system.

Orchard soil grid

Shallow + deep moisture per tree, weather station

Water source

TDS, turbidity, pH, temperature — the WellBouy node

Remote field

Soil moisture and temperature, far from any router

Enclosed grow

Climate, light, moisture — when WiFi is insufficient