ESPHome Sprinkler YAML

Here is the Lovelace

type: vertical-stack
cards:
  - type: entities
    entities:
      - entity: number.sprinkler_controller_duration
        icon: mdi:sprinkler
      - entity: number.sprinkler_controller_duration_of_valve_1
        name: Valve 1
        icon: mdi:sprinkler
      - entity: number.sprinkler_controller_duration_of_valve_2
        name: Valve 2
        icon: mdi:sprinkler
      - entity: number.sprinkler_controller_duration_of_valve_3
        name: Valve 3
        icon: mdi:sprinkler
      - entity: number.sprinkler_controller_duration_of_valve_4
        name: Valve 4
        icon: mdi:sprinkler
      - entity: number.sprinkler_controller_duration_of_valve_5
        name: Valve 5
        icon: mdi:sprinkler
      - entity: number.sprinkler_repeat_cycles
        icon: mdi:sprinkler
    title: Bewässerungs Bereich Lawn
    show_header_toggle: false
  - type: horizontal-stack
    cards:
      - show_name: true
        show_icon: true
        type: button
        tap_action:
          action: toggle
        entity: switch.lawn_sprinklers
        name: Main Lawn
        icon: mdi:sprinkler
      - type: button
        tap_action:
          action: toggle
        entity: switch.front_lawn
        icon: mdi:sprinkler
      - type: button
        tap_action:
          action: toggle
        entity: switch.side_lawn
        icon: mdi:sprinkler
      - type: button
        tap_action:
          action: toggle
        entity: switch.back_lawn
        icon: mdi:sprinkler
      - type: button
        tap_action:
          action: toggle
        entity: switch.front_garden
        icon: mdi:sprinkler
      - type: button
        tap_action:
          action: toggle
        entity: switch.back_garden
        icon: mdi:sprinkler
  - type: horizontal-stack
    cards:
      - show_name: true
        show_icon: true
        type: button
        tap_action:
          action: call-service
          service: esphome.bewaesserung_resume
          data: {}
          target: {}
        icon: mdi:play
        name: Start
      - show_name: true
        show_icon: true
        type: button
        tap_action:
          action: call-service
          service: esphome.bewaesserung_pause
          data: {}
          target: {}
        icon: mdi:pause-box-outline
        name: Pause
      - show_name: true
        show_icon: true
        type: button
        tap_action:
          action: call-service
          service: esphome.bewaesserung_previous_valve
          data: {}
          target: {}
        icon: mdi:skip-previous
        name: Previous
      - show_name: true
        show_icon: true
        type: button
        tap_action:
          action: call-service
          service: esphome.bewaesserung_next_valve
          data: {}
          target: {}
        entity: ''
        icon: mdi:skip-next
        name: Next
      - show_name: true
        show_icon: true
        type: button
        tap_action:
          action: call-service
          service: esphome.bewaesserung_shutdown
          data: {}
          target: {}
        icon: mdi:stop
        name: Stop
        show_state: true
      - show_name: true
        show_icon: true
        type: button
        name: Reverse
        tap_action:
          action: toggle
        entity: switch.lawn_sprinklers_reverse
        icon: mdi:keyboard-tab-reverse
  - type: horizontal-stack
    cards:
      - show_name: true
        show_icon: true
        type: button
        tap_action:
          action: call-service
          service: esphome.bewaesserung_start_full_cycle
          data: {}
          target: {}
        icon: mdi:refresh-auto
        name: Full Circle
      - show_name: true
        show_icon: true
        type: button
        tap_action:
          action: call-service
          service: esphome.bewaesserung_repeat_2
          data: {}
          target: {}
        entity: ''
        icon: mdi:numeric-2-circle-outline
        name: Repeat 2
      - show_name: true
        show_icon: true
        type: button
        tap_action:
          action: call-service
          service: esphome.bewaesserung_set_multiplier
          data: {}
          target: {}
        icon: mdi:numeric-3-box-outline
        name: Repeat 3
        show_state: true

