Skip to content

This project is a low-power, solar-powered weather station built with an ESP32 (NodeMCU-32S) and a BME280 sensor for measuring temperature, humidity, and air pressure. It is designed for maximum energy efficiency using a dynamic deep sleep algorithm based on the measured solar voltage and is fully integrated into Home Assistant via ESPHome.

Notifications You must be signed in to change notification settings

CrazyUs3r/ESPHome-Solar-Weather-Station-ESP32-BME280-Deep-Sleep-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 

Repository files navigation

🌦️ ESPHome Solar Weather Station (ESP32 + BME280 + Deep Sleep)

This project is a low-power, solar-powered weather station built with an ESP32 (NodeMCU-32S) and a BME280 sensor for measuring temperature, humidity, and air pressure.

It is designed for maximum energy efficiency using a dynamic deep sleep algorithm based on the measured solar voltage and is fully integrated into Home Assistant via ESPHome.

Perfect for outdoor and off-grid applications.

πŸ”§ Features

βœ… Temperature, humidity, and pressure measurement (BME280) βœ… Dew point and altitude calculation βœ… Solar and battery voltage monitoring βœ… Dynamic deep sleep based on solar input βœ… Battery level in % with status text βœ… Min/Max temperature and humidity tracking (daily reset) βœ… Deep sleep control via Home Assistant βœ… WiFi RSSI quality + system status βœ… Last update timestamp βœ… OTA updates βœ… Static IP + fallback hotspot βœ… Optimized for solar / battery usage

🧠 Dynamic Deep Sleep Logic

Sleep duration is automatically adjusted based on solar voltage:

Solar Voltage Sleep Time

4.5 V 20 minutes 2.5 V 35 minutes 1.0 V 45 minutes ≀ 1.0 V 70 minutes

Deep sleep can also be manually enabled/disabled using the Home Assistant entity:

input_boolean.wetterstation_deep_sleep

πŸ”‹ Power System

Battery voltage reading via ADC + voltage divider (R1 / R2)

Percentage calculation based on 3.2 V – 4.2 V

Text status: Full / OK / Low / Critical

Solar voltage is used to control sleep cycle duration

πŸ“¦ Hardware

ESP32 NodeMCU-32S

BME280 (I2C address: 0x76)

Li-Ion battery

Solar panel

Voltage divider (R1 = 97kΞ©, R2 = 26.8kΞ© – adjustable)

Outdoor enclosure (recommended)

🏠 Home Assistant Integration

The station exposes the following main entities:

Temperature, humidity, pressure

Dew point & altitude

Min/Max (temperature and humidity)

Battery percentage

Solar voltage

Wake-ups per day

Last update

Sleep mode state

WiFi signal quality

Connected via ESPHome API (encrypted).

πŸ—‚ Configuration Overview

Platform: ESP32 (nodemcu-32s)

Framework: Arduino

BME280 via IΒ²C (SDA 21 / SCL 22)

ADC:

GPIO34 β†’ Battery

GPIO35 β†’ Solar

Dynamic deep sleep control via scripts

πŸš€ Planned Extensions

About

This project is a low-power, solar-powered weather station built with an ESP32 (NodeMCU-32S) and a BME280 sensor for measuring temperature, humidity, and air pressure. It is designed for maximum energy efficiency using a dynamic deep sleep algorithm based on the measured solar voltage and is fully integrated into Home Assistant via ESPHome.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published