# Building a Mesh Weather Station Network

## Building a Mesh Weather Station Network

A neighbourhood weather monitoring grid built on mesh radio nodes provides hyper-local environmental data at a fraction of the cost of commercial weather station networks. This page presents a deployment blueprint: hardware selection, node placement strategy, data aggregation, and community value proposition.

**A note on telemetry capture.** The realistic data path for an automated mesh weather grid today is **Meshtastic**, whose Telemetry module reports environment metrics (temperature, humidity, barometric pressure, gas resistance/IAQ, voltage, current) that an ESP32 gateway can publish to MQTT and into a database. MeshCore sensor support exists but is build-time and request/response only (see the [MeshCore Sensor Data Integration](https://wiki.meshamerica.com/books/iot-sensors/page/meshcore-sensor-data-integration) page); it has no scheduled-broadcast sensor packets and no room-server sensor log to scrape. The hardware list below works for either firmware, but choose your aggregation method (below) to match the firmware you actually flash.

### Use Case and Goals

The target deployment is a 5-node network covering a suburban neighbourhood approximately 2 km in diameter, providing temperature, humidity, barometric pressure, and rainfall (with optional tipping-bucket rain gauge) at 15-minute intervals. The base station node aggregates data and pushes to a local dashboard and optionally to Weather Underground as a Personal Weather Station (PWS) network contribution.

### Hardware List (5-Node Network)

<table id="bkmrk-itemqtynotes-rak1900"> <thead><tr><th>Item</th><th>Qty</th><th>Notes</th></tr></thead> <tbody> <tr><td>RAK19007 Base Board</td><td>5</td><td>One per node</td></tr> <tr><td>RAK4631 Core Module</td><td>5</td><td>nRF52840 + SX1262</td></tr> <tr><td>RAK1906 BME680 Sensor</td><td>5</td><td>Temp/humidity/pressure/IAQ</td></tr> <tr><td>0.5 W solar panel</td><td>4</td><td>Remote nodes; base station uses mains power. 0.5 W is marginal in low-sun regions — size to local insolation and duty cycle (see note below).</td></tr> <tr><td>3000 mAh LiPo battery</td><td>4</td><td>Remote node backup power. Add an in-line fuse on the positive lead and a charge controller with low-temperature charge cutoff (see safety note below).</td></tr> <tr><td>Weatherproof enclosure (e.g. RAK Unify or equivalent IP-rated box)</td><td>5</td><td>Use an outdoor-rated enclosure with mounting bracket; verify the exact SKU's IP rating against the manufacturer datasheet before buying.</td></tr> <tr><td>915 MHz fiberglass antenna (3 dBi)</td><td>5</td><td>~3 dBi over isotropic — a modest gain over a true half-wave dipole (~2.15 dBi), but a worthwhile upgrade over a stock rubber-duck whip.</td></tr> <tr><td>Raspberry Pi 4 (base station)</td><td>1</td><td>Runs the data pipeline (MQTT broker / collector + database + dashboard)</td></tr> </tbody></table>

The RAK4631/RAK19007 is configured over its onboard USB-C connector, which already provides a serial console — no separate USB-C-to-UART adapter cable is required for normal setup.

**Battery safety (outdoor LiPo):** outdoor nodes need an in-line fuse (or polyfuse) on the battery positive lead, and a charge controller/PMIC with a **low-temperature charge cutoff** so the pack is never charged below 0 °C (32 °F). Charging a lithium cell below freezing causes lithium plating — permanent capacity loss and a fire risk. A bare TP4056 has no such cutoff. This applies to LiFePO4 as well.

**Solar sizing:** a 0.5 W panel may be insufficient in low-sun months or cloudy climates. Size the panel and battery to your worst-month insolation and the node's actual duty cycle rather than assuming a fixed wattage carries a node year-round.

### Node Placement Strategy

LoRa range depends heavily on terrain and obstructions. For a neighbourhood grid targeting 1 - 2 km node spacing:

- **Hilltops and ridge lines** - Priority placement. Raising an antenna extends the radio horizon: the line-of-sight distance to the horizon is roughly 4.12 × √h km for antenna height h in metres (about 13 km at 10 m, 16 km at 15 m for a flat earth), and the usable link is the sum of both ends' horizons. A rooftop-mounted node on a two-storey building often outperforms a ground-level hilltop node.
- **Open areas** - Parks, schoolyards, and sports fields with no obstructions in the LoRa Fresnel zone are ideal secondary sites.
- **Avoid dense urban canyons** - Buildings attenuate 868/915 MHz signals significantly, from a few dB for a single drywall partition to 20+ dB for reinforced concrete per wall. Place nodes at building edges or on roof parapet walls rather than interior courtyards.
- **1 - 2 km spacing** - With omnidirectional 3 dBi antennas and SF10 spreading factor, links around 1.5 km are achievable in favourable suburban line-of-sight conditions; obstructions, foliage, and terrain reduce this. Test with field RSSI measurements before finalising locations.

Use RF planning tools such as HeyWhatsThat or Radio Mobile to model coverage before physically deploying hardware.

### Data Aggregation at the Base Station

The aggregation method depends on the firmware you flash:

- **Meshtastic (recommended for automated weather telemetry):** an ESP32 gateway node publishes telemetry to an MQTT broker (JSON output is supported on ESP32 gateways, not on nRF52). A collector subscribes to the broker and writes the readings to InfluxDB. Note the RAK4631 is an nRF52 board, so it cannot itself emit JSON-MQTT — pair it with an ESP32 gateway or a host-side bridge for the base-station role.
- **MeshCore:** there is no room-server sensor log to parse. Use the [MeshCore Sensor Data Integration](https://wiki.meshamerica.com/books/iot-sensors/page/meshcore-sensor-data-integration) path — a host running `meshcore_py` requests telemetry from each node (CayenneLPP response) and writes the decoded values to InfluxDB.

A Grafana instance on the same Raspberry Pi can provide the neighbourhood dashboard, accessible via a local web browser or optionally published to the internet via a Cloudflare Tunnel for remote access without port-forwarding.

Sample Grafana panels for the weather station dashboard:

- Map panel showing node locations with colour-coded current temperature
- Time-series panel with all 5 node temperatures overlaid (last 24 hours)
- Humidity and pressure time-series with storm-front detection annotation
- Battery voltage panel to flag nodes needing maintenance
- Uptime table showing last-seen timestamp per node

### Comparison with Weather Underground PWS Network

Weather Underground's Personal Weather Station programme allows individuals to contribute data to a public map. A mesh weather station network is complementary rather than competing:

- **Mesh advantage** - No internet connectivity required per node; data flows over radio. A single internet-connected base station is sufficient for the whole neighbourhood.
- **PWS contribution** - Optionally forward base station data to Weather Underground using the WU API to contribute to the public network and gain access to WU dashboard tools.
- **NOAA CoCoRaHS comparison** - CoCoRaHS focuses on manual rain gauge readings reported daily. An automated mesh network provides sub-hourly data and adds temperature, humidity, and pressure. The two approaches are complementary; mesh data can supplement manual CoCoRaHS reports for the same location.

### Community Value Proposition

A neighbourhood mesh weather station network provides tangible community benefits beyond individual weather curiosity:

- **Urban heat island mapping** - Identify which streets or parks run significantly hotter in summer, informing tree-planting and shade-structure decisions.
- **Frost and freeze alerts** - Gardeners and small farmers can get a useful hyperlocal indication of frost or freeze from the nearest sensor node, which may differ from official forecasts based on airport weather stations kilometres away. Treat a single uncalibrated node as supplementary — cross-check against the National Weather Service forecast before acting on it.
- **Flood and drainage monitoring** - Nodes near drainage channels can trigger alerts on rapid barometric pressure drops correlated with heavy rain events.
- **Resilience during grid outages** - Solar-powered mesh nodes continue operating when mains power fails, providing situational awareness during severe weather events precisely when it is most needed.
- **Educational resource** - Open data from a neighbourhood sensor grid makes a compelling school science project, with real local data available for analysis.