IoT Weather Station
Full-Stack Sensor Network
A complete end-to-end IoT solution for monitoring indoor and outdoor weather conditions. This project tracks temperature, humidity, and atmospheric pressure using a custom-built sensor network and visualizes the data on a responsive, modern web dashboard.
The Technology Stack
- Hardware (C++): Arduino Nano, WeMos D1 Mini, DHT11 & BMP280 Sensors
- Backend (Python): Flask REST API, Linux Daemons
- Database: MariaDB
- Frontend (TypeScript): React, Vite, Recharts
- Networking: Custom 433MHz RF Protocol, mDNS, Tailscale VPN
Hardware & Custom Protocols
The system uses an Arduino Nano as a remote node, sending compressed 32-bit data packages via a 433MHz RF link to a WeMos D1 Mini gateway. To ensure absolute data accuracy, the gateway recalculates checksums to filter out noise and applies a custom weighting algorithm to balance remote and local sensor readings.
Backend Collection & React Dashboard
A Python-based Linux daemon constantly fetches indoor data from the gateway and enriches it with outdoor data from the Open-Meteo API. This validated data is stored in MariaDB. The user interface is built with React and TypeScript, utilizing Recharts for responsive, historical trend analysis and data visualization.
Challenges & Lessons Learned
Building this required solving complex problems across the entire stack. I learned how to handle wireless signal reliability (fixing connection drops by using static IPs), design robust database schemas, and manage centralized API states. The transition to TypeScript was initially challenging but ultimately proved invaluable for catching bugs early in the React frontend.
Full Picture