This is a private project. The watering in my garden runs by itself. Several ESP32 boards with ESPHome firmware measure, decide and switch. Home Assistant shows the state and lets me override it from the phone.
The boards are:
- a rain-barrel monitor: water level from a float switch and two capacitive probes, and a pump;
- a greenhouse soil-moisture and temperature monitor;
- a 3-zone sprinkler controller;
- two 4-channel switch boards, one of them also measuring temperature.
Each board has its own configuration. The shared parts, such as Wi-Fi, OTA updates and diagnostics, are ESPHome packages that every board includes. Passwords stay in secret files outside git.
Details#
The barrel levels agree with each other. If water reaches a higher sensor, every lower level reads as wet too, whatever a noisy probe says.
I measured 20 capacitive soil-moisture sensors dry and in water, and derived a linear formula from the raw reading to a moisture percentage.
A small script, board.py, compiles and uploads firmware over USB or the network and shows logs, for one board or all of them, on Windows and macOS.