Last Updated: --:--

Loading...

--°
L: --° | H: --° | Hum: --% | Dew Point: --°
RSSI: -- | Noise: -- | SNR: --
Relative Pressure -- hPa --:--
Wind Speed -- km/h Avg. Last 15 min
Wind Gusts -- km/h Max Last 1 hr
Rain (24h) -- mm Total Accumulation
WIND

How It Works

This demo runs on a static 72-hour snapshot of real data recorded from a live Pi installation. On your own Pi, the dashboard polls your local database every five minutes and shows your latest readings.
🌡️ BME280 I²C
📡 RTL-SDR 433 MHz
🗄️ SQLite EAV schema
FastAPI Python
🌐 Dashboard
📡

RTL-SDR + 433 MHz

rtl_433 decodes 433 MHz packets from wireless weather sensors. Readings are buffered in memory and flushed to SQLite at each 5-minute bucket boundary.

🌡️

BME280

A wired I²C sensor connected directly to the Pi reads barometric pressure, temperature, and humidity. Runs as a one-shot cron job every 5 minutes — exits after each write.

🗄️

SQLite + Entity-Attribute-Value Schema

Each reading is stored as a single row: sensor_id, metric type, timestamp, value. New sensors once added to the database require no changes to any table structures.

FastAPI Backend

Lightweight Python API pre-aggregates data at write time. Endpoints return shaped JSON for charts, pressure trends, wind vectors, and CSV export.

🌐

Vanilla JS Frontend

No dependencies beyond Chart.js. Written for iOS 12 Safari compatibility. The application is accessible from any device connected to the same network with a browser.

💾

CSV Export

Every reading is exportable as an unpivoted CSV — one row per observation with sensor, metric, value, unit, and UTC timestamp. Ready for direct import into pandas, R, or Excel.

About

Pi Weather Station logs sensor readings every five minutes to a SQLite database on your Raspberry Pi. Your data lives on your own hardware — the Pi acts as both the database and the web server, accessible from any browser on the same network as the Pi.

Every reading is downloadable as a CSV file, formatted for direct use in Python, R, or Excel. The database uses an Entity-Attribute-Value schema for the sensor readings. Therefore, new sensors can be added without changes to table structure — register them once in the database with an INSERT and sensor readings should appear in the dashboard automatically.

This is an open-source project. The code, schema, and data format are fully documented on GitHub.

This is a hobby project — calculations and software are provided as-is with no guarantee of accuracy or reliability.

View on GitHub