Füllstandssensor (Zisterne) für HMIP selber bauen

Spätestens im Sommer bin ich immer wieder überrascht, wie schnell meine Zisterne leer ist. Dabei hat es doch vor wenigen Tagen noch geregnet. Beim Blick in die Zisterne fällt dann auf, dass die Blütenpollen oder der Saharastaub wieder den Filter zugesetzt haben, so dass ich diesen kurz reinigen muss.

Daher habe ich mich mit der Frage beschäftigt, wie ich ohne zu großen Kosten- und Installationasaufwand, den Füllstand einer Zisterne ermitteln und die Daten an eine CCU3 übermitteln kann.

Aufgabenstellung

Mir schwebt ein Sensor vor, der einfach installiert und kalibiriert werden kann. Dabei möchte ich so exakt wie möglich die Höhe des Wasserstandes in einer Zisterne ermitteln und die Daten per WLAN an eine CCU sowie einen MQTT Broker schicken. Aus den ermittelten Daten möchte ich die genaue Füllmenge in Litern sowohl als Wert als auch als Grafik anzeigen.

Lösungsfindung

Die Marktrecherche bzgl. Füllstandmesser war zwar erfolgreich, aber die angebotenen Lösungen teilweise richtig teuer. Da ich kein industrieller Anwender bin und mir ein kleines Steuergerät mit ein paar LEDs nicht ein paar Hundert Euro Wert sind (wahrscheinlich hätte ich auch gar nicht mehr durch die Tanköffnung gepasst), habe ich nach einem einfachen und robusten Sensor gesucht, der wie meine Bodenfeuchtesensoren einfach an einen D1 Mini angeschlossen werden können.

Bei der weiteren Recherche bin ich für die Nutzung mit einem D1 Mini immer wieder auf den SR04 Ultraschall Modul Entfernungsmesser gestoßen:

Der Sensor ist extrem günstig, einfach anzuschließen und soll relativ genaue Werte liefern. Allerdings hat er einen entscheidenden Nachteil: Die Platine mit dem Sensor ist nicht gegen Feuchtigkeit geschützt. Da es in einer Zisterne grundsätzlich naß ist und viel Kondenswasser durch die hohen Temperaturunterschiede zwischen außen und innen existieren ist die Wahrscheinlichkeit sehr hoch, dass die Platine nicht nur feucht sondern naß wird. Ebenso berichtete ein Nutzer im Netz, dass sich auf dem Drahtgitter des Sensors Kondenwasser absetzt, was eine Messung unmöglich machte. Den Sensor mit Heißkleber oder anderen Lacken zu schützen, halte ich für zu aufwendig und unsicher, wie auch andere Berichte aufzeigen.

Daher habe ich mich für den großen Bruder dieses Sensor den JSN-SR04T entschieden.

Der Sensor ist wasserdicht und trennt den geschützten Sensor von der Platine durch ein ca. 2 Meter langes 2-poliges Kabel. Damit kann ich diesen Sensor in einer feuchten Umgebung wie einer Zisterne installieren und die Elektronik außerhalb der Zisterne in einem Verteilergehäuse mit dem D1 Mini und dem Akku installieren. Den Sensor kann ich für die Messung mit 3 Volt versorgen.

Schaltung und Software

Für die Übermittlung von Daten an einen MQTT-Broker sowie eine CCU greife ich auf die bereits erläuterte Lösung mit einem D1 Mini sowie der Tasmota Firmware zurück: Bodenfeuchtesensor für Homematic IP bauen und nutzen (Teil 1, Grundlagen). Wichtig ist, die Tasmota_Sensors.bin zu verwenden.

Die beiden Kanäle des Sensors Sr04 Ech/RX und SR04 Tri/X werden auf zwei GPIOs des WEMOS gelegt, bei mir auf GPIO 5 (RX) und GPIO 6 (TX).

ACHTUNG: Bei meinem Sensor waren die beiden Kanäle entgegen der Beschriftung auf der Platine vertauscht.

Der Anschluss des Sensors ist widerum sehr einfach. Hierfür sind nur zwei digitale Kanäle des D1 Mini erforderlich, um die Daten zu empfangen. Ebenso versorge ich die Sensorplatine nur mit Strom, wenn der Sensor aus dem DeepSleep aufwacht. Hierzu verwende ich wieder den GPIO 8, der in Tasmota als Relay definiert wird und die Spannung bereitstellt.

