I recently undertook a project to automate my balcony watering system using an ESP8266 D1 Mini Pro with esphome. The goal was to transition from an older Atmega-based system to something more modern and efficient. Here’s how it went:
Project Overview
My system uses a water storage column with two float switches to monitor water levels. A small pump transfers water from a refill tank to the main column. Everything is powered by a 10W solar panel and a 12.8V/7Ah LiFePo4 battery with built-in BMS. I also have an LCD display showing key metrics like solar and battery voltage, and the status of the float switches.
Challenges Faced
Initially, I struggled with setting up automations that would work without a Wi-Fi connection. I tried using conditions and triggers in Home Assistant, but they didn’t translate well to the ESP8266. After some research and trial and error, I found a way to implement the necessary logic directly on the ESP.
Key Features Achieved
Here’s what I managed to get working:
- Solar Charging: The system now automatically charges the battery when solar power is available and stops when the battery is full (14.5V).
- Day/Night Mode: During the day, the pump runs when the main column is empty and the refill tank is full. At night, the system goes into a low-power state.
- Water Level Monitoring: The pump only runs when there’s enough water in the refill tank to prevent dry operation.
Lessons Learned
- Local Automation is Possible: It’s definitely doable to have the ESP handle all the logic without relying on an external server.
- Battery Management: Ensuring the battery doesn’t overcharge or discharge too deeply is crucial for longevity.
- Simplicity Wins: Keeping the system simple and reliable was more important than having every feature imaginable.
Next Steps
I plan to add more sensors and maybe integrate some weather data to optimize watering times further. I’m also looking into using a larger battery to extend the autonomy during long periods of cloudy weather.
If anyone has tips on improving the system or suggestions for additional features, I’d love to hear them! ![]()