Weather Station ESP32 ESPHome

This is a DIY weather station based on the ESP32-S3 microcontroller (via the BPI-Leaf-S3 board) that monitors temperature, humidity, pressure, CO₂, wind speed, and light level. It is solar-powered, includes a 3.7 V Li-Po battery backup, and integrates seamlessly with Home Assistant via ESPHome.

Internet of Things (IoT)Multi-languageGPL-3.0

Abstract

Weather Station ESP32 ESPHome is an open-source Internet of Things (IoT) project. This is a DIY weather station based on the ESP32-S3 microcontroller (via the BPI-Leaf-S3 board) that monitors temperature, humidity, pressure, CO₂, wind speed, and light level. It is solar-powered, includes a 3.7 V Li-Po battery backup, and integrates seamlessly with Home Assistant via ESPHome. Key capabilities include: Measures temperature, humidity, and pressure using a BME280 sensor; Monitors air quality (CO₂ and TVOC) with a CCS811 sensor; Detects ambient light through a BH1750 module. The complete source code is publicly available on GitHub under the GNU General Public License v3.0, making it a useful reference for students building an Internet of Things (IoT) mini project or final-year project.

1. Introduction

This is a DIY weather station based on the ESP32-S3 microcontroller (via the BPI-Leaf-S3 board) that monitors temperature, humidity, pressure, CO₂, wind speed, and light level. It is solar-powered , includes a 3.7 V Li-Po battery backup , and integrates seamlessly with Home Assistant via ESPHome.

2. Objective

This is a DIY weather station based on the ESP32-S3 microcontroller (via the BPI-Leaf-S3 board) that monitors temperature, humidity, pressure, CO₂, wind speed, and light level. It is solar-powered, includes a 3.7 V Li-Po battery backup, and integrates seamlessly with Home Assistant via ESPHome.

This project demonstrates how modern tools can be applied to a real-world Internet of Things (IoT) problem.

3. Key Features / Modules

  • Measures temperature, humidity, and pressure using a BME280 sensor.
  • Monitors air quality (CO₂ and TVOC) with a CCS811 sensor.
  • Detects ambient light through a BH1750 module.
  • Calculates wind speed via a Hall-effect sensor and a 3D-printed anemometer.
  • Powered by a 12 V solar panel with a Li-Po battery (2×10 000 mAh in parallel) for full autonomy.
  • Uses deep sleep mode to reduce power consumption, waking periodically for data acquisition and Wi-Fi upload.
  • Fully compatible with Home Assistant through ESPHome, supporting OTA (Over-The-Air) updates.

4. Technology Stack

See repository.

  • BPI-Leaf-S3 development board (ESP32-S3, 2 MB PSRAM, 8 MB Flash) – chosen for its extremely low power consumption in deep sleep mode (~10 µA).
  • BME280 for temperature, humidity, and pressure (accuracy: ±0.25 % for pressure, range −40 °C – 85 °C).
  • CCS811 for CO₂ and TVOC (range: 400–8192 ppm CO₂, 0–1187 ppb TVOC).
  • BH1750 for light intensity (±20 % precision, low power).
  • Hall-effect sensor + magnet attached to a 3D-printed rotor for wind-speed detection.
  • Voltage divider to monitor the 3.7 V battery level.
  • Solar-power manager board – accepts 6–24 V input, MPPT charging, USB-C 5 V/3 A support, and full battery protection.
  • Solar panel: 12 V / 12 W peak.

5. System Requirements

General requirements for this technology stack — check the README for exact versions.

  • See the project README for exact requirements
  • Git (to clone the repository)

6. Installation & Setup

git clone https://github.com/Fattelodasolo/Weather-Station-ESP32---ESPHome.git
cd Weather-Station-ESP32---ESPHome

Full setup instructions are in the project README.

7. Future Enhancements

Suggested extensions you can add to make this your own project.

  • Add a mobile dashboard using Blynk or Firebase
  • Store readings in a cloud database for history charts
  • Add alerts via SMS / Telegram when thresholds are crossed

8. Viva / Review Questions

Common questions examiners ask for projects in this domain.

  1. Which microcontroller / board and sensors are used and why?
  2. How does the device send data (Wi-Fi, MQTT, HTTP, Bluetooth)?
  3. Where is the sensor data stored and visualised?
  4. How is power consumption managed?
  5. How would you secure the device and its communication?

9. Source Code & License

This project is developed by Fattelodasolo and published on GitHub under the GNU General Public License v3.0. Please follow the license terms and credit the original author when you use or modify this code.

Want to build this as your internship project?

Work on an Internet of Things (IoT) project like this with mentor guidance, weekly reviews and an internship certificate from Training Trains, Erode — online or offline.

Apply for Internet of Things (IoT) Internship