Sprinkler and garage controller.

A 2018-era home sprinkler controller — Raspberry Pi orchestrated by Jenkins, because Jenkins was already running on the home Xen cluster. Long since retired.

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

2018 — JENKINS + A PIjenkinson a Xen VMraspberry pipython · GPIOrelay module4 zoneszones 1–4cronGPIO12VEach zone was a parameterized Jenkins job. Cron triggers ran them on schedule.Rain-day overrides were Jenkins parameter overrides — skip the job, or pass duration=0.Drawn dim because almost none of these parts still exist.

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.