Terrassenkühlung mit Sprühnebel: Zigbee-Ventil in Home Assistant
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.

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.

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_homeliefert beide Prüfungen. Der Zustandsunnymacht es gratis tagsüber-only — nachts ist der Zustand nichtsunny, also feuert nichts, ganz ohne separate Sonnenstands-Bedingung. Das Attributtemperatureist 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_changedgebaut und wieder rausgeworfen: Home Assistant stempeltlast_changedbei 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
delayund 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_homeist praktisch, weil es mit HA mitkommt, aber ein 15-€-Zigbee-Außensensor im Schatten schlägt jede Vorhersage. Behalte diesunny-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.