home-assistantzigbeesonoffgardensummer

Terrassenkühlung mit Sprühnebel: Zigbee-Ventil in Home Assistant

/Veröffentlicht am/Aktualisiert am

Unsere Terrasse zeigt nach Südosten und hat ab dem Vormittag volle Sonne, und diesen Sommer wurde sie zur Bratpfanne. Die Lösung war keine Markise und kein Ventilator — sondern eine Sprühnebel-Leitung: eine Reihe feiner Düsen, die einen so leichten Nebel erzeugen, dass man nie nass wird, aber die Verdunstung zieht echte Wärme aus der Luft. An einem 30-°C-Nachmittag nimmt das mehrere Grad raus, genau dort, wo man sitzt.

Die Düsen sind der langweilige Teil. Spannend ist der Wasserhahn. Ich wollte kein System, das nur läuft, wenn ich daran denke, ein Ventil aufzudrehen — oder, schlimmer, eines, das ich zuzudrehen vergesse und das dann drei Stunden auf die Terrasse tropft. Ich kenne mich. Also läuft das Wasser durch ein Zigbee-Ventil, gesteuert von Home Assistant, und zwei kleine Automationen übernehmen das Denken: eine entscheidet, wann genebelt wird, die andere sorgt dafür, dass es niemals zu lange offen bleiben kann.

Sprühnebeldüse an einer schwarzen Leitung über der Terrasse, feiner Nebel tritt aus
Eine der Düsen im Betrieb. Der Nebel ist so fein, dass er verdunstet, bevor er den Boden erreicht — das ist der ganze Trick.

Die Hardware: ein Batterie-Zigbee-Ventil, kein Netz-Ventil

Das Ventil ist ein SONOFF SWV-ZNE Hydro ONE Lite Zigbee-Wasserventil*. Ein paar Dinge haben es für eine Terrassen-Nebelleitung zur richtigen Wahl gemacht:

  • Es läuft mit Batterien (4× AA). Keine Steckdose, kein Kabel zu einem nassen Außenhahn. Es sitzt am Gartenhahn, wo Netzstrom nie eine Option war.
  • Messing-Anschluss, Standard-Gartengewinde. Es wird auf den Hahn geschraubt, der Nebelschlauch wird darauf geschraubt. Keine Installation.
  • Es ist ein Ventil, kein „smarter Stecker für eine Pumpe”. Es öffnet und schließt die Wasserleitung direkt.
  • Es braucht einen Zigbee-Hub — es funkt nicht über WLAN und es braucht keine Hersteller-Cloud. Kein Konto, keine App, kein Wochenkontingent — ein Ventil, das einfach antwortet, wenn HA fragt. Genau das ist mir wichtig: der ganze Sinn dieser Seite ist, dass der Aufbau in einem Jahr noch funktioniert, und ein Gerät, das in meinem eigenen Zigbee-Mesh antwortet, tut das.

Eine ehrliche Einschränkung vorweg: die Lite hat keinen Durchflussmesser. Sie kann melden, dass das Ventil offen ist; sie kann nicht sagen, wie viele Liter durchgelaufen sind. Für Kühlnebel ist das egal — mich interessiert Zeit, nicht Menge — aber wer Wasserverbrauchs-Statistiken will, greift zum falschen Modell.

In Home Assistant taucht es, einmal am Zigbee-Koordinator angelernt, als schlichte Switch-Entität auf. Meine heißt switch.garden_sonoff_water_valve. Dieser Name ist alles, was die Nebel-Logik braucht — alles Folgende schaltet nur diesen Switch an und aus.

SONOFF Zigbee-Wasserventil, angeschraubt unter einem Gardena-Verteiler
Das SONOFF-Ventil hängt unter dem Gardena-Verteiler am Wasserhahn. Batteriebetrieben, kein Kabel, kein Flowmeter.

Die Idee: kurze Stöße im Taktzyklus, kein Gartenschlauch

Der Fehler wäre, das Ventil aufzumachen und offen zu lassen. Man würde die Terrasse durchweichen, Wasser verschwenden, und die Kühlung wird dadurch nicht besser — ab einem gewissen Punkt ist die Luft so feucht, wie sie wird, und der Rest läuft nur von den Möbeln ab.

Was funktioniert, ist ein Taktzyklus: ein kurzer Stoß, eine Pause, wieder ein kurzer Stoß. Der Nebel bleibt in der Luft, verdunstet, kühlt, und die Pause lässt ihn abziehen, bevor der nächste kommt. Mein Ausgangspunkt ist 2 Minuten an, alle 10 Minuten — und nur, solange es wirklich heiß und sonnig ist.

Automation 1: nebeln, wenn es sonnig und über 28 °C ist

