Hier zeige ich euch wir Ihr mit einem Wemos den Wasserstand einer Zisterne überwachen könnt.
Ich habe es recht einfach gehalten, der Ultraschallsensor misst die Entfernung zur Wasseroberflache und rechnet das in ein Volumen um. Dieses kann dann über eine Intranetseite abgerufen werden. Man kann das ganze natürlich noch erweitern z.B. ab einem bestimmten Wasserstand ein Benachrichtigung via Mail zu erhalten.
So sieht das Ganze auf der Intranet Seite aus, die Bilder für die Balkenanzeige liegt auf meiner Homepage, kann man auch weglassen.
Leider habe ich vor dem Einbau keine Fotos mehr von den Bauteilen gemacht, aber ich denke das ist nicht so schwer zum nachbauen. Denn Ultraschallsensor habe ich in eine Abzweigdose aus dem Baumarkt eingebaut und mit Silikon abgedichtet. Den Wemos D1 mini habe ich in eine etwas größere Abzweigdose gepackt und das ganze mit einer 4 Adrigen Leitung verbunden. Der Wemos benötigt noch Spannung, die bei mir eh vorhanden ist durch die Wasserpume.
Die Beschaltung
Der Programmcode:
Wie Ihr den Wemos D1 mini installiert findet Ihr hier. Die Bilder für die Batterie könnt Ihr hier herunterladen.
#include <ESP8266WiFi.h> const char* ssid = "Wifi Name"; const char* password = "Password vom Wifi"; WiFiServer server(80); int trigger = 0; int echo = 2; long dauer = 0; long entfernung = 0; void setup() { Serial.begin(115200); delay(10); Serial.println(); pinMode(trigger, OUTPUT); pinMode(echo, INPUT); // Connect to WiFi network WiFi.mode(WIFI_STA); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.println(WiFi.localIP()); } void loop() { digitalWrite(trigger, LOW); delay(5); digitalWrite(trigger, HIGH); delay(10); digitalWrite(trigger, LOW); dauer = pulseIn(echo, HIGH); entfernung = (dauer / 2) / 29.1; String cmd; cmd += """; WiFiClient client = server.available(); client.println("HTTP/1.1 200 OK"); client.println(); client.println("<!DOCTYPE html>"); client.println("<html xmlns='http://www.w3.org/1999/xhtml'>"); client.println("<head>n<;meta charset='UTF-8'>"); client.println("<title>Wasserstand Regenwasserzisterne</title>"); client.println("</head>n<body>"); client.println("<H2>Wasserstand Regenwasserzisterne</H2>"); client.println("<h3>"); if (entfernung >= 200 || entfernung <= 0) { client.println("Kein Messwert"); } else { entfernung = 192 - entfernung; entfernung = entfernung * 84.7457; client.print(entfernung); client.println(" Liter"); } if (entfernung >= 0 && entfernung <= 1833) { client.print("<br><img src="); client.print(cmd); client.print("http://xxx/bat_0.jpg"); client.print(cmd); client.print(" "); client.print("width="); client.print(cmd); client.print(80); client.print(cmd); client.println("/>"); } if (entfernung >= 1833 && entfernung <= 3666) { client.print("<br><img src="); client.print(cmd); client.print("http://xxx/bat_emty.jpg"); client.print(cmd); client.print(" "); client.print("width="); client.print(cmd); client.print(80); client.print(cmd); client.println("/>"); } if (entfernung >= 3666 && entfernung <= 5500) { client.print("<br><img src="); client.print(cmd); client.print("http://xxx/bat_2.jpg"); client.print(cmd); client.print(" "); client.print("width="); client.print(cmd); client.print(80); client.print(cmd); client.println("/>"); } if (entfernung >= 5500 && entfernung <= 7332) { client.print("<br><img src="); client.print(cmd); client.print("http://xxx/bat_half.jpg"); client.print(cmd); client.print(" "); client.print("width="); client.print(cmd); client.print(80); client.print(cmd); client.println("/>"); } if (entfernung >= 7332 && entfernung <= 9165) { client.print("<br><img src="); client.print(cmd); client.print("http://xxx/bat_4.jpg"); client.print(cmd); client.print(" "); client.print("width="); client.print(cmd); client.print(80); client.print(cmd); client.println("/>"); } if (entfernung >= 9165 && entfernung <= 16000) { client.print("<br><img src="); client.print(cmd); client.print("http://xxx/bat_full.jpg"); client.print(cmd); client.print(" "); client.print("width="); client.print(cmd); client.print(80); client.print(cmd); client.println("/>"); } client.println("</h3>"); client.print("</body>n</html>"); delay(500); }
Die Berechnung des Volumen:
Die Zisterne fast 10000 Liter. Die 192 cm ist die Enfternung vom Sensor bis zum Boden der Zisterne. Jetzt brauchen wir den Multiplikator, die 100% sind bei mir bei 118 cm erreicht, also 10000/118=84,7457.
Das ist nun der Multiplikator aus der Sketch.
UPDATE:
Ich habe einen Wasserdichten Sensor gefunden und getestet. Der JSN-SR04T, dieser Funktioniert ohne Probleme und kann in den bestehenden Sketch eingebunden werden ohne was zu verändern. Ich habe auch den DYP-ME007Y ausprobiert, diesen habe ich jedoch nicht zum laufen bekommen. Ich hatte zwei Stück und beide haben nicht funktioniert.
Folgende Bauteile wurden verwendet:
1x Ultraschallsensor HC-SR04 https://ap-url.de/hcsr041x Ultraschallentfernungsmesser AJ-SR04M / JSN-SR04T Wasserdicht https://ap-url.de/jsnsr04t
1x D1 mini https://ap-url.de/d1mini
1x ca. 2m 4 Adrige Leitung http://amzn.to/2nqOzWs
1x Silikon http://amzn.to/2nHPqOn
1x Abzweigdose klein
1x Abzweigdose groß http://amzn.to/2nHWFpA
1x ein Stück Blech um den Sensor am Decker der Zisterne zu befestigen
65 Kommentare
Hallo Uwe,
ich hoffe Du bist hier noch online und schaust ab und zu mal in dieses Board.
Ich hätte auch Interesse an der Homematic-Anpassung des Programmcodes, würde das auch
gern kombinieren. Danke im Voraus, Toni
Hallo Paul,
die 74cm sind bei mir der Abstand vom Sensor bis zur Max. Füllhöhe. Sprich wenn die Zisteren voll ist misst der Sensor 74cm.
Gruß
Tobias
Hallo Marcel, ich bin gerade vor der gleichen Herausforderung wie du vor zwei Jahren, hast du inzwischen eine Lösung, die Zisterne über POE zu betreiben und Werte auszulesen? Wlan geht bei meiner Zisterne auch nicht leider.
habe das vorhandene Sketch gestrippt, sodass nur noch der nackte cm-Wert geschrieben wird. Diesen lese und schneide zurecht ich dann mit (10min getriggert)
$Url=‘http://192.168.115.121’;
$temp = Sys_GetURLContent($Url);
$sub = substr($temp,15, -7);
SetValue($valueID,$sub);
und schon steht der Wert in meiner Gebäudesteuerung. Na klar könnte ich das auch mit json machen, dann muss ich aber noch mehr auf den WeMos packen.
Inhalt und % rechne ich danach selber im PHP-Skript aus, de Arduino ist also nur Lieferant 😀
Grüsse AxelF
Hallo@all, Hallo Steffen:
es gibt auch größere OELD.
Ich beschäftige mich nun auch mit dem gleichen Thema. habe einen passenden sketch hier gefunden:
Füllstandsanzeige mit Ultraschallsensor HC-SR04 – reichelt.de Magazin. Leider mit dem wasser empfindlichen HC-SR04. Da ich den Sketch für Kleintanks (WoMo oder Boot) verwenden will habe ich nach einem passende wasserdichten Sensor gesucht. Hierbei bin ich auch auf den A022YYUW (A0221AU ist die Typenbezeichnung) gestoßen. Dieser Sensor ist nicht gegen einen HC-SR04 zutauschen, da mit UART Ausgang. Es gibt aber beim Ali einen Händler Win-Win der auch ein Modell A0221AM anbietet. der A0221AM gibt PWM Signal aus und ersetzt 1=1 den HC-SR04.
Der Sketch läuft einwandfrei. Wichtig ist bei Kleintanks <100 l das Volumen im define richtig angegeben wir und in der Berechnung für die Anzeige der Multiplikator (%) bzw. Divisor (l) 100 im Sketch gegen den Wert des Tankinhalts ersetzt wird. Persönlich habe ich die Prozentangabe rausgenommen da bei Kleintanks es wenig Sinn macht.
Ich bin noch auf der Suche nach einer Möglichkeit mittel 2 Womos D1 Mini ein Ad-hoc-Netzwerk aufzubauen, da es Situationen geben kann, dass die Leitungen vom Sensor bzw. zum OELD zulang sein werden oder aber unüberwindliche Hindernisse (Schottwand) im Weg sind. Ich hoffe auf eure Hilfe da mit fast 75 Jahren nicht mehr ganz so fit bin. Ein Netzwerk konnte ich zwar aufbauen aber nur analoge Daten übertragen.
Füllstandsanzeige mit Ultraschallsensor HC-SR04 – reichelt.de Magazin
Haben Sie sich schon mal gefragt wieviel Wasser denn noch in der Zisterne ist? Oder sollte noch Heizöl für den nächsten Winter getankt werden? Das
REICHELT.DE
Teilen