06-22-2026, 01:12 PM
Been working on this one for a few months and it's finally stable enough to write up.
The goal: A weather station at the bottom of my garden, solar powered, transmitting data wirelessly to a Pi indoors, displayed on a simple web dashboard.
Hardware:
Power management: This was the hardest part. The ESP32 deep sleeps between readings (every 5 minutes). Wake, take readings, transmit via MQTT, sleep. Current draw in deep sleep: ~150uA. Awake and transmitting: ~200mA for about 2 seconds. Net daily consumption is very low - the 3000mAh 18650 easily survives cloudy winter days.
Enclosure issues: First version was not properly sealed - condensation got inside and killed the BME280. Second version added silica gel sachets and proper cable gland fittings. Has been running for 3 months now without issues.
Software:
What I'd change: Use a proper RS485 anemometer instead of the cheap pulse-count one. The cheap one needs calibration and the cable run over 10m introduced noise.
Happy to share code or answer questions on any part of this.
The goal: A weather station at the bottom of my garden, solar powered, transmitting data wirelessly to a Pi indoors, displayed on a simple web dashboard.
Hardware:
- ESP32-S3 as the main controller
- BME280 (temperature, humidity, pressure)
- Anemometer and wind vane (cheap Amazon ones, turned out to be accurate enough)
- Rain gauge (tipping bucket type)
- 6V 2W solar panel
- TP4056 lithium battery charger
- 18650 cell as the buffer battery
- Waterproof project box from Aliexpress
Power management: This was the hardest part. The ESP32 deep sleeps between readings (every 5 minutes). Wake, take readings, transmit via MQTT, sleep. Current draw in deep sleep: ~150uA. Awake and transmitting: ~200mA for about 2 seconds. Net daily consumption is very low - the 3000mAh 18650 easily survives cloudy winter days.
Enclosure issues: First version was not properly sealed - condensation got inside and killed the BME280. Second version added silica gel sachets and proper cable gland fittings. Has been running for 3 months now without issues.
Software:
- ESP32 firmware in Arduino/PlatformIO
- MQTT broker (Mosquitto) on the Pi
- InfluxDB for time-series storage
- Grafana for dashboards - the auto-generated weather graphs are genuinely nice
What I'd change: Use a proper RS485 anemometer instead of the cheap pulse-count one. The cheap one needs calibration and the cable run over 10m introduced noise.
Happy to share code or answer questions on any part of this.
