Help on creating a timed watering system

Hello I’m relatively new to home assistant and looking for some direction on how I can automate my sequence.

I have a 6 station system and I can easily automate each station in sequence with a predetermined time delay.

Because I don’t necessarily have to water each station at all times I’d like to have a matrix of selectable station switches that I enable and then hit start automation and it will water only those stations.
Where do I start? is there any other examples that I can modify for this automation?

Thanks in advance.

I wouldn’t use delays, that could flood your garden.
Timers is probably a better solution.

You have six times, when the times is enabled the switch turns on, and closes when the timer has ended.

Yes sorry timers will be better…but I’m looking for selective station i.e. I might wanna water stations 1,4 and 6 today not all six and tomorrow I might wanna water all 6.

You need some soil moisture sensors.

I only have three zones. I have a schedule helper for each zone that I adjust seasonally.

Each zone has its own automation.

Schedule on → valve open but only if the soil moisture for that zone is below a certain level and only if there is not significant rain forecast for the next 24 hours.

Schedule helper off → valve closed.

- id: d7d908a1-256a-4d0a-b810-da38cfb55e7b
  alias: Irrigation Zone 2 # Rear Garden
  triggers:
  - trigger: state
    entity_id: schedule.rear_garden_schedule
    from: 'off'
    to: 'on'
  conditions:
  - condition: state
    entity_id: binary_sensor.rear_garden_moisture_limit
    state: 'off'
  - condition: state
    entity_id: binary_sensor.rain_today_limit
    state: 'off'
  actions:
  - action: switch.turn_on
    entity_id: switch.zone_2
  - action: notify.telegram_system_log
    data:
      title: '💧 <b>Z2 Irrigation on</b>'
      message: "Rear Garden irrigation turned on."

- id: 761d23fd-cd2e-4bc3-9570-5e4a4770ba40
  alias: Irrigation Zone 2 Off # Rear Garden
  triggers:
  - trigger: state
    entity_id: schedule.rear_garden_schedule
    from: 'on'
    to: 'off'
  conditions:
  - condition: state
    entity_id: switch.zone_2
    state: 'on'
  actions:
  - action: switch.turn_off
    entity_id: switch.zone_2
  - action: notify.telegram_system_log
    data:
      title: '☑️ <b>Z2 Irrigation off</b>'
      message: "Rear Garden irrigation turned off."

Template binary sensors:


- name: "Front Garden Moisture Limit"
  unique_id: aeabb3d5-c82d-4247-80d8-9d30670ab797
  icon: >
    {% if is_state("binary_sensor.front_garden_moisture_limit", "on") %}
      mdi:water
    {% else %}
      mdi:water-off
    {% endif %}
  state: >
    {{ states('sensor.front_garden_soil_saturation')|float(0) >= states('input_number.front_garden_moisture_limit')|float(0) }}
- name: "Rain Today Limit"
  unique_id: d859831a-9c93-4a15-bccd-7a88e5f19325
  icon: >
    {% if is_state('binary_sensor.rain_today_limit', 'on') %}
      mdi:weather-pouring
    {% else %}
      mdi:weather-sunny
    {% endif %}
  state: "{{ ( states('sensor.hobart_rain_since_9am')|float(0) >= states('input_number.rain_limit')|float(0) ) or ( states('sensor.predict_rain_today')|float(0) >= states('input_number.rain_limit')|float(0) ) }}"

Screenshot 2025-01-17 at 18-58-51 Overview – Home Assistant

Thanks Tom, I don’t want to use moisture sensors. I currently use my Tuya app to select my stations that I want to water. I want to be able to do it via home assistant.
I want to use one app rather than a bunch of apps for all my devices.

No to me. Home assistant is about automation, not a fancy remote control.

All good Tom, regardless of whether I want a fully automated system or a fancy remote I live in an area where water restrictions occur quite often without notice so that will be pretty hard to automate. Anyway back to my original question can this be done? Thanks for taking the time to respond

Sure, create an input boolean for each zone that you can use to indicate if you want it watered (on) or not (off).

Use either schedule helpers or time triggers for and an automation for each zone (schedule helpers are easier to change).

Trigger on the time or schedule and use a state condition to check the input boolean to see if the zone should be watered.

For turning the zones off you can trigger on the schedule turning off or create an input number (one for each zone if you want different times per zone). For that you would trigger like this:

# zone one off automation
triggers:
  - trigger: state
    entity_id: switch.zone_1 
    from: 'off'
    to: 'on'
    for: 
      minutes: "{{ states('input_number.zone_1_run_time') }}"
actions:
  - action: switch.turn_off 
    target: 
      entity_id:
        - switch.zone_1