Im Sommer möchte jeder Gartenbesitzer gerne dafür sorgen, dass alles schön grün ist. Das betrifft nicht nur die Blumen und Pflanzen, sondern auch den Rasen. Gleichzeitig soll aber auch nicht zuviel Wasser verschwendet werden. Wie ich die Bewässerung mit Home Assistant gelöst habe, zeige ich in diesem Artikel.
Die Hardware
- eine funktionsfähige Home Assistant-Instanz
- ein Bewässerungscomputer, der mit Home Assistant gesteuert werden (bspw. der Linktap G1S oder Sonoff Bewässerungssystem mit Zigbee)
- ein Regenmesser oder Regensensor, der in Home Assistant integriert werden kann
Die Software
Nachdem die Hardware-Frage soweit geklärt ist, muss eine sinnvolle Programmierung für Home Assistant her. Ich hatte mich zuerst für die HACS-Integration Smart Irrigation entschieden. Grundsätzlich war ich damit auch einige Monate glücklich. Allerdings ist die Integration durchaus komplex und etwas fehleranfällig. Wer viele Einstellungsmöglichkeiten schätzt, wird aber sicher glücklich damit.
Es musste dann doch irgendwie was Eigenes her. Es sollte eine einfache Automation sein, die auch mit dem Wasser sparsam umgeht. Folgende Parameter sollten überwacht werden:
- Ist an dem Tag Regen über X mm vorhergesagt?
- Hat es an dem Tag schon über X mm geregnet?
- Sind an dem Tag Höchst-Temperaturen über X Grad vorhergesagt?
- War der letzte Regenguss oder Bewässerung mind. X Tage her?
Als kleines Zusatz-Feature sollte je nach Höchst-Temperatur auch die Beregnungsdauer geändert werden.
Die Vorbereitung
Zuerst benötigt man eine Wetter-Integration in Home Assistant. Standardmäßig ist die Meteorologisk Institutt (Met.no)-Integration installiert. Die Daten kommen vom norwegischen Wetterdienst und sind durchaus gut. Sollte diese Integration noch nicht vorhanden sein, einfach installieren: Unter „Einstellungen“->“Geräte & Dienste“ einfach unten rechts auf „Integration hinzufügen“ klicken und nach „Met“ suchen und installieren.
Um jetzt eine Wetter-Vorhersage für die nächsten Tage als Sensor zu erhalten, muss der folgenden Code in die configuration.yaml einfügt werden:
- trigger: - platform: time_pattern hours: /1 action: - service: weather.get_forecasts target: entity_id: - weather.DEINE_WETTER_ENTITY data: type: daily response_variable: tagesvorhersage sensor: - name: Tägliche Wettervorhersage unique_id: weather_entity_forecast state: "{{ now().isoformat() }}" icon: mdi:hours-24 attributes: forecast: "{{ tagesvorhersage['weather.DEINE_WETTER_ENTITY'].forecast }}"
Unter „weather.DEINE_WETTER_ENTITY“ sollte die entsprechende Wetter-Entität eingetragen werden – also die von der jeweiligen Wetter-Integration. Nach einem Neustart von Home Assistant ist nun der neue Sensor „Tägliche Wettervorhersage“ vorhanden.
Die Helfer
Nun legen wir uns noch die Helfer an, die in der Automation benötigt werden. Diese werden unter „Einstellungen“ -> „Geräte & Dienste“ -> „Helfer“ erstellt. Unten rechts auf „Helfer erstellen“ klicken und entsprechenden Typ auswählen.
sensor.vorhersage_regen_heute
Vorhergesagte Regenmenge des heutigen Tages
Helfer-Typ: Template (Sensor)
{{ states.sensor.tagliche_wettervorhersage.attributes.forecast[0].precipitation }}
sensor.vorhersage_temperatur_heute
Vorhergesagte Höchsttemperatur des heutigen Tages
Helfer-Typ: Template (Sensor)
{{ states.sensor.tagliche_wettervorhersage.attributes.forecast[0].temperature }}
input_number.bewasserung_dauer
Bewässerungs-Dauer
Helfer-Typ: Zahlenwert-Eingabe
input_number.bewasserung_intervall
Pause zwischen der Bewässerung (in Tagen)
Helfer-Typ: Zahlenwert-Eingabe
binary_sensor.bewasserung_regenmenge
Schwellenwert für zu wenig Regen
Helfer-Typ: Schwellenwertsensor
– „Unterer Grenzwert“ auf 3 stellen
binary_sensor.bewasserung_temperatur
Schwellenwert für optimale Temperaturen
Helfer-Typ: Schwellenwertsensor
– „Oberer Grenzwert“ auf 20 stellen
binary_sensor.bewasserung_zeit
Sensor zur Überprüfung des Intervalls
Helfer-Typ: Template
{% set last_rain_str = states('input_datetime.letzte_bewasserung') %} {% set interval_days = states('input_number.bewasserung_intervall') | int(1) %} {% if last_rain_str == 'unavailable' or last_rain_str == 'unknown' %} true # Annahme: Wenn kein Regen-Zeitstempel vorhanden, ist Bewässerung erlaubt {% else %} {% set last_rain_dt = as_datetime(last_rain_str) | as_local %} {% set now_dt = now() | as_local %} {# Der Zeitpunkt, ab dem Bewässerung erlaubt ist: Letzter Regen Zeitpunkt + angegebene Tage #} {% set irrigation_allowed_from = last_rain_dt + timedelta(days=interval_days) %} {# Prüfe, ob der aktuelle Zeitpunkt (now_dt) gleich oder nach dem erlaubten Zeitpunkt liegt #} {{ now_dt >= irrigation_allowed_from }} {% endif %}
Die Automation
Für die eigentliche Bewässerung mit Home Assistant habe ich folgende Automation verwendet:
alias: Garten - Bewässerung des Rasens description: Programmierung zur regelmäßigen Bewässerung. triggers: - at: "06:30:00" trigger: time id: start-bewaesserung alias: Starte Bewässerung - trigger: numeric_state entity_id: - sensor.regensensor_rain_today above: 2.9 id: aktualisierung alias: Letzte Bewässerung aktualisieren conditions: [] actions: - alias: Vorgang der Bewässerung if: - condition: and conditions: - condition: trigger id: - start-bewaesserung - condition: state entity_id: binary_sensor.bewasserung_regenmenge state: "on" - condition: state entity_id: binary_sensor.bewasserung_temperatur state: "on" - condition: state entity_id: binary_sensor.bewasserung_zeit state: "on" then: - action: input_datetime.set_datetime metadata: {} data: datetime: "{{ now().strftime('%Y-%m-%d %H:%M') }}" target: entity_id: input_datetime.letzte_bewasserung alias: Letzte Bewässerung aktualisieren - alias: Dauer festlegen choose: - conditions: - condition: numeric_state entity_id: sensor.vorhersage_temperatur_heute below: 25 sequence: - alias: "Dauer festlegen: 5" action: input_number.set_value metadata: {} data: value: 5 target: entity_id: input_number.bewasserung_dauer - conditions: - condition: numeric_state entity_id: sensor.vorhersage_temperatur_heute below: 28 above: 25 sequence: - alias: "Dauer festlegen: 8" action: input_number.set_value metadata: {} data: value: 8 target: entity_id: input_number.bewasserung_dauer - conditions: - condition: numeric_state entity_id: sensor.vorhersage_temperatur_heute below: 30 above: 28 sequence: - alias: "Dauer festlegen: 10" action: input_number.set_value metadata: {} data: value: 10 target: entity_id: input_number.bewasserung_dauer - conditions: - condition: numeric_state entity_id: sensor.vorhersage_temperatur_heute above: 30 sequence: - alias: "Dauer festlegen: 13" action: input_number.set_value metadata: {} data: value: 13 target: entity_id: input_number.bewasserung_dauer - metadata: {} data: {} target: entity_id: switch.water_switch alias: Bewässerung einschalten action: switch.turn_on - delay: minutes: "{{states(\"input_number.bewasserung_dauer\")}}" alias: Verzögerung mit Bewässerungsdauer - alias: Bewässerung ausschalten target: entity_id: - switch.water_switch data: {} action: switch.turn_off - metadata: {} data: title: Garten message: >- Bewässerung wurde für {{states('input_number.bewasserung_dauer')}} Minuten ausgelöst. action: persistent_notification.create - alias: Letzte Bewässerung aktualisieren if: - condition: trigger id: - aktualisierung then: - action: input_datetime.set_datetime metadata: {} data: datetime: "{{ now().strftime('%Y-%m-%d %H:%M') }}" target: entity_id: input_datetime.letzte_bewasserung - metadata: {} data: title: Garten message: >- Bewässerung wurde verschoben. action: persistent_notification.create mode: single
Wenn man nun innerhalb der Automationen von der YAML-Ansicht auf den visuellen Editor umschaltet, sieht man die fertige Automation. Nur noch die Entitäten für den Regensensor und den Bewässerungscomputer müssen angepasst werden. Ansonsten sollte alles stimmen!
Neben den notwendigen Anpassungen, kann man übrigens hier auch die Uhrzeit einstellen, an der die Bewässerung ausgelöst werden soll.
Das Dashboard
Damit man immer sehen kann, welcher Zustand die Bewässerung hat, kann man mit Hilfe der Kacheln die folgende Ansicht basteln:

In meinem Fall habe ich die Felder so programmiert, dass nur zwei wirklich bedient werden können: „Automatik“ und „Intervall“. Die untere Reihe hat jeweils ein grünes Häkchen, wenn die Vorgabe erfüllt ist. Erst wenn alle erfüllt sind, läuft die Automation durch. Die Dauer der Bewässerung wird von der Automation automatisch gesetzt.
Das wars! Habt Ihr noch Fragen oder Anregungen zu meiner Bewässerung mit Home Assistant? Hinterlasst einfach einen Kommentar. Ansonsten freue ich mich natürlich immer über jedes Feedback.
Schreibe einen Kommentar