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.
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.
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.
Lightweight Python API pre-aggregates data at write time. Endpoints return shaped JSON for charts, pressure trends, wind vectors, and CSV export.
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.
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.
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