Close
0%
0%

Meshtastic Weather Station

LoRa mesh weather station: Raspberry pi Pico W ingests UDP, sends via Meshtastic to Pi, stores in SQLite, syncs to AWS with retries

Similar projects worth following
This project is a weather station built for our community garden. Since the garden has no internet access, it uses Meshtastic and LoRa hardware to relay weather data back to a home server with an internet connection. I’ll be sharing the complete system, including the Pico controller firmware, the home server services, and the AWS services that make it all work.

Meshtastic Weather Bridge

Weather is collected using a WeatherFlow Tempest station and transported back to the house over a long-range Meshtastic LoRa link. A Raspberry Pi 5 then ingests, stores, and forwards the data to AWS for visualization and long-term storage.

The goal is to build a reliable, low-power pipeline from sensor → radio → server → cloud.

Project Links:

Live Demo:
https://www.brahmschultz.com/meshtastic-weather-station

AWS API spec: 
https://agent215.github.io/weatherStationApiSwagger/

Github Repo:
https://github.com/Agent215/MeshtasticWeatherStationScripts

Why this project exists

Most consumer weather stations rely heavily on cloud connectivity. If your internet goes down, your data is gone.

Here we are not dependent on internet access. 

  • All data is captured locally
  • Transport is handled over a private LoRa mesh
  • The home server stores data on sqlite and is only dependent on power
  • Cloud integration is optional and happens last, (for now we send data to aws dynamo db)

System Architecture

System Architecutre
Tempest Sensor → Tempest Hub (Wi-Fi LAN) →Wireless Mini Portable Travel Router → Raspberry Pi Pico W (UDP listener) → UART → Garden Meshtastic Node → LoRa Mesh → Home Meshtastic Node → USB → Raspberry Pi 5 Server → Local storage (SQLite for store and forward) → AWS API ( self hosted api later)

Key Features

  • Fully offline-capable garden node
  • Long-range LoRa backhaul using Meshtastic
  • Local-first data ingestion and persistence
  • Resilient to Wi-Fi, power, or cloud outages
  • Simple, modular interfaces between each device
  • Designed for solar-powered deployment

Current Status

  • Meshtastic nodes configured and communicating
  • One-way radio messaging verified
  • mock UDP payload generator created
  • Raspberry Pi ingest + logging service working
  • UART connection from Raspberry Pi Pico W to rak4631 Meshtastic enabled board(garden node)
  • Broadcasting from rak4631 Meshtastic enabled board(garden node) to private test channel via Meshtastic
  • home Node (rak4631 Meshtastic) consuming and sending data to raspberry pi 5 via serial
  • Aws infra deployed (apigw, lambdas for get and post endpoints, and dynamo db)
  • enclosure built for home node 
  • raspberry pi and meshtastic board are installed on final perfboard and connected via soldered wires. 
  • home node installed on site
  • multiple fields tests completed with real weather data flowing through the whole pipeline and displaying in the website dashboard.

Next Steps

  • Connect Garden node to the on site solar powered batteries.
  • Do final field test

parser.py

home pi script for parsing incoming data

py - 20.06 kB - 03/23/2026 at 15:47

Download

schema.sql

home pi sqlite schema

sql - 5.39 kB - 03/23/2026 at 15:47

Download

__init__.py

py - 0 bytes - 03/23/2026 at 15:47

Download

storage.py

sql scripts for home pi

py - 17.32 kB - 03/23/2026 at 15:47

Download

db.py

db definition

py - 413.00 bytes - 03/23/2026 at 15:47

Download

View all 17 files

  • 1 × Raspberry Pi Pico W
  • 2 × WisMesh RAK3312 ESP32-S3 Starter Kit Meshtastic Firmware
  • 1 × ELEGOO 32 Pcs Double Sided PCB Board Prototype Kit for DIY Soldering with 5 Sizes Compatible with Arduino Kits
  • 1 × Raspberry Pi 5
  • 1 × GL Inet GL-MT300N-V2 Wireless Mini Portable Travel Router, Mobile Hotspot in RAM

View all 11 components

  • 1
    Mock weather set up and initial node set up and configuration

    1. save main.py on to raspberry pi pico, update wifi information for your local network

    2. solder male header pins to pico and rak4631

    3. plug in travel router, or use your own local network for testing.

    4. run mock_tempest_udp_sender.py on the network to send weather data over udp. For now we are mocking the data that the weather station will send. Once we have the actual weather station we will replace the mock with that.

    5. confirm logs are showing on the pico while plugged in to your computer. The pico should blink its led each time a message is sent.

    6. next connect the pico to the rak4631 garden node as shown below:

    Pico GP0 (TX) -> RAK RX1
    Pico GP1 (RX) -> RAK TX1
    Pico GND      -> RAK GND

    you can use jumper cables or solder wires, in the image shown i have a used 9*15 mm perfboard and soldered wires.

    back of perf board
    soldered wires to the pins

    7. plug in the rak4631 home node and connect with the meshtastic app. Make sure both nodes are using the same channel and frequency config. 

    8. you should see messages flowing from the mock weather station to the pico over udp on wifi, then to the rak4631 garden node over uart, and finally to the home node over the meshtastic network. you can verify by checking the meshtastic app and connecting the home node to view the messages. 

    messages flowing to home node viewed on the meshtastic app

View all instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates