Local-first • ESP32-S3 • 8 zones • Home Assistant

Smart sprinkler control without renting your yard to the cloud.

ESPrinkler32 is an open, practical sprinkler controller built around an ESP32 touchscreen panel, an I2C relay expansion board, and boring-good fail-off safety.

ESPrinkler32Local Control
Zone 1Front beds • 12:34 left
Zone 2Back yard • ready
Zone 3Garden • disabled
Zone 4Drip line • ready
Zone 5ready
Zone 6ready
Zone 7ready
Zone 8ready
ALL ZONES OFF

The appliance version of a maker project.

The goal is not just “an ESP32 that clicks relays.” The goal is a controller you can mount, configure, recover, and hand to somebody without a 45-minute explanation.

Local-first

Manual control and safety actions live on the device. WiFi and Home Assistant make it better, but they are not required for basic operation.

Fail-off safety

Outputs default off at boot, one zone runs at a time, runtimes are clamped, and ALL OFF stays available even when a zone is disabled.

Real configuration

Name zones, disable unwired zones, expose useful status, and build schedules on top of the same clean zone model.

Hardware path

Current architecture: 2.8-inch ESP32-S3 touchscreen panel connected over I2C to an MCP23017 relay expansion PCB. Eight zones, one common 24VAC sprinkler transformer path, and a shared 5V logic rail.

ControllerESP32-S3 touchscreen module
ExpansionMCP23017 I2C GPIO expander
Zones8 relay-controlled sprinkler zones
Valve power24VAC switched by relay contacts
IntegrationLocal web/API plus Home Assistant
ESPrinkler32 PCB preview

Software model

The firmware is moving in small, safe milestones: display and touch first, then web/API status, then stubbed zone control, then persistent zone config, then time and scheduling.

Device UI

  • Big zone buttons
  • Visible WiFi/time state
  • Always-present ALL OFF

API

  • /api/status
  • /api/zone
  • /api/alloff
  • Disabled-zone protection

Schedules

  • Stored locally
  • Skipped if time invalid
  • Skipped for disabled zones
  • Manual control remains available

Build roadmap

Touchscreen console

Bring up display, touch, pages, diagnostics, and local safe state with stubbed hardware.

Local web and JSON status

Expose a simple web page and status endpoint without blocking offline boot.

8-zone API model

Support all eight zones in software, reject invalid zones, clamp runtimes, and verify ALL OFF.

Zone enable/name config

Persist enabled flags and names, grey disabled zones, reject ON for disabled zones, but allow OFF.

NTP and scheduling

Add time validity, local schedule storage, schedule skip logic, and manual override behavior.