A home sprinkler controller built because my old one died, and I wanted an excuse. It was running in the garage for a few years, then was retired when I moved. The pattern — relays driven by a small board, talking to Home Assistant — got reused and is now doing garage doors, but the sprinkler part is gone.
Architecture
Why Jenkins
The home lab at the time was a small Xen cluster running the always-on services I cared about — off-site backups, dynamic-DNS updates. Jenkins was handling all of my cron type workloads.
- Each zone is a parameterized Jenkins job.
- The job's body is a one-liner that flips a relay GPIO on, sleeps, flips it off.
- Schedule is a Jenkins cron trigger.