Created
June 23, 2025 20:24
-
-
Save AbleMonster/7b06e8ba431c4162eedd830216ce5835 to your computer and use it in GitHub Desktop.
Bewässerung V1.1 Eng.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: Smart Garden Irrigation V1.0 beta | |
description: > | |
Controls garden irrigation with optional pump, water level monitoring, soil moisture and rain check, | |
zone control for lawn, raised beds, vegetables, and shrubs, plus manual control via input selects. | |
Duration can be automatic or manual. Flexible start time (fixed, night, sunset/sunrise with offset) | |
or manually via input select. | |
domain: automation | |
input: | |
# Zones + manual control + duration | |
zonen_rasen: | |
name: Lawn Zones (Valve or Switch) | |
default: [] | |
selector: | |
entity: | |
multiple: true | |
filter: | |
- domain: switch | |
- domain: valve | |
manuell_rasen_select: | |
name: Manual Lawn Control (Input Select) | |
selector: | |
entity: | |
domain: input_select | |
manuelle_dauer_rasen: | |
name: Manual Lawn Duration (Minutes, 0 = automatic) | |
default: 0 | |
selector: | |
number: | |
min: 0 | |
max: 120 | |
zonen_hochbeet: | |
name: Raised Bed Zones (Valve or Switch) | |
default: [] | |
selector: | |
entity: | |
multiple: true | |
filter: | |
- domain: switch | |
- domain: valve | |
manuell_hochbeet_select: | |
name: Manual Raised Bed Control (Input Select) | |
selector: | |
entity: | |
domain: input_select | |
manuelle_dauer_hochbeet: | |
name: Manual Raised Bed Duration (Minutes, 0 = automatic) | |
default: 0 | |
selector: | |
number: | |
min: 0 | |
max: 120 | |
zonen_gemuese: | |
name: Vegetable Zones (Valve or Switch) | |
default: [] | |
selector: | |
entity: | |
multiple: true | |
filter: | |
- domain: switch | |
- domain: valve | |
manuell_gemuese_select: | |
name: Manual Vegetable Control (Input Select) | |
selector: | |
entity: | |
domain: input_select | |
manuelle_dauer_gemuese: | |
name: Manual Vegetable Duration (Minutes, 0 = automatic) | |
default: 0 | |
selector: | |
number: | |
min: 0 | |
max: 120 | |
zonen_straeucher: | |
name: Shrub Zones (Valve or Switch) | |
default: [] | |
selector: | |
entity: | |
multiple: true | |
filter: | |
- domain: switch | |
- domain: valve | |
manuell_straeucher_select: | |
name: Manual Shrub Control (Input Select) | |
selector: | |
entity: | |
domain: input_select | |
manuelle_dauer_straeucher: | |
name: Manual Shrub Duration (Minutes, 0 = automatic) | |
default: 0 | |
selector: | |
number: | |
min: 0 | |
max: 120 | |
# Water source | |
wasserquelle: | |
name: Select Water Source | |
default: "tap_water" | |
selector: | |
select: | |
options: | |
- label: Tap Water | |
value: tap_water | |
- label: Rainwater / Cistern | |
value: rainwater | |
min_fuellstand: | |
name: Minimum Fill Level for Pump Activation (only relevant for rainwater) | |
default: 100 | |
selector: | |
number: | |
min: 0 | |
max: 50000 | |
# Pump | |
pumpe: | |
name: Pump (optional) | |
default: null | |
selector: | |
entity: | |
domain: switch | |
pumpenverzoegerung: | |
name: Pump Delay (Seconds) | |
default: 5 | |
selector: | |
number: | |
min: 1 | |
max: 60 | |
# Fill level | |
fuellstand: | |
name: Fill Level Sensor (optional, select only for rainwater) | |
default: null | |
selector: | |
entity: | |
domain: sensor | |
# Soil moisture | |
bodenfeuchte_sensor: | |
name: Soil Moisture Sensor (optional) | |
default: null | |
selector: | |
entity: | |
domain: sensor | |
bodenfeuchte_verwenden: | |
name: Use Soil Moisture? | |
default: false | |
selector: | |
boolean: {} | |
bodenfeuchte_schwelle: | |
name: Soil Moisture Threshold (%) | |
default: 30 | |
selector: | |
number: | |
min: 0 | |
max: 100 | |
# Rain | |
regen_grenze: | |
name: Rain Amount Threshold (mm) | |
default: 10 | |
selector: | |
number: | |
min: 0 | |
max: 100 | |
regen_sensor: | |
name: Rain Amount Sensor (optional) | |
default: null | |
selector: | |
entity: | |
domain: sensor | |
regen_live_sensor: | |
name: Rain Sensor (optional, active = rain detected) | |
default: null | |
selector: | |
entity: | |
domain: binary_sensor | |
# Water consumption per minute (optional) | |
wasserverbrauch_pro_minute: | |
name: Water Consumption per Minute (Liters) | |
default: 0 | |
description: "Optional: Consumption in liters per minute for total usage calculation." | |
selector: | |
number: | |
min: 0 | |
max: 100 | |
step: 0.1 | |
wasserverbrauch_aktivieren: | |
name: Enable Water Consumption Calculation? | |
default: false | |
selector: | |
boolean: {} | |
# Flexible start time | |
startzeit_option: | |
name: Choose Start Time Option | |
default: fixed_time | |
selector: | |
select: | |
options: | |
- label: Fixed Time (manual input) | |
value: fixed_time | |
- label: Night (02:00 AM) | |
value: night | |
- label: Sunset with Offset | |
value: sunset | |
- label: Sunrise with Offset | |
value: sunrise | |
startzeit_fest: | |
name: Fixed Start Time (if 'Fixed Time' selected) | |
default: null | |
selector: | |
time: {} | |
startzeit_offset: | |
name: Offset for Sunrise/Sunset (Minutes, positive = later, negative = earlier) | |
default: 0 | |
selector: | |
number: | |
min: -120 | |
max: 120 | |
# Parallel or sequential | |
bewasserung_parallel: | |
name: Irrigation Parallel or Sequential? (true = all zones at once) | |
default: true | |
selector: | |
boolean: {} | |
trigger: | |
- platform: time | |
at: !input startzeit_fest | |
id: fixed_time | |
- platform: sun | |
event: sunset | |
offset: !input startzeit_offset | |
id: sunset | |
- platform: sun | |
event: sunrise | |
offset: !input startzeit_offset | |
id: sunrise | |
- platform: time | |
at: "02:00:00" | |
id: night | |
variables: | |
water_source: !input wasserquelle | |
min_level: !input min_fuellstand | |
use_soil: !input bodenfeuchte_verwenden | |
soil_sensor: !input bodenfeuchte_sensor | |
soil_threshold: !input bodenfeuchte_schwelle | |
rain_sensor: !input regen_sensor | |
rain_live_sensor: !input regen_live_sensor | |
rain_threshold: !input regen_grenze | |
zones_lawn: !input zonen_rasen | |
zones_raised: !input zonen_hochbeet | |
zones_veg: !input zonen_gemuese | |
zones_shrub: !input zonen_straeucher | |
manual_lawn: !input manuell_rasen_select | |
manual_raised: !input manuell_hochbeet_select | |
manual_veg: !input manuell_gemuese_select | |
manual_shrub: !input manuell_straeucher_select | |
pump: !input pumpe | |
pump_delay: !input pumpenverzoegerung | |
fill_sensor: !input fuellstand | |
water_calc: !input wasserverbrauch_aktivieren | |
water_rate: !input wasserverbrauch_pro_minute | |
parallel: !input bewasserung_parallel | |
condition: | |
- condition: or | |
conditions: | |
- condition: template | |
value_template: "{{ trigger.id == startzeit_option }}" | |
- condition: template | |
value_template: > | |
{{ manual_lawn is defined and states(manual_lawn) != 'off' or | |
manual_raised is defined and states(manual_raised) != 'off' or | |
manual_veg is defined and states(manual_veg) != 'off' or | |
manual_shrub is defined and states(manual_shrub) != 'off' }} | |
action: | |
- choose: | |
- conditions: | |
- condition: template | |
value_template: > | |
{{ water_source == 'rainwater' and fill_sensor is defined and | |
(fill_sensor | float(0)) < min_level }} | |
sequence: | |
- service: persistent_notification.create | |
data: | |
title: Irrigation blocked | |
message: Fill level too low for pump! | |
- conditions: | |
- condition: template | |
value_template: > | |
{{ use_soil and soil_sensor is defined and | |
(states(soil_sensor) | float(0)) > soil_threshold }} | |
sequence: | |
- service: persistent_notification.create | |
data: | |
title: Irrigation not necessary | |
message: Soil moisture above threshold. | |
- conditions: | |
- condition: template | |
value_template: > | |
{{ rain_sensor is defined and (states(rain_sensor) | float(0)) > rain_threshold }} | |
sequence: | |
- service: persistent_notification.create | |
data: | |
title: Irrigation skipped | |
message: Rain amount above threshold. | |
- conditions: | |
- condition: template | |
value_template: > | |
{{ rain_live_sensor is defined and is_state(rain_live_sensor, 'on') }} | |
sequence: | |
- service: persistent_notification.create | |
data: | |
title: Irrigation stopped | |
message: Rain detected by live sensor. | |
- conditions: [] | |
sequence: | |
- if: | |
- condition: template | |
value_template: "{{ pump is defined }}" | |
then: | |
- service: switch.turn_on | |
target: | |
entity_id: !input pumpe | |
- delay: | |
seconds: !input pumpenverzoegerung | |
- choose: | |
- conditions: | |
- condition: template | |
value_template: "{{ parallel }}" | |
sequence: | |
- service: homeassistant.turn_on | |
target: | |
entity_id: "{{ zones_lawn + zones_raised + zones_veg + zones_shrub }}" | |
- conditions: [] | |
sequence: | |
- service: homeassistant.turn_on | |
target: | |
entity_id: "{{ zones_lawn }}" | |
- delay: | |
minutes: "{{ manuelle_dauer_rasen if manuelle_dauer_rasen > 0 else 10 }}" | |
- service: homeassistant.turn_off | |
target: | |
entity_id: "{{ zones_lawn }}" | |
- service: homeassistant.turn_on | |
target: | |
entity_id: "{{ zones_raised }}" | |
- delay: | |
minutes: "{{ manuelle_dauer_hochbeet if manuelle_dauer_hochbeet > 0 else 5 }}" | |
- service: homeassistant.turn_off | |
target: | |
entity_id: "{{ zones_raised }}" | |
- service: homeassistant.turn_on | |
target: | |
entity_id: "{{ zones_veg }}" | |
- delay: | |
minutes: "{{ manuelle_dauer_gemuese if manuelle_dauer_gemuese > 0 else 5 }}" | |
- service: homeassistant.turn_off | |
target: | |
entity_id: "{{ zones_veg }}" | |
- service: homeassistant.turn_on | |
target: | |
entity_id: "{{ zones_shrub }}" | |
- delay: | |
minutes: "{{ manuelle_dauer_straeucher if manuelle_dauer_straeucher > 0 else 7 }}" | |
- service: homeassistant.turn_off | |
target: | |
entity_id: "{{ zones_shrub }}" | |
- if: | |
- condition: template | |
value_template: "{{ pump is defined }}" | |
then: | |
- service: switch.turn_off | |
target: | |
entity_id: !input pumpe | |
- if: | |
- condition: template | |
value_template: "{{ water_calc and water_rate > 0 }}" | |
then: | |
- service: persistent_notification.create | |
data: | |
title: Water usage | |
message: > | |
Water used: {{ | |
( (manuelle_dauer_rasen if manuelle_dauer_rasen > 0 else 10) + | |
(manuelle_dauer_hochbeet if manuelle_dauer_hochbeet > 0 else 5) + | |
(manuelle_dauer_gemuese if manuelle_dauer_gemuese > 0 else 5) + | |
(manuelle_dauer_straeucher if manuelle_dauer_straeucher > 0 else 7) | |
) * water_rate | |
}} liters. | |
mode: single | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment