Wasserstand einer Zisterne mit einem Wemos D1 mini überwachen.
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.
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.
Weitere Beträge zum Thema Füllstand:

Zisterne 4.0 + Nextion Display ohne Internet / WLAN Router (UPD)
In diesem Beitrag geht es um einen Füllstandsanzeige für eine Zisterne, Brunnen oder einen Wassertank. Sicher gibt es noch viele weitere Anwendungsgebiete. Das besondere an

Zisterne 3.0 Web Server + SPIFFS
In meinem ersten Beitrag für die Zisterne (Wasserstandsmessung), verwende ich Batterie Bilder für den Füllstand der Zisterne. Hier werde ich immer wieder gefragt wie die

Zisterne Füllstandsanzeige 2.0 mit Wemos Lolin32 + MySQL Datenbank
Wasserstand einer Zisterne mit einem Wemos Lolin32 überwachen und Daten in einer MySQL Datenbank speicher. Es handelt sich hier um eine Abänderung von meiner 1.
D1 mini V3.0 ESP8266
6,29 €
Umsatzsteuerbefreit gemäß UStG §19zzgl. VersandLieferzeit: ca. 1-3 WerktageIn den WarenkorbUltraschallentfernungsmesser AJ-SR04M / JSN-SR04T Wasserdicht
10,99 €
Umsatzsteuerbefreit gemäß UStG §19zzgl. VersandLieferzeit: ca. 1-3 WerktageIn den WarenkorbUltraschallsensor HC-SR04
2,99 €
Umsatzsteuerbefreit gemäß UStG §19zzgl. VersandLieferzeit: ca. 1-3 WerktageIn den Warenkorb
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