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