Receive weather data from an RF weather station using a software-defined radio (SDR) dongle, store it with WeeWX, and serve live conditions over a Reticulum mesh network via NomadNet pages.
- RTL-SDR dongle — tested with RTL-SDR Blog V4 (
0bda:2838) - Compatible weather station — tested with AcuRite Atlas; other AcuRite models and many other brands are supported via rtl_433
- Raspberry Pi or any Debian/Ubuntu-based Linux system
| Component | Description |
|---|---|
| WeeWX v5 | Weather station software, records data to SQLite |
| weewx-sdr | WeeWX driver for SDR dongles |
| rtl-sdr / rtl_433 | RTL-SDR kernel driver and RF decoder |
| NomadNet pages | Weather pages served over the mesh network |
git clone https://github.com/JamesM92/WeeWX.git
cd WeeWX
bash installer/install_weewx.shThe installer will walk you through each step interactively:
- Install system packages
- Install RTL-SDR and rtl_433
- Scan the airwaves to detect your weather station and generate the sensor map
- Install WeeWX v5
- Install the weewx-sdr extension
- Deploy
weewx.conf - Deploy companion files (NodeBot plugin, NomadNet pages) — optional
Plug in the SDR dongle before step 3.
bash installer/manage_weewx.shInteractive menu for starting/stopping WeeWX, redeploying files, re-scanning for station changes, and inspecting the database.
Common one-liners:
bash installer/manage_weewx.sh status # service status + sensor map
bash installer/manage_weewx.sh logs # live log tail
bash installer/manage_weewx.sh scan # re-scan SDR for station changes
bash installer/manage_weewx.sh deploy # redeploy pages and configIf you replace your weather station or want to update the sensor map:
bash installer/scan_sdr.shThe scan stops WeeWX while the dongle is in use and restarts it automatically when done.
Pages are deployed to ~/.nomadnetwork/storage/pages/weewx/ and served at:
| Path | Description |
|---|---|
/page/weewx/weewx.mu |
Current conditions, lightning alert, daily min/max |
/page/weewx/graph_temp.mu |
24-hour temperature, heat index, humidity graph |
/page/weewx/graph_wind.mu |
24-hour wind speed and rain graph |
An index.mu redirect is also deployed to the pages root so visitors see the
weather page by default.
Each page project gets its own isolated Python venv with dependencies from
requirements.txt, installed automatically by the installer.
If you use NodeBot, the installer can
optionally deploy templates/weewx.py as a plugin, adding a weather command
to your bot. It is not required and can be skipped during installation.
WeeWX/
├── installer/
│ ├── install_weewx.sh # full setup installer
│ ├── manage_weewx.sh # day-to-day manager
│ └── scan_sdr.sh # interactive SDR station scanner
└── templates/
├── weewx.py # NodeBot plugin
└── nomadpages/
├── index.mu # NomadNet index redirect
└── weewx/
├── weewx.mu # main conditions page
├── graph_temp.mu # temperature graph
├── graph_wind.mu # wind/rain graph
├── status.mu # network status
└── requirements.txt
Nomad-WeeWX is built almost entirely on the work of others. Without the following projects this would not exist:
WeeWX by Tom Keffer and Matthew Wall — the weather station software at the core of everything here. All data collection, archiving, and processing is handled by WeeWX. Please consider supporting the project at weewx.com.
weewx-sdr by Matthew Wall — the WeeWX driver that makes SDR dongles work as a weather station input. This project would not be possible without it.
rtl_433 by Benjamin Larsson and contributors — decodes the RF transmissions from the weather station and feeds them to weewx-sdr.
NomadNet by Mark Qvist — the mesh network node software that serves the weather pages over Reticulum.
uniplot by Olav Stetter — terminal graph rendering used in the NomadNet graph pages.
Ansi2MicronMU — converts ANSI terminal output to NomadNet MicronMU markup.
MIT — see LICENSE