Professional-grade ESPHome smart irrigation controller with local scheduling, offline operation, and native Home Assistant integration
irriBRANT is a professional-grade smart irrigation controller designed to replace traditional irrigation timers with a modern, automation-first, locally controlled solution.
The project is built around a Seeed Studio XIAO ESP32-C6, powered by ESPHome, and designed to integrate natively with Home Assistant while keeping the core irrigation logic inside the ESP32.
Unlike simple relay-based irrigation controllers, irriBRANT was designed to support:
- Local irrigation scheduling
- Offline operation without Home Assistant
- 9 independent irrigation zones
- 3 configurable irrigation programs
- Zone runtime control
- Repeat cycles
- Persistent settings inside the ESP32
- Native Home Assistant dashboard integration
- Weather-aware automation
- Rain and snow lockout logic
- Future soil moisture and flow monitoring
The result is a flexible, reliable, and expandable irrigation platform for smart homes, DIY automation, and maker projects.
The irriBRANT project has moved beyond concept and prototype design.
The hardware has already been designed, fabricated, assembled, and tested with real firmware. The current development focus is on firmware refinement, dashboard usability, long-term reliability, and weather-aware scheduling.
- Schematic Design
- PCB Layout & Routing
- Gerber Generation
- PCB Fabrication
- PCB Assembly
- ESPHome Firmware Development
- MCP23017 I/O Expansion Working
- 9-Zone Output Addressing Validated
- Local Zone Control Implemented
- Home Assistant Integration Implemented
- Dashboard Development Started
- ESP32-Based Scheduling Architecture Defined
- 3-Program Irrigation Logic Planned / In Development
- Offline-Capable Architecture Selected
- Long-Term Field Testing
- Weather Forecast / Rain / Snow Logic Finalization
- Enclosure Design
- Flow Sensor Support
- Soil Moisture Sensor Support
- Final Documentation Package
irriBRANT is being developed as an ESPHome standalone irrigation controller.
Home Assistant is used for dashboard, monitoring, configuration, and remote control, but the long-term design goal is for the ESP32 to remain responsible for the actual irrigation logic.
The ESP32 is responsible for:
- Zone execution
- Program storage
- Irrigation scheduling
- Runtime logic
- Repeat logic
- Zone enable / disable state
- Irrigation status tracking
- Local persistence
- Manual start / stop actions
- Safety lockouts
- Offline operation
Home Assistant is used for:
- Dashboard interface
- Monitoring
- Optional remote control
- Weather data source
- Forecast-based automation assistance
- Diagnostics display
- OTA firmware updates through ESPHome
This architecture allows irriBRANT to continue operating even if Home Assistant is offline, unavailable, or rebooting.
The controller is designed to support 3 independent irrigation programs:
Program A
Program B
Program C
Each program can include:
| Feature | Description |
|---|---|
| Enable / Disable | Allows each program to be turned on or off independently |
| Start Time | Defines when the program starts |
| Days of Week | Selects which days the program is allowed to run |
| Included Zones | Selects which active zones are part of the program |
| Runtime per Zone | Defines how long each zone runs |
| Repeat Count | Allows the same program to repeat multiple times |
| Repeat Delay | Defines the waiting time between repeated cycles |
This allows the controller to support common irrigation strategies such as:
- Deep watering
- Cycle-and-soak
- Morning-only irrigation
- Separate lawn and garden programs
- Seasonal runtime adjustments
- Different watering schedules for different areas
irriBRANT supports 9 independent irrigation zones.
Each zone is exposed as a controllable valve entity and can be used by:
- Local ESPHome logic
- Home Assistant dashboard cards
- Manual controls
- Scheduled programs
- Weather-aware automation
- Future flow monitoring logic
Each zone supports:
- Manual open / close
- Program inclusion / exclusion
- Runtime configuration
- Active / inactive configuration
- Individual status feedback
- Individual PCB indicator LED
- Home Assistant entity exposure
The dashboard is being refined to show only the zones that are active in the controller configuration, keeping the interface cleaner and easier to use.
The current hardware revision introduced several important usability, serviceability, and diagnostic improvements.
A dedicated RGB status LED provides immediate visual feedback for:
- Boot status
- Wi-Fi connection
- ESPHome status
- Error diagnostics
- Irrigation activity
- Future maintenance modes
Each of the 9 irrigation outputs includes an individual yellow status LED.
This makes it possible to identify active zones directly on the PCB during:
- Installation
- Debugging
- Field testing
- Valve troubleshooting
- Firmware validation
A tactile push button was added for local interaction.
Planned and current uses include:
- Manual override
- Emergency stop
- Captive portal trigger
- Maintenance actions
- Future local test modes
The PCB layout and firmware structure were refined to make troubleshooting easier during real-world testing.
Diagnostic features include:
- Wi-Fi status
- Signal strength
- Uptime
- Schedule status
- Rain lock status
- Irrigation running status
- Zone activity
- System history through Home Assistant
The complete schematic for the irrigation controller can be found below.
The Home Assistant dashboard is being developed as the main user interface for configuration, monitoring, and manual operation.
The dashboard is designed to provide:
- Clean visual layout
- Manual zone control
- Program control
- Active-zone-only display
- System diagnostics
- Irrigation history
- Weather and rain lock status
- Program execution buttons
- Mobile-friendly control
Current and planned dashboard areas include:
| Section | Purpose |
|---|---|
| Zone Control | Manual operation of active zones |
| Program Control | Run Program A, B, or C |
| Program Configuration | Configure days, start time, zones, runtime, and repeats |
| Diagnostics | Wi-Fi, uptime, schedule status, rain lock |
| History | Logbook and irrigation events |
| Weather Logic | Rain, snow, and forecast-based lockout status |
The irriBRANT platform was engineered with reliability, serviceability, electrical isolation, and expandability as core principles.
The controller is based on the Seeed Studio XIAO ESP32-C6.
The ESP32-C6 provides:
- Wi-Fi 6
- Bluetooth LE
- Zigbee-capable hardware
- Matter-ready hardware platform
- Low power consumption
- Compact footprint
- ESPHome compatibility
This makes the board a future-ready platform for smart irrigation and connected home automation.
The MCP23017 I2C I/O expander manages the irrigation output control lines while preserving ESP32 GPIOs for other functions.
Benefits include:
- Clean GPIO expansion
- Simplified PCB routing
- Easy support for 9 outputs
- Better firmware organization
- Room for future expansion
The board is designed to work with standard irrigation transformer power.
24VAC irrigation transformer
24VAC Input
→ Bridge Rectifier
→ Filtering Stage
→ Buck Converter
→ 5V Rail
→ ESP32 3.3V Regulation
The power stage is designed to provide a stable DC supply for the ESP32 and logic circuitry while the 24VAC side remains available for valve switching.
Each irrigation valve is controlled through an optoisolated AC switching stage.
The optocouplers provide:
- Galvanic isolation
- Zero-cross switching
- Reduced electrical noise
- Safer separation between logic and valve power
- Improved reliability for AC valve loads
The output stage uses BT136S surface-mount triacs for AC switching.
Benefits include:
- Solid-state switching
- Silent operation
- No relay contacts
- No mechanical wear
- Compact PCB footprint
- Suitable for low-current 24VAC irrigation solenoids
Depending on sourcing and design revision, the board may use BT136S-600D or BT136S-800D class devices.
Each output includes an RC snubber network to help suppress transients generated by inductive irrigation valves.
Typical network:
47Ω resistor
10nF capacitor
A replaceable blade fuse protects the board and transformer side from excessive current events.
The fuse helps protect:
- PCB traces
- Valve power path
- Irrigation transformer
- Output switching stage
irriBRANT was built to work naturally with Home Assistant through ESPHome.
- Native ESPHome integration
- Individual valve entities
- Manual zone control
- Program start buttons
- System diagnostics
- OTA firmware updates
- Wi-Fi status monitoring
- Signal strength monitoring
- Uptime monitoring
- Rain lock status
- Irrigation history
- Weather-based automations
- Dashboard customization
The project direction is to avoid depending on Home Assistant helpers, scripts, or automations for the core irrigation logic.
The ESP32 should remain responsible for the actual watering schedule and execution.
Home Assistant becomes the interface, not the brain.
The project is being designed to support weather-aware irrigation decisions.
irriBRANT can be integrated with Home Assistant weather data sources such as:
- Current rain condition
- Rain intensity
- Forecasted rain
- Forecasted snow
- Temperature
- Wind
- Humidity
- Evapotranspiration-related sensors
- Smart Irrigation integrations
The weather-aware logic is planned to support:
- Rain lock
- Snow lock
- Forecast-based skip
- Rain delay
- Seasonal adjustment
- Water-saving operation
- Optional evapotranspiration-based runtime adjustment
This allows the system to avoid unnecessary irrigation when precipitation is occurring or likely to occur soon.
The ESPHome firmware is organized into modular packages to keep the project easier to maintain.
Expected package structure:
irribrant_vX_X.yaml
packages/
hardware.yaml
irrigation.yaml
programs.yaml
scheduler.yaml
diagnostics.yaml
| Package | Responsibility |
|---|---|
| hardware.yaml | ESP32, I2C, MCP23017, GPIOs, outputs, LEDs |
| irrigation.yaml | Zone control, valve entities, irrigation runtime |
| programs.yaml | Program A / B / C configuration |
| scheduler.yaml | Time-based execution and repeat logic |
| diagnostics.yaml | Wi-Fi, uptime, system status, debug sensors |
This structure keeps the firmware readable and makes future development easier.
Current testing has validated:
- ESPHome firmware flashing
- ESP32 boot
- MCP23017 I2C communication
- Correct zone addressing
- Zone output control in firmware
- Home Assistant entity creation
- Basic dashboard control
- Status sensors
- Program control layout concepts
Ongoing validation includes:
- 24VAC switching behavior
- Long-term outdoor reliability
- Output stage behavior under real solenoid loads
- Enclosure thermal behavior
- Dashboard usability
- Weather lockout logic
- Full standalone scheduler behavior
| Subsystem | Component / Feature |
|---|---|
| Main Controller | Seeed Studio XIAO ESP32-C6 |
| I/O Expansion | MCP23017 |
| Outputs | 9 AC valve outputs |
| Switching | MOC3041 optocouplers + BT136S triacs |
| Input Power | 24VAC irrigation transformer |
| Logic Power | Rectified and regulated DC rail |
| Status | RGB status LED |
| Zone Feedback | 9 individual yellow zone LEDs |
| Local Control | Tactile push button |
| Protection | Blade fuse |
| Noise Suppression | RC snubber per output |
| Firmware | ESPHome |
| Integration | Home Assistant native ESPHome API |
Planned future improvements include:
- Final standalone scheduler implementation
- Full Program A / B / C configuration
- Cycle-and-soak refinement
- Weather forecast integration
- Rain and snow forecast lockout
- Soil moisture sensor integration
- Flow sensor monitoring
- Leak detection
- Master valve / pump start support
- DIN rail enclosure version
- Outdoor enclosure version
- Expansion module support
- Local web interface
- Matter-native exploration
- Improved documentation
- Installation guide
- Troubleshooting guide
- YouTube build and demo series
irriBRANT is an open-source DIY electronics project.
Although the irrigation side is based on low-voltage 24VAC systems, users should still take proper precautions when working with transformers, outdoor wiring, water, and electrical enclosures.
Use proper fusing, waterproof enclosures, strain relief, and installation practices according to local electrical requirements.
This project is open-source and intended for educational, maker, and home automation applications.
Developed as part of the Brant Channel project series.















