Christophe Grädel

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.

Screenshot of the Weather 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

Picture of the Arduino and WeMos setup

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.

Graph visualization example

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

Full view of the Weather Dashboard