Den Wasserstand meiner Zisterne habe ich lange mit einem 8-Stufen LED überwacht. Die Einteilung in 8 Stufen ist recht grob, pro Stufe werden ca 875 Liter dargestellt.
Um hier eine genauere Messung durchführen zu können, habe ich einen Ultraschall-Sensor in die Zisterne gebaut, der mit einem Raspberry-Pi angesteuert und ausgewertet wird.
Alle 5 Minuten wird ein Ultraschallimpuls losgeschickt und wieder aufgefangen und an der Laufzeit errechnet, wie weit die Wasseroberfläche vom Sensor entfernt ist.
Die Messung schwankt mit ± 1,5 cm, ab und zu ist auch ein ganz krummer Wert dabei, daher messe ich in kurzem Abstand 10 mal und bilde dann den Mittelwert.
Die gemssenen Werte schreibe ich in eine Round-Robin-Database und erzeuge daraus Grafiken:
Verwendete Hardware:
Raspberry PI 2 mit Gehäuse, Netzteil und SD-Karte |
Ultraschallsensor | oder Ultraschallsensor wasserdicht | Kabel | Schlagschrauber |
Gehäuse für Ultraschallsensor
Werkzeug:
Lötkolben
Schraubendreher für Lüsterklemmen
Schlagschrauber
Verwendete Bookware:
In ein schwarzes Plastikgehäuse habe ich Löcher für den Ultraschallsensor gefräst, den Sensor eingepasst und daran ein übrig gebliebenes 4 x 2 Cat 7 Netzwerkkabel angelötet (Lötfett leistet hier wunderbare Dienste!)
Dieses habe ich dann mit der Makita an die Innenwand des Zisternenschachts getackert 🙂
Das Kabel wird durch das Rohr bis nach außen geführt, um dann gleich wieder im Lichtschacht zu verschwinden.
Von dort geht es weiter durch den Fensterrahmen in den Heizungskeller, wo der Raspberry sitzt und das ganze ansteuert.
Software:
Es läuft per cronjob alle 5 Minuten ein Python-Script, das 10 x die Entfernung zur Wasseroberfläche misst, den Mittelwert bildet und per ftp auf die Homepage schiebt. Dort wird sie durch ein WordPress Plugin dargestellt:
#!/usr/bin/python # coding=utf8 import time import ftplib import RPi.GPIO as GPIO #from __future__ import print_function GPIO.setmode(GPIO.BOARD) trig=11 echo=13 GPIO.setup(echo,GPIO.IN) GPIO.setup(trig,GPIO.OUT) voll=50 # 50 cm von Sensor bis Wasseroberfläche = voll leer=230 # 230 cm von Sensor bis Wasseroberfläche= leer entfernung=0 gesamt=0 liter_pro_cm=3.1415*112.5*112.5*1/1000 #pi * radius * radius * 1cm /1000 sonst milliliter print "Liter pro cm: ",liter_pro_cm for i in range(0,10): GPIO.output(trig,True) time.sleep(0.00001) GPIO.output(trig,False) while GPIO.input(echo) == 0: pass start=time.time(); while GPIO.input(echo) == 1: pass ende = time.time(); entfernung=((ende - start) * 34300) / 2 print entfernung gesamt=gesamt+entfernung time.sleep(0.75) mittelwert=gesamt/10 volumen=(leer-mittelwert)*liter_pro_cm print "Entfernung: ", mittelwert, " cm" print "Volumen: ", volumen print "- - - - - - - - - - - - - - - - - - - - - " f1=open('/home/pi/entfernung.txt','w') print >> f1, '%d' % (mittelwert) f1.close() f2=open('/home/pi/volumen.txt','w') print >> f2, '%d' %(volumen) f2.close() f1l=open('/home/pi/entfernung.txt','r') f2l=open('/home/pi/volumen.txt','r') serverftp = ftplib.FTP('ftp.server.de', 'user', 'pass') serverftp.storbinary('Stor entfernung.txt', f1l) serverftp.storbinary('Stor volumen.txt', f2l) serverftp.quit() f1l.close() f2l.close()
24 Responses to “Überwachung der Zisterne mit dem Raspberry Pi :-)”
Sorry, the comment form is closed at this time.
Klasse, du hast es umgesetzt und mich zugleich wieder angesteckt. Sehr geil. Ich hab auch noch zwei Raspberry Pi die eine Aufgabe suchen. Bisher bin ich mit der LED Anzeige Lösung auch zufrieden, man hatte aber auch nur einen Anhaltspunkt.Wenn meine Outdoor-Küche soweit fertig ist, könnte das mein nächstes Projekt werden.
Die Lösung klingt super ! Ein Detail hätte ich gern gewusst, gehst Du direkt mit dem Echo des Sensors in den Pi, oder hast Du noch einen Widerstand dazwischen ?
Hallo Marcella, das Echosignal geht via 10kOhm an den Pi. Und mit zusätzlichen 10kOhm an GND.
Sensor -- 10k -- 10k -- GND
und zwischen den 10k geht die Leitung in den Pi.
Hallo papanoni,
finde die Lösung super und möchte diese auch umsetzen allerdings stop das Script bei print >> f1, ‚%d‘ %(Mittelwert)
hättest du einen Tip für mich, muss ich evtl. noch etwas installieren .
Gruß
Stefan
Hi,
danke für das Bereitstellen des Quellcodes.
Ich erhalte leider auch die Fehlermeldung wie Stefan:
File „zisterne1.py“, line 42
print >> f1, ‚%d‘ % (mittelwert)
^
SyntaxError: invalid syntax
ich bin mit Python leider nicht vertraut, nehme aber an, dass man „>“ durch > ersetzen könnte.
zusätzlich frage ich mich, wie man am elegantesten das Diagramm erstellt und befüllt.
Kannst du dazu auch ein paar Informationen geben?
Das Code-Plugn konvertiert die „>“ in > „>“ sollte klappen
[…] Quelle: Überwachung der Zisterne mit dem Raspberry Pi […]
Hallo,
welches WordPress-Plugin wird für die Visualisierung verwendet? Und noch eine Frage: Du hättest doch auch Sensor + Pi in ein Gehäuse direkt in den Zisternenschacht hängen können – Anbindung via WLAN sollte dann funktionieren – somit wäre nur der Stromanschluss nötig.
VG,
Matthias
Schön von Dir zu hören! Das WordPress Plugin habe ich mir selber geschrieben, bei Interesse maile ich es Dir gerne! Das Klima in der Zisterne ist mir zu feucht um den Pi dauerhaft dort einzusetzen. Auch bezweifel ich dass das WLAN bis da runter reicht. Und ich nutze meinen Pi auch noch fü die Kameraüberwachung (Zoneminder), dazu muss er am bandbreiten LAN hängen.
Mein Sensor funktioniert auch nicht, der misst nur Grütze 🙁
wenn ganz krumme Werte dabei sind würde ich auf den Median statt Mittelwert setzen!
Richtig coole Sache. Danke für die Anleitung.
Ich habe nur noch nicht ganz kapiert welches Kabel an welchen PIN angeschlossen werden muss.
Wo finde ich diese Information?
Danke im voraus!!!
Hat sich erledigt. Wer lesen kann ist klar im Vorteil 🙂
hast Du eine Bezugsquelle für den Sensor?
Bin fündig geworden…. 🙂
Kann mir einer die Verdrahtung zwischen Sensor und USB Stecker schicken/erläutern? Und auf welche Leitung kommen die beiden 10k Widerstände? DANKESCHÖN!
Was willst Du denn mit USB? Der Senosr wird direkt an die PINs des Pi angeschlossen:
Toll. Und ziemlich genau das, was ich für meine zisterne suche. leider fehlt mir die Zeit zum Nachbau. Hat jemand Interesse, mir eins gegen Bezahlung zu bauen? Perfekt wäre eine all-in-one Lösung: Batterieversorgung (Platz ist ja vorhanden und ich vermute, mit ein paar Monozellen und nur 1x/Tag chronjob läuft das ziemlich ewig), WLAN Anbindung (dtarkes Netz vorhanden, da WLAN REPEATER direkt neben der Zisterne). Könnte mir gut vorstellen, dass noch mehr Leute so wie ich gerne eine Komplettlösung kaufen …
Beste Grüße
Eine kurze Frage, wie lang kann des das Kabel von Raspberry zu dem Fühler / Ultraschall maximal sein?
besten Dank
Wie lang willst du es denn? Probier es doch mal aus. Wenn die Spannung zu dolle abfällt, den Widerstand zwischen Echo und PIN 13 verkleinern.
Sehr cool. Würde die Lösung gerne adaptieren. Verrätst Du uns, wie das Kabel aus dem Rohr wieder herausgeführt wird? Stelle mir vor, dass es am Fallrohr herauskommt, um dann in den Lichtschacht geführt zu werden. Ist da ein Adapter im Siel, oder ein Loch gebort oder was? Für ein Foto wäre ich dankbar.
Außerdem interessiert mich die Frage der Langzeitstabilität des Systems. Insbesondere: wie macht sich der Sensor unter diesen Bedingungen nach sagen wir einem Jahr?
Das Negative vorweg: Das System ist zur Zeit außer Betrieb, der Sensor hat schlapp gemacht. Leider ist die Zisterne momentan randvoll, so dass ein gescheites Arbeiten darin nicht möglich ist 😀
Hier ein paar Bilder zur Kabeldurchführung zwischen Zisterne und Keller:
Bitte den Dreck und die toten Insekten nicht beachten. Aber wir sind ja unter uns 😉
Hallo,
es gibt ein Modul mit Wasserdichtem Sensor: Bei Ali nach
„K02 integrierte ultraschall bis hin modul parkplatz sensor wasserdicht ultraschall-sensormodul“ suchen.
Gruss Bernd
Hi,
wozu sind diese Zeilen da?
voll=50 # 50 cm von Sensor bis Wasseroberfläche = voll
leer=230 # 230 cm von Sensor bis Wasseroberfläche= leer
voll & leer wird im Script dann gar nicht mehr weiter verwendet?
Kann mir jemand eine fertige Variante löten und schicken? Hab noch nie gelötet…