diff --git a/.gitignore b/.gitignore index a6aba54..9f02dc5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,9 +4,9 @@ .cache backups/ secrets.yaml -automations.yaml -scripts.yaml -scenes.yaml +/automations.yaml +/scripts.yaml +/scenes.yaml # Python __pycache__/ diff --git a/packages/bewaesserung/automations.yaml b/packages/bewaesserung/automations.yaml new file mode 100644 index 0000000..e0ad96d --- /dev/null +++ b/packages/bewaesserung/automations.yaml @@ -0,0 +1,88 @@ +# 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[0].precipitation | 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: + minutes: "{{ states('input_number.bewaesserung_dauer') | int }}" + 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