Purdue Digital Agriculture
Set up LoRaWAN infrastructure without living in the command line.
RING guides agricultural researchers and field teams through gateway, server, and sensor setup without requiring them to assemble every configuration by hand.
Sensors in the field send readings by LoRa radio to a LoRaWAN gateway. The gateway passes them over the network to a server whose LoRaWAN services RING has set up from your deployment choices.
How setup works
Six guided stages take you from a bare server to your first dashboard reading. In short:
01
Get a server ready
Use a mini-PC on site, or create a cloud server on AWS or Google Cloud. RING guides you through Ubuntu, SSH, and Docker, then checks the server.
02
Download your setup package
Answer three questions about your site. RING builds a small ZIP in your browser with everything configured for your server.
03
Install and check
Copy the package to the server and run the installer. Confirm all eleven services, then sign in to ChirpStack and open your dashboard.
04
Connect the field
Connect your gateway, then add each sensor from your own dashboard and watch its first reading arrive.
Where RING fits
A LoRaWAN network has two halves: radio hardware in the field, and software on a server that receives what the hardware sends. RING sets up the server half from a few answers, so the field half has somewhere to connect.
- You bring
- Soil sensors, a LoRaWAN gateway, and a Linux server: a mini-PC on site, or a virtual machine in the cloud.
- What RING sets up for you
- A LoRaWAN network serverManages your network, gateways, and registered sensors. ChirpStack (explained in Help).
- A place for your gateway to connectReceives your gateway’s traffic over Basics Station. ChirpStack Gateway Bridge (explained in Help).
- Messaging between servicesPasses each reading from one service to the next. Mosquitto (explained in Help), an MQTT (explained in Help) broker.
- Storage for the networkKeeps ChirpStack’s gateways, sensors, and sessions. PostgreSQL (explained in Help) and Redis (explained in Help).
- A record of every readingStores each decoded reading, so any period can be charted. MySQL (explained in Help) and RING’s telemetry service.
- Your own dashboardLive and historical readings from your sensors, from your server. The RING dashboard.
- The right radio channelsThe US915 frequency plan, sub-band 2, in ChirpStack and the bridge. RING’s configuration.
- Checks at every stepBefore and after installing, and along a reading’s path. The preflight, install, status, verify, and sensors tools.
Technical details: exact versions
Each installation runs these pinned versions, as Docker containers, so every server gets the same software.
- ChirpStack
- 4.3.2
- ChirpStack REST API
- 4.3.0
- ChirpStack Gateway Bridge
- 4.0.10
- Mosquitto
- 2.0.15
- PostgreSQL
- 14.8
- Redis
- 7.0.11
- MySQL
- 8.4.11
- Nginx (dashboard)
- 1.27.5
- You get
- A LoRaWAN server you can sign in to and your own RING dashboard, ready for your gateway and sensors.
System architecture
For technical and research readers: every service the package runs on your server, and how a reading travels between them.
Scroll sideways to see the whole figure.
In the field, a Dragino SE01-LS sensor sends LoRa radio, US915 sub-band 2, to a RAK7393 gateway. The gateway connects over WebSocket to gateway-bridge, the Basics Station listener, on the user’s Linux server. Gateway-bridge publishes to the mosquitto MQTT broker, which exchanges messages with chirpstack, backed by postgres and redis. Mosquitto passes decoded uplinks to telemetry-ingest, which stores them in mysql; telemetry-api reads mysql. The dashboard, behind Nginx, requests readings from telemetry-api at /api/telemetry/public/. People reach the dashboard in a browser through an SSH tunnel, the local network, or Tailscale.
| Layer | Services | Role |
|---|---|---|
| LoRaWAN | chirpstack, gateway-bridge, mosquitto, postgres, redisReceives the gateway’s packets, joins devices, decodes payloads with the device profile’s codec, and publishes uplinks on MQTT. | Receives the gateway’s packets, joins devices, decodes payloads with the device profile’s codec, and publishes uplinks on MQTT. |
| Telemetry | mysql, telemetry-migrate, telemetry-ingest, telemetry-apiRING’s telemetry service, built on the server from its bundled source: stores each decoded uplink and serves sanitized readings. | RING’s telemetry service, built on the server from its bundled source: stores each decoded uplink and serves sanitized readings. |
| Dashboard | dashboardThe site’s own RING dashboard behind Nginx, reading only the public, read-only API routes. | The site’s own RING dashboard behind Nginx, reading only the public, read-only API routes. |
Built for field deployment
- Research plots
- Set up gateways and sensors without rebuilding the software environment at every location.
- Farm and field trials
- Move hardware between deployments while keeping the setup process consistent.
- University research
- Give students and researchers a guided workflow instead of a long terminal checklist.
See what’s happening in the field
RING runs its own small deployment at Purdue. The soil sensors report about every 20 minutes, and every reading is kept.
Soil temperature, last 24 hours
Research context
Developed within Purdue University’s Department of Agricultural and Biological Engineering as part of ongoing digital agriculture research.
The project is connected to IoT4Ag, the Internet of Things for Precision Agriculture research center. Its sensors report from the IoT4Ag laboratory and from a plot outdoors.
About the projectReady to set up a deployment?
Setup runs in your browser and never connects to your server. You run each step yourself and check the result before moving on.