Das ist die gesamte Kühl-Logik. Sie läuft auf einem Zeitmuster, prüft das Wetter und pulst das Ventil:

alias: "Atomizer misting - sunny and above 28C"
description: >-
  Garden atomizer cooling. Every 10 minutes, if the weather is sunny and
  outdoor temperature is above 28C, run the SONOFF Zigbee water valve for
  2 minutes then close it. Duty cycle (2 min on / 10 min interval) is a
  starting point - adjust the delay and the time_pattern to suit the misting
  nozzles. Only fires while 'sunny', so it is inherently daytime-only.
triggers:
  - trigger: time_pattern
    minutes: "/10"
conditions:
  - condition: state
    entity_id: weather.forecast_home
    state: "sunny"
  - condition: numeric_state
    entity_id: weather.forecast_home
    attribute: temperature
    above: 28
actions:
  - action: switch.turn_on
    target:
      entity_id: switch.garden_sonoff_water_valve
  - delay:
      minutes: 2
  - action: switch.turn_off
    target:
      entity_id: switch.garden_sonoff_water_valve
mode: single

Ein paar bewusste Entscheidungen darin:

  • Der Trigger ist die Zeit, das Wetter ist eine Bedingung. Die Automation wacht alle 10 Minuten auf, egal was ist, und fragt dann: „ist es sonnig und über 28 °C?” — genebelt wird nur, wenn beides stimmt. Das ist sauberer, als auf das Überschreiten einer Temperaturschwelle zu triggern.
  • weather.forecast_home liefert beide Prüfungen. Der Zustand sunny macht es gratis tagsüber-only — nachts ist der Zustand nicht sunny, also feuert nichts, ganz ohne separate Sonnenstands-Bedingung. Das Attribut temperature ist der aktuelle Außenwert. Wer einen echten Außentemperatur-Sensor hat, richtet die numerische Bedingung besser darauf — das ist genauer als eine Vorhersage.
  • mode: single. Falls ein Durchlauf beim nächsten Tick noch läuft, wird kein zweiter obendrauf gestapelt.

Das war’s. Man sitzt auf der Terrasse, und alle zehn Minuten gibt es zwei Minuten geflüsterten Nebel, solange die Sonne scheint.

Automation 2: die Absicherung gegen Überschwemmung

Das ist der Teil, der mir wichtiger ist als die Kühlung selbst. Ein Ventil an einer Wasserleitung ist eine kleine Gefahr: bleibt es je offen, piept es nicht und warnt nicht — es läuft einfach weiter, geduldig, bis jemand nachschaut. HA kann mitten im Zyklus neu starten (direkt nach dem turn_on, vor dem turn_off), jemand kann den Switch in der App von Hand umlegen, oder eine spätere Änderung an Automation 1 lässt einen Pfad offen, auf dem das Schließen nie feuert.

Also gibt es eine zweite, unabhängige Automation, deren einzige Aufgabe ist: ist das Ventil 5 Minuten am Stück offen, zwangsweise zumachen.

alias: "Atomizer failsafe - close water valve if open too long"
description: >-
  Safety net for the garden atomizer. The misting automation opens the valve
  for 2 minutes at a time, so the valve should never be open for 5 minutes
  straight. If it is (HA restarted mid-cycle, manual toggle, stuck
  automation), force it closed to prevent flooding and water waste.
triggers:
  - trigger: state
    entity_id: switch.garden_sonoff_water_valve
    to: "on"
    for:
      minutes: 5
actions:
  - action: switch.turn_off
    target:
      entity_id: switch.garden_sonoff_water_valve
mode: single

Die Logik ist bewusst dumm, und das ist der Punkt. Sie weiß nichts vom Wetter, vom Taktzyklus oder warum das Ventil offen ist. Sie kennt eine Tatsache — der normale Stoß dauert 2 Minuten, also ist alles über 5 Minuten falsch — und handelt danach. Weil sie auf den Zustand des Switches selbst triggert, fängt sie alle Ursachen auf einmal ab: Absturz, manuelles Umlegen, fehlerhafte Änderung. Es ist die billigste Versicherung, die du je schreibst.

Ein Wort zu unbeaufsichtigtem Wasser. Jede Automation, die ein Wasserventil öffnet, sollte so einen harten Stopp haben. Eine Nebelleitung ist Niederdruck und Kleinmenge, der schlimmste Fall ist also eine nasse Terrasse und eine Wasserrechnung — aber dasselbe Muster an einem größeren Ventil ist der Unterschied zwischen „ups” und einem überschwemmten Raum. Bau zuerst die Absicherung, dann den spaßigen Teil.

Automation 3: stehendes Wasser im Schlauch