In Tasmota erfolgt die Konfiguration wie folgt:

Ich lasse den Sensor ein Mal pro Stunde aufwachen (DeepSleepTime 3600) und dann folgende Programme ausführen:

Rule1 on Power1#Boot do Power ON endon  // Einschalten des Relays

Rule2 on SR04#Distance!=%Var1% do Var1 %value% endon  // Distanzwert ermitteln

Rule3 on Var1#state do WebSend [192.168.178.93:8181]/cuxd.exe?ret=dom.GetObject("SV_Zisternehoehe").State(%var1%) endon // CCU Variable anpassen, immer dann, wenn sich die Distanz geändert hat.

Die Telemetry Period (d.h. die Zeit, die der D1 Mini eingeschaltet bleibt) habe ich auf 10 Sekunden gesetzt.

Installation in der Tonne

Den Sensor habe ich in eine Feuchtraum Abzweigdose installiert, die man z.B. bei Bauhaus bekommt. Dazu habe ich ein Loch in den Deckel so gebohrt, dass der Sensor mit dem Außenring auf dem Gehäuse bündig sitzt.

Die Abzweigdose wurde dann von mir mit einem Verstellwinkel am oberen Tonnenrand befestigt, so dass der Sensor einen freien "Blick" auf das Wasser hat.

Die Installation des D1 Mini sowie der Sensorplatine mit dem Akku erfolgt in einer IP66 Abzweigdose. Hier habe ich bei Hornbach ein tolles Modell gefunden, welches auch für andere Sensoranwwendungen draußen genügend Platz bietet und schraubenlos verschlossen werden kann (hier ist der Link).

Für die Übermittlung von Daten an einen MQTT-Broker sowie eine CCU greife ich auf die bereits erläuterte Lösung mit einem D1 Mini sowie der Tasmota Firmware zurück, die ich im folgenden Artikel erläutert habe: Bodenfeuchtesensor für Homematic IP bauen und nutzen (Teil 1, Grundlagen).

Datenaufbereitung und -anzeige

Die erhaltenen Höhenwerte geben nun den Abstand vom Sensor zur Wasseroberfläche an. Tatsächlich benötige ich aber die Wasserhöhe, die ich dann auch in Liter umrechnen möchte.

Mihilfe der Tonnengeometrie (Durchmesser), maximaler Höhe bis zum Sensor, sowie der maximalen Füllmenge der Zisterne (z.B. 5000 Liter) lässt sich nun sehr einfach berechnen, wieviel Liter pro Zentimeter in eine Zisterne passen. Bei mir liegt dieser Wert bei ca. 32 Litern.

Hieraus kann nun durch folgende Formel die Literanzahl ermittelt werden:

("Höhe bis zum Sensor"-"Sensorwert")*"Liter pro Zentimeter"=Füllmenge in Litern

Ich habe diese Werte über den Mediola Automation Manager berechnet und lasse die Daten anschließend auch im AIO Creator NEO anzeigen:

Darüber hinaus protokolliere ich alle Höhen des Sensors über Grafana, so dass mit der Kombination der Regenmenge eine nette grafische Darstellung des Wasserzuflusses erhalte.

Bei den Auswertungen sind mir dann die Ausreißer des Sensors aufgefallen. Dabei hat sich herausgestellt, dass sich gerade bei großen Temperaturschwankungen außen immer wieder Kondenswasser in der Zisterne am Sensor bildet. Sobald ich diese Tropfen abwische, ist der Sensorwert anschließend wieder normal. Dennoch gibt es trotz dieses Effektes teilweise noch falsche Messungen zwischendurch. Hier werde ich noch versuchen, über ein am Sensor zu montierendes HT-Rohr, die Ultraschallmessung etwas zu verbessern. Insgesamt reichen die Ergebnisse aber für eine Nutzung vollkommen aus.

Nützliche Links

Bei der Lösungsfindung haben mir folgende Links geholfen:

https://www.automation24.de/fuellstandmesstechnik-grundlagen?utm_source=newsletter&utm_medium=E-Mail&utm_campaign=2021-9-13-fuellstandmesstechnik