128 lines
4.1 KiB
YAML
128 lines
4.1 KiB
YAML
# packages/bewaesserung/automations.yaml
|
||
automation:
|
||
- id: bewaesserung_taeglicher_check
|
||
alias: "Bewässerung: Täglicher Check"
|
||
description: >
|
||
Täglich zur konfigurierten Uhrzeit: gießt wenn Min-Feuchte unter Schwelle
|
||
und (optional) kein Regen vorhergesagt.
|
||
mode: single
|
||
trigger:
|
||
- platform: time
|
||
at: input_datetime.bewaesserung_uhrzeit
|
||
|
||
condition:
|
||
- condition: state
|
||
entity_id: input_boolean.bewaesserung_aktiv
|
||
state: "on"
|
||
- condition: numeric_state
|
||
entity_id: sensor.bewaesserung_min_feuchte
|
||
below: input_number.bewaesserung_schwellwert
|
||
|
||
action:
|
||
# Regensperre: nur prüfen wenn aktiv
|
||
- if:
|
||
- condition: state
|
||
entity_id: input_boolean.bewaesserung_regensperre
|
||
state: "on"
|
||
then:
|
||
- action: weather.get_forecasts
|
||
target:
|
||
entity_id: weather.home
|
||
data:
|
||
type: daily
|
||
response_variable: wetter
|
||
- if:
|
||
- condition: template
|
||
value_template: >
|
||
{{ (wetter['weather.home'].forecast | default([{}]) | first).precipitation | default(0) | float(0) > 0 }}
|
||
then:
|
||
- stop: "Regen vorhergesagt – Bewässerung übersprungen"
|
||
|
||
# Pumpe einschalten
|
||
- action: switch.turn_on
|
||
target:
|
||
entity_id: switch.hydro_one
|
||
|
||
- action: notify.mobile_app_DEIN_GERAET
|
||
data:
|
||
title: "Bewässerung"
|
||
message: >
|
||
Bewässerung gestartet – Min-Feuchte: {{ states('sensor.bewaesserung_min_feuchte') }}%
|
||
|
||
# Warten bis Zielfeuchte erreicht oder Timeout
|
||
- wait_for_trigger:
|
||
- trigger: template
|
||
value_template: >
|
||
{{ states('sensor.bewaesserung_min_feuchte') | float(0) >=
|
||
states('input_number.bewaesserung_ziel_feuchte') | float(70) }}
|
||
timeout: "{{ (states('input_number.bewaesserung_dauer') | int) * 60 }}"
|
||
continue_on_timeout: true
|
||
|
||
# Pumpe ausschalten
|
||
- action: switch.turn_off
|
||
target:
|
||
entity_id: switch.hydro_one
|
||
|
||
# Benachrichtigung: Ziel erreicht oder Timeout
|
||
- if:
|
||
- condition: template
|
||
value_template: "{{ wait.completed }}"
|
||
then:
|
||
- action: notify.mobile_app_DEIN_GERAET
|
||
data:
|
||
title: "Bewässerung"
|
||
message: >
|
||
✅ Fertig – Feuchte jetzt {{ states('sensor.bewaesserung_min_feuchte') }}%
|
||
else:
|
||
- action: notify.mobile_app_DEIN_GERAET
|
||
data:
|
||
title: "Bewässerung"
|
||
message: >
|
||
⚠️ Timeout nach {{ states('input_number.bewaesserung_dauer') | int }} min –
|
||
Feuchte erst {{ states('sensor.bewaesserung_min_feuchte') }}%
|
||
|
||
# Wochenzähler erhöhen
|
||
- action: counter.increment
|
||
target:
|
||
entity_id: counter.bewaesserung_woche
|
||
|
||
- id: bewaesserung_failsafe
|
||
alias: "Bewässerung: Failsafe-Abschaltung"
|
||
description: "Pumpe zwangsweise abschalten wenn sie länger als 15 min läuft"
|
||
mode: single
|
||
trigger:
|
||
- platform: state
|
||
entity_id: switch.hydro_one
|
||
to: "on"
|
||
for:
|
||
minutes: 15
|
||
action:
|
||
- action: switch.turn_off
|
||
target:
|
||
entity_id: switch.hydro_one
|
||
- action: notify.mobile_app_DEIN_GERAET
|
||
data:
|
||
title: "Bewässerung ALARM"
|
||
message: "🚨 Pumpe-Notabschaltung! Lief länger als 15 Minuten."
|
||
|
||
- id: bewaesserung_wochenreport
|
||
alias: "Bewässerung: Wochenreport"
|
||
description: "Jeden Sonntag um 20:00 Bericht und Zähler-Reset"
|
||
mode: single
|
||
trigger:
|
||
- platform: time
|
||
at: "20:00:00"
|
||
condition:
|
||
- condition: time
|
||
weekday:
|
||
- sun
|
||
action:
|
||
- action: notify.mobile_app_DEIN_GERAET
|
||
data:
|
||
title: "Bewässerung Wochenreport"
|
||
message: >
|
||
Diese Woche {{ states('counter.bewaesserung_woche') }}× gegossen.
|
||
- action: counter.reset
|
||
target:
|
||
entity_id: counter.bewaesserung_woche
|