Here is the esp

esphome:
  name: bewaesserung

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "6zeG5VCmbWhBpYATSekLlTWG4qSR79dXoBTz0vnM4Ck="
  services:
    - service: set_multiplier
      variables:
        multiplier: float
      then:
        - sprinkler.set_multiplier:
            id: lawn_sprinkler_ctrlr
            multiplier: !lambda 'return multiplier;'
    - service: start_full_cycle
      then:
        - sprinkler.start_full_cycle: lawn_sprinkler_ctrlr
    - service: start_single_valve
      variables:
        valve: int
      then:
        - sprinkler.start_single_valve:
            id: lawn_sprinkler_ctrlr
            valve_number: !lambda 'return valve;'
    - service: next_valve
      then:
        - sprinkler.next_valve: lawn_sprinkler_ctrlr
    - service: previous_valve
      then:
        - sprinkler.previous_valve: lawn_sprinkler_ctrlr
    - service: shutdown
      then:
        - sprinkler.shutdown: lawn_sprinkler_ctrlr
    - service: pause
      then:
        - sprinkler.pause: lawn_sprinkler_ctrlr
    - service: resume
      then:
        - sprinkler.resume: lawn_sprinkler_ctrlr
    - service: resume_or_full_cycle
      then:
        - sprinkler.resume_or_start_full_cycle: lawn_sprinkler_ctrlr
    - service: repeat_2
      then:
        - sprinkler.set_repeat:
            id: lawn_sprinkler_ctrlr
            repeat: 2  # would run three cycles
    - service: repeat_3
      then:
        - sprinkler.set_repeat:
            id: lawn_sprinkler_ctrlr
            repeat: 3  # would run three cycles
        
ota:
  password: "f5cf86541b6ec5a6d35c1234ff987fba"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Bewaesserung Fallback Hotspot"
    password: "Yv1223458mKU"

captive_portal:

sprinkler:
  - id: lawn_sprinkler_ctrlr
    main_switch: "Lawn Sprinklers"
    auto_advance_switch: "Lawn Sprinklers Auto Advance"
    reverse_switch: "Lawn Sprinklers Reverse"
    valve_overlap: 1s
    valves:
      - valve_switch: "Front Lawn"
        enable_switch: "Enable Front Lawn"
        pump_switch_id: sprinkler_pump_sw0
        run_duration: 3s
        valve_switch_id: lawn_sprinkler_valve_sw0
      - valve_switch: "Side Lawn"
        enable_switch: "Enable Side Lawn"
        pump_switch_id: sprinkler_pump_sw0
        run_duration: 3s
        valve_switch_id: lawn_sprinkler_valve_sw1
      - valve_switch: "Back Lawn"
        enable_switch: "Enable Back Lawn"
        pump_switch_id: sprinkler_pump_sw1
        run_duration: 3s
        valve_switch_id: lawn_sprinkler_valve_sw2
      - valve_switch: "Front Garden"
        enable_switch: "Enable Front Garden"
        pump_switch_id: sprinkler_pump_sw0
        run_duration: 9s
        valve_switch_id: garden_sprinkler_valve_sw0
      - valve_switch: "Back Garden"
        enable_switch: "Enable Back Garden"
        pump_switch_id: sprinkler_pump_sw1
        run_duration: 9s
        valve_switch_id: garden_sprinkler_valve_sw1

switch:
  - platform: gpio
    id: sprinkler_pump_sw0
    pin: 12
  - platform: gpio
    id: sprinkler_pump_sw1
    pin: 13
  - platform: gpio
    id: lawn_sprinkler_valve_sw0
    pin: 0
  - platform: gpio
    id: lawn_sprinkler_valve_sw1
    pin: 2
  - platform: gpio
    id: lawn_sprinkler_valve_sw2
    pin: 4
  - platform: gpio
    id: garden_sprinkler_valve_sw0
    pin: 14
  - platform: gpio
    id: garden_sprinkler_valve_sw1
    pin: 15
    
# Example configuration to set multiplier via number
number:
  - platform: template
    id: sprinkler_ctrlr_multiplier
    name: "Sprinkler Controller Multiplier"
    min_value: 0.1
    max_value: 10.0
    step: 0.1
    lambda: "return id(lawn_sprinkler_ctrlr).multiplier();"
    set_action:
      - sprinkler.set_multiplier:
          id: lawn_sprinkler_ctrlr
          multiplier: !lambda 'return x;'
          

  - platform: template
    id: sprinkler_ctrlr_duration
    name: "Sprinkler Controller Duration"
    min_value: 1
    max_value: 500
    step: 1
    lambda: "return id(lawn_sprinkler_ctrlr).valve_run_duration(0);"
#    lambda: "return id(lawn_sprinkler_ctrlr).duration(0);"
    set_action:
      - sprinkler.set_valve_run_duration:
          id: lawn_sprinkler_ctrlr
          valve_number: 0
          run_duration: !lambda 'return x;'

  - platform: template
    id: sprinkler_ctrlr_duration_v_1
    name: "Sprinkler Controller Duration of Valve 1"
    min_value: 1
    max_value: 300
    step: 1
    lambda: "return id(lawn_sprinkler_ctrlr).valve_run_duration(0);"
    set_action:
      - sprinkler.set_valve_run_duration:
          id: lawn_sprinkler_ctrlr
          valve_number: 0
          run_duration: !lambda 'return x;'
  - platform: template
    id: sprinkler_ctrlr_duration_v_2
    name: "Sprinkler Controller Duration of Valve 2"
    min_value: 1
    max_value: 300
    step: 1
    lambda: "return id(lawn_sprinkler_ctrlr).valve_run_duration(1);"
    set_action:
      - sprinkler.set_valve_run_duration:
          id: lawn_sprinkler_ctrlr
          valve_number: 1
          run_duration: !lambda 'return x;'
  - platform: template
    id: sprinkler_ctrlr_duration_v_3
    name: "Sprinkler Controller Duration of Valve 3"
    min_value: 1
    max_value: 300
    step: 1
    lambda: "return id(lawn_sprinkler_ctrlr).valve_run_duration(2);"
    set_action:
      - sprinkler.set_valve_run_duration:
          id: lawn_sprinkler_ctrlr
          valve_number: 2
          run_duration: !lambda 'return x;'
  - platform: template
    id: sprinkler_ctrlr_duration_v_4
    name: "Sprinkler Controller Duration of Valve 4"
    min_value: 1
    max_value: 300
    step: 1
    lambda: "return id(lawn_sprinkler_ctrlr).valve_run_duration(3);"
    set_action:
      - sprinkler.set_valve_run_duration:
          id: lawn_sprinkler_ctrlr
          valve_number: 3
          run_duration: !lambda 'return x;'
  - platform: template
    id: sprinkler_ctrlr_duration_v_5
    name: "Sprinkler Controller Duration of Valve 5"
    min_value: 1
    max_value: 300
    step: 1
    lambda: "return id(lawn_sprinkler_ctrlr).valve_run_duration(4);"
    set_action:
      - sprinkler.set_valve_run_duration:
          id: lawn_sprinkler_ctrlr
          valve_number: 4
          run_duration: !lambda 'return x;'
  - platform: template
    id: sprinkler_ctrlr_repeat_cycles
    name: "Sprinkler Repeat Cycles"
    min_value: 0
    max_value: 300
    step: 1
    mode: box
    lambda: "return id(lawn_sprinkler_ctrlr).repeat();"
    set_action:
      - sprinkler.set_repeat:
          id: lawn_sprinkler_ctrlr
          repeat: !lambda 'return x;'

Happy automating :partying_face:

1 Like