Das hat mir erst nach ein paar Wochen jemand gesagt, und es ist der Punkt, den ich am ehesten übersehen hätte: Die Nebelleitung ist ein dünner, schwarzer Schlauch, der den ganzen Tag in der Sonne liegt. An einem kühlen Tag öffnet die erste Automation nie — und dann steht lauwarmes Wasser tagelang in einer warmen Leitung. Das ist genau das Milieu, in dem sich Legionellen und Biofilm wohlfühlen. Beim Nebeln atmest du das Zeug als Aerosol ein. Nicht dramatisieren, aber auch nicht ignorieren.

Meine Lösung ist bewusst simpel: jede Nacht um 23:00 zwei Minuten spülen, egal ob es tagsüber genebelt hat oder nicht.

alias: "Atomizer hygiene flush - nightly"
triggers:
  - trigger: time
    at: "23:00:00"
actions:
  - if:
      - condition: state
        entity_id: switch.garden_sonoff_water_valve
        state: "unavailable"
    then:
      - action: notify.send_message
        target:
          entity_id: notify.renes_iphone_2
        data:
          title: "💧 Atomizer flush skipped"
          message: "The garden water valve is unavailable, so the nightly hygiene flush could not run."
      - stop: "valve unavailable, notified"
  - action: switch.turn_on
    target:
      entity_id: switch.garden_sonoff_water_valve
  - delay:
      minutes: 2
  - action: switch.turn_off
    target:
      entity_id: switch.garden_sonoff_water_valve
mode: single

Zwei Entscheidungen, die ich erklären möchte:

  • Keine „nur wenn heute nicht genebelt wurde”-Bedingung. Ich hatte das zuerst über last_changed gebaut und wieder rausgeworfen: Home Assistant stempelt last_changed bei jedem Neustart neu, also hätte die Prüfung Spülungen still ausgelassen. Zwei Minuten Wasser zu viel sind der billigere Fehler.
  • Der unavailable-Zweig schickt eine Push-Nachricht. Wenn das Zigbee-Ventil gerade nicht erreichbar ist, ist das genau die Nacht, in der das Wasser stehen bleibt — das will ich wissen, nicht erst im Log finden.

Ehrliche Grenze: Das ist eine Spülung, keine Entleerung. Die Leitung bleibt danach voll, nur mit frischem Wasser. Wirklich entleeren heißt Hahn zu, Ende öffnen, per Hand. Und für den Winter schaltest du die Automation ab, sonst öffnet sie jede Nacht ein trockenes Ventil.

Was ich anpassen würde, bevor du es kopierst

Die zwei Automationen sind solide, aber die Zahlen sind spezifisch für meine Terrasse und meine Düsen. Bevor du dich einrichtest:

  • Stoßlänge und Intervall. 2-an / 10-aus ist konservativ. Feine Düsen in trockener Hitze vertragen kürzere, häufigere Stöße; gröbere brauchen längere Pausen, sonst tropfen sie. Beobachte die Terrasse einen Nachmittag und passe den delay und das /10-Zeitmuster an.
  • Die Temperaturschwelle. 28 °C ist der Punkt, ab dem ich es will. Feuchte Klimata kühlen durch Verdunstung schlechter, da darf die Schwelle höher; sehr trockene Klimata dürfen tiefer.
  • Ersetze die Vorhersage durch einen echten Sensor. weather.forecast_home ist praktisch, weil es mit HA mitkommt, aber ein 15-€-Zigbee-Außensensor im Schatten schlägt jede Vorhersage. Behalte die sunny-Bedingung als Tag-Gate, verschiebe die numerische Prüfung auf deinen Sensor.
  • Winterfest machen. Ein Batterie-Ventil an einem Außenhahn mag keinen Frost. Am Saisonende: Automation 1 deaktivieren, Leitung schließen und entleeren, Ventil reinholen. Die Absicherung darf scharf bleiben — sie schadet nicht.

Wo ich gelandet bin

Die Düsen haben weniger gekostet als eine Runde Getränke. Was sie zu einem echten Gerät gemacht hat — eines, das die Terrasse an heißen Nachmittagen von selbst kühlt und den Rest der Zeit fest geschlossen bleibt — ist ein Batterie-Zigbee-Ventil* und rund vierzig Zeilen YAML. Eine Automation, um es laufen zu lassen, eine, damit es nie durchgehen kann. Diese zweite ist der Grund, warum ich das Haus verlassen kann, ohne mich zu fragen, ob ich das Wasser angelassen habe.

Ich bin René, CTO aus Pasching bei Linz. Wenn dein Problem größer ist als ein Rollladen — Streaming, Cloud, lokale LLMs, Technikführung — dann steht hier, was ich beruflich mache.