Irrigation Automation

So finally I have completed my irrigation set up.  This one tested a variety of my skills, Plumbing, electrical, manual labour :) and of course the  coding and electronics :)
I might still change this in the future to run on Tasmota, but I enjoy writing code, and for this one I chose to write my own code to run on the ESP controller.

To make this work from a hardware perspective, I have a NodeMCU controlling a 4 channel relay board.  The software is custom firmware I wrote and flashed onto the NodeMCU, that communicates with my OpenHAB server using the MQTT protocol.   This controller controls (3) three zones of irrigation as well as topping up the swimming pool, preventing me from over filling the pool and flooding the back yard. (It has happened before)

From the server side - OpenHAB, I have rules switching each zone on for 20 min, and alternating the zones putting them on one zone at a time.  Then from the app, I can turn on zones individually should I wish to. Alternatively I can manually start the 20 min cycle rotation or schedule the cycle to initiate at any given time and interval determined by cron pattern.