Benutze einen Zuckerwürfel als Wasser-Alarm


Letztens war mein Spülmaschine nicht ganz dicht. Die Folge: eine Pfütze in der Küche und die Sockelleisten muss ich auch neu machen :-(

Damit sowas nicht unbemerkt bleibt, muss ein Wasser-Alarm her.

Zuerst dachte ich, dass ich einfach zwei Kontakte in einigem Abstand am Boden befestige und an einen Microcontroller anschließe. Wenn dann Wasser austritt und die beiden Kontakte verbindet erkennt der Controller das und löst Alarm aus.

Da der Widerstand des Wassers aber zu hoch ist, um die entsprechenden Pegel am Microcontroller zu erzeugen, musste ich etwas anderes suchen. Bei der Recherche im Internet fand ich eine Lösung, die mit einem Zuckerwürfel einen Taster drückt. Löst sich der Würfel durch Wasser auf, wird der Taster betätigt.

Das fand ich eine gute Idee und habe mir dann folgenden Aufbau überlegt.

Ich benutze einen Sonoff TH-16 als Gehirn. An den Sensor-Anschluss schließe ich mehrere Zuckerwürfel-Taster an. Löst einer der Sensoren aus, kann ich zum einen die Spülmaschine abschalten (die wahrscheinlich Schuld ist) und zum anderen sende ich eine Nachricht an den MQTT-Server, der alles weitere veranlasst (Sirene unter dem Kopfkissen usw.).

Klar ist, dass ich das nicht mit der Original-Firmware tun möchte, sondern ich benutze wie immer Tasmota. In Tasmota kann man mitlerweile Regeln hinterlegen, die in diesem Fall das Abschalten der Spülmaschine erledigen, auch wenn der Rest der Infrastruktur nicht verfübar ist.

Als erstes wird wie üblich die Firmware geflasht. Ich habe wieder einen Arduino Nano misbraucht. Statt Widerständen für die Pegelanpassung habe ich aber einen kleine Pegelwandler verwendet. Das ist etwas einfacher beim Stecken.

Sonoff TH-16 flashen

Ich habe das aktuelle sonoff.bin von der Release-Seite verwendet. Danach habe ich die Grundkonfiguration der Firmware vorgenommen. Also Einrichtung im WLAN und Festlegen des MQTT-Servers und des Gerätes über Modules (Sonoff TH). GPIO14 muss als Switch1 festgelegt werden.

Die für dieses Projekt spezifische Konfiuration habe ich dann über die Webseite des Sonoff in der Console vorgenommen.

poweronstate 1
switchmode 1
switchtopic 0
rule1 on Switch1#State==0 do backlog power off; publish sonoff_dishwasher/stat/ALARM ON endon
rule1 1

poweronstate 1 bewirkt, dass beim Anlegen der Versorgungsspannung der Verbraucher immer eingeschaltet wird.
Durch switchmode 1 wird der Verbraucher immer so geschaltet, wie auch der Zustand des Tasters ist. Da ich einen Öffner verwende und dieser im Normalzustand vom Zuckerwürfel gedrückt wird und so der interne Pull-Up Wiederstand den Eingang auf High zieht passt das genau.
switchtopic 0 ist der Default. Das setzte ich zur Sicherheit, weil sonst die Regel nicht greift.
rule 1 ... führt zwei Befehle hintereinander aus (dafür ist backlog nötig), wenn der Taster schließt (Swtich1#State==0, bedenke die Invertierung, weil der Taster ein Öffner ist). Zum einen wird der Verbraucher ausgeschaltet (power off) und zum anderen wird eine Alarm-Nachricht an den MQTT-Server gesendet (publish sonoff_dishwasher/stat/ALARM ON)
Am Ende wird noch die Regel aktiviert (rule1 1).

Ich habe mir zwei Halter für die Zuckerwürfel gedruckt. Darin ist ein Taster (Öffner) befestigt, der vom Zuckerwürfel betätigt wird. Löst sich der Zucker auf, geht der Taster in seine Ausgangsstellung und schließt. Er zieht damit den GPIO14 auf Masse.

![FreeCAD Zeichnung des Halters](Sugar Cube Water Sensor Housing.png)

Die Sensoren werden an die 2,5mm Klinken-Buchse angeschlossen. Das folgende Bild zeigt die Steckerbelegung. Verwendet werden GND und GPIO14.

![Sonoff TH-16 Sensor Pinout](Sensor Jack.png)

Da der verwendete Taster ein Öffner ist und somit im Normalzustand offen ist, können mehrere Sensoren paralell angeschlossen werden.