Füllstandssensor mit ESP8266

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Antworten
magnum1795
Beiträge: 180
Registriert: 13.05.2020, 17:56
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 29 Mal
Danksagung erhalten: 14 Mal

Füllstandssensor mit ESP8266

Beitrag von magnum1795 » 01.04.2021, 13:38

Vor einiger Zeit bin ich im Internet auf ein (für mich zumindest) sehr interessantes Projekt von Chris gestoßen (http://blog.bubux.de/update-fuellstands ... /#comments) . Er hat einen Füllstandssensor mit einen ESP8266 (z.B. D1mini oder 12E etc.) sowie einen Temperatursensor DHT22 und einen Display aufgebaut. Dafür hat er eine eigene Firmware geschrieben. Ich fand das Projekt so gut, das ich Chris angeschrieben und Ihm gebeten habe ob er das Projekt eventuell etwas erweitern könnte um es eben auch mit Homematic zu verwenden. Da er keine CCU hat, habe ich für Ihn dann etwas getestet. Anfangs konnte man im JSON Feed "Nur" den Füllstand in % übertragen. Mittlerweile aber lassen sich jetzt aber auch Füllstand in %, Füllmenge in Liter, Temperatur in °C und die Luftfeuchte in % übertragen. Diese Daten kann man dann in Homematic mit einen Script auslesen lassen und in Systemvariablen schreiben. Dort kann man sie dann weiter verwenden wie man gern möchte. So lassen sie sich z.B. auch mit einer Handy App abfragen, an einen MQTT Broker senden etc. und noch viel mehr.

Da die Original Homatic Füllstands Sensoren doch recht Teuer und auch anfällig sind, ist das hier eine Preiswerte Alternative und auch für ungeübte Bastler relativ leicht aufzubauen.

Was benötigt man dazu ?
Nun als erstes natürlich einen ESP8266, wo bei man da verschiedene Typen wählen kann. z.B. D1 mini oder Node MCU12E etc. das ist jeden selbst überlassen. Dann natürlich noch einen Sensor um Entfernungen zu messen. Hier hat man nun auch wieder verschiedene Möglichkeiten. Z.B. die recht Preiswerten SR04 Ultraschallsensoren. Diese gibt es auch wieder in verschiedenen Ausführungen und Preiskategorien. Der "Öffnungswinkel beträgt meist 15 Grad. Damit lassen sich meist bis. ca. 4-5 Meter messen. Es gibt sie auch als Wassergeschützte Ausführung, dann aber mit Öffnungswinkel von ca. 75 Grad. Seit neuesten kann man aber auch sogenannte Time of Flight Sensoren wie z.B den VL53LOX verwenden. Diese haben einen sehr geringen Öffnungswinkel von unter 2 Grad, sind extrem klein und messen sehr Präzise. Nachteil ist aber, das die günstigen max. 2 Meter messen. Je nach Verwendungszweck reicht das aber in sehr vielen Fällen vollkommen aus. So kann man z.B. seine Regenwasserzisternen oder die sehr beliebten IBC Tanks oder Öltanks damit den Füllstand sehr gut überwachen. Optional kann man noch einen DHT22 Sensor mit anschließen und erhält somit noch Temperatur und Luftfeuchte Werte. Ebenfalls Optional läßt sich auch ein Display (LCD 20x4 oder LCD 16x2 oder auch ein kleines OLED Display 1306) anschließen

Um nun das ganze auch mit Homematic verwenden zu können, brauchen wir noch ein kleines Script das wir selbst in der CCU anlegen müssen. Je nach dem was man sich alles anzeigen lassen möchte, muss man nun noch Systemvariablen auf der CCU selbst anlegen. Wie das geht erspare ich mir hier zu erläutern und kann überall nachgelesen werden. Ebenso muss man sich noch ein Programm erstellen, wo dann das Script aufgerufen wird. Dies würde ich z.B. mit einen Timer verbinden und ca. alle 5 Minuten abrufen/aktualisieren lassen. Man kann aber auch viel größere Abstände wählen.

Der ESP8266 muss zuvor natürlich mit einer speziellen Firmware (diese stammt von Chris) geflasht werden. Ich nutze dazu meist ein kleines Programm und zwar den ESPEasy Flasher. Es gibt natürlich noch sehr viel mehr Programme, einfach mal etwas Googeln nach ESP flashen.Ich hänge den ESP Easyflasher unten mal mit an. Es ist sehr einfach zu bedienen und man muss nur den Seriellen Port (an dem der ESP8266 angeschlossen ist) und die Firmware (zisternen.ino.bin. Diese sollte sich im selben Verzeichniss befinden wo auch die ESPEasyflasher.exe ist) angeben. Nach ca. 2 - 5 min. ist der ESP dann geflasht. Jetzt noch die Komponenten die man möchte anschließen und schon kann man Testen. Dazu in einen Webbrowser die IP des ESP8266 eingeben und es sollte sich ein Seite öffnen wo man dann die Einstellungen etc. tätigen kann. Das meiste ist eigentlich selbsterklärend dort. Unter Sonstiges findet man die Konfiguration. Hier gibt man den verwendeteten Sensortyp an, ob man ein Display angeschlossen hat oder nicht. Ebenso ob ein DHT22 angeschlossen wurde und noch andere Einstellungen. Den Typ des zu überwachenden Gefäßes (Maße) ob man MQTT nutzen möchte oder API etc. Denke aber das ist selbsterklärend.

Kommen wir nun zu den Script, das in Homatic angelegt werden muss (wenn man Homatic verwenden möchte)
Dies sollte so aussehen und noch auf seine Bedürfnisse angepasst werden sollte.

Die IP (string url) muss man und und den prefix kann man anpassen.

Also mehrere Systemvariablen bei Homematic erstellen und als Namen dann SV_Abstand und SV_Fuellstand; SV_Temperatur sowie SV_Luftfeuchtigkeit eingeben. Nun werden die Variablen automatisch gefüllt. SV kann man anpassen nach seinen Wünschen, muss das dann aber beim anlegen der Systemvariablen beachten. Also wenn man es auf z.B. RT_ändert, muss die Variable dann eben RT_Abstand heißen. Abstand, Fuellstand, Temperatur und Luftfeuchtigkeit sollte man aber so belassen und nur bei Bedarf ändern was vor den _ steht.

Code: Alles auswählen

!V1.0 MichaelN https://homematic-forum.de/forum/viewtopic.php?f=26&t=65051&p=639981#p639981
string url = "http://192.168.0.102/json";
string prefix = "SV_";
string rueck;
string error;
object SV;

system.Exec("wget --no-check-certificate --timeout=2 -O - '"#url#"'" , &rueck, &error);
if (!rueck== "")
{
      WriteLine("HTTP-Request OK");
      rueck = rueck.Replace('{','');
      rueck = rueck.Replace('}','');
      rueck = rueck.Replace('"','');
      string Part;         

   foreach (Part, rueck.Split(",") ){
           if (Part.Contains(":"))
           {
           Part = Part.Replace(":",";");
           WriteLine (prefix # web.webGetValueFromList(Part,0) #" = "# web.webGetValueFromList(Part,1));
           SV = dom.GetObject(ID_SYSTEM_VARIABLES).Get((prefix # web.webGetValueFromList(Part,0)));
           if (SV) {
              SV.State(web.webGetValueFromList(Part,1));
              WriteLine("=== SV "#prefix # web.webGetValueFromList(Part,0)#" written ===");
              }
           }
   }
} else {
  WriteLine("Error at HTTP Request");
}


http://blog.bubux.de/update-fuellstands ... /#comments
https://www.amazon.de/AZDelivery-GY-BME ... 031&sr=8-8
https://de.aliexpress.com/item/32915100 ... lsrc=aw.ds
https://www.amazon.de/WayinTop-Display- ... 478&sr=8-1
https://www.amazon.de/AZDelivery-D1-Min ... 538&sr=8-3
https://www.amazon.de/AZDelivery-Temper ... 642&sr=8-5
https://www.amazon.de/s?k=WayinTop+20x4 ... nb_sb_noss
https://www.amazon.de/iHaosapce-Display ... 720&sr=8-9


https://github.com/Grovkillen/ESP_Easy_Flasher/releases




Anbei noch paar Bilder und wie es z.B. in einer App (in meinen Beispiel die Smartha APP PC Version, die es auch für IOS und Android gibt, aussehen könnte. Wobei die Anzeige Brunnen von einen HB UNI Sensor ist und die anderen 3 von den ESP8266. Luftfeuchte habe ich bei mir nicht angezeigt, könnte man aber auch machen. 😉



Ein großes Danke geht natürlich an 66er, Chris (ohne dessen Firmware es so nicht ohne weiteres möglich wäre) und auch an MichaelN für die Bereitstellung des Script



PS: auf den vorletzten Bild sieht man den Provisorischen Aufbau auf den Schreibtisch. Steckbrett war gerade keins vorhanden, deshalb mit Vagoklemmen. Aber zum Testen langt es zu. Das ganze kann man dann in ein Wasser Geschütztes Gehäuse, wie z.B. einer Verteilerdose aus der Elektrik recht klein aufbauen. Siehe dazu letztes Bild. In dem "Größeren Gehäuse, rechts im Bild, ist zusätlich noch ein Shelly und ein Mininetzteil 220 Volt zu 3,3 Volt mit eingebaut).Bei Verwendung eines VL53LOX braucht man dazu nur ein etwa 10mm Loch Bohren. Die ganzen Webansichten etc. kann man alle bei Chris auf seinen Blog anschauen. Links dazu siehe oben.

Sollte man einen VL53LOX verwenden, so wird dieser über I2C angeschlossen.

D1 > SCL
D2 > SDA
VCC > VCC
GND > GND
Dateianhänge
zisterne.ino.zip
(365.21 KiB) 21-mal heruntergeladen
zisterne_verdrahtung.png
Script.jpg
PXL_20210401_105709800.jpg
PXL_20210401_071103662.jpg
Programm 3.jpg
Programm 1.jpg
ansicht smartha app pc version.jpg

magnum1795
Beiträge: 180
Registriert: 13.05.2020, 17:56
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 29 Mal
Danksagung erhalten: 14 Mal

Re: Füllstandssensor mit ESP8266

Beitrag von magnum1795 » 31.12.2021, 11:59

Nach nun gut einen dreiviertel Jahr Benutzung des Sensors VL53L0X sind mir leider 2 Stück von diesen Sensoren ausgefallen durch Feuchtigkeit. Ansonsten war und bin ich immer noch zufrieden mit dem Messergebnissen etc. Das Problem ist eben, das zwar der ESP und weitere Elektronik in einen Wasserdichten Gehäuse untergebracht sind, der eigentliche VL53L0X aber direkt oben über den Wasser montiert ist (ca. max 20 cm Abstand zum möglichen Höchststand des Wassers). Und hier ist nunmal eine relative hohe Luftfeuchtigkeit, was der Sensor auf Dauer aber nicht verträgt.

Ich hatte auch mal versucht durch Glas (ca. 2 mm Stärke) zu messen, aber leider keine brauchbaren Messungen erhalten. Nun bin ich eher durch Zufall mal im Git auf etwas gestoßen, was dieses Problem beseitigen soll.

> https://github.com/pololu/vl53l1x-st-api-arduino

Zitat: Wir haben auch eine einfachere VL53L1X-Bibliothek für Arduino veröffentlicht , die einen schnelleren und einfacheren Einstieg in die Verwendung des VL53L1X mit einem Arduino-kompatiblen Controller ermöglichen soll, im Gegensatz zur Verwendung dieser API von ST. Die Bibliothek verfügt über eine optimierte Benutzeroberfläche sowie einen geringeren Speicher- und Speicherbedarf. Es implementiert jedoch derzeit einige der fortgeschritteneren Funktionen, die in der API verfügbar sind (z. B. Kalibrieren des Sensors, um gut unter einem Deckglas zu funktionieren, oder Auswählen eines kleineren Bereichs von Interesse (ROI)), und es verfügt über eine weniger robuste Fehlerprüfung .

Leider verstehe ich da aber zu wenig um das umsetzen zu können. Daher meine Frage an die Spezialisten unter Euch. Könnte man denn dieses Feature nicht mit einen VL53L1X nicht z.B. in diesen Projekt > HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor mit umsetzen? Es gibt ja bereits eins mit dem VL53L0X, aber eben ohne dieses Feature hinter Glas messen.

Man könnte dann ja diesen Sensor VL53L1X komplett in ein Wasserdichtes Gehäuse einbauen und nur eine kleine Öffnung von ca. 10mm einbringen und diese dann mit einen Glas (ca. 2mm) Wasserdicht abdecken. Somit würde man dann das Problem mit der erhöhten Luftfeuchte ja umgehen und der Sensor sollte bedeutend länger halten. Die Messhöhe bei den VL53L1X beträgt ja ca. 4 Meter und das sollte in vielen Fällen ausreichend sein.

Eventuell kann ja jp112sdl etwas dazu sagen ob das so umsetzbar wäre in seine Sketch, damit man eben auch vernünftige Werte hinter Glas messen kann. Ich bedanke mich schonmal und wünsche allen hier einen guten Start ins neue Jahr.

dondaik
Beiträge: 12383
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1084 Mal
Danksagung erhalten: 178 Mal

Re: Füllstandssensor mit ESP8266

Beitrag von dondaik » 31.12.2021, 12:56

versuche ggf. mal ein laser- entfernungsmesser - modul mit der option das es mit reflektieren, bewegten flächen ärger geben kann .... doch das kann man ja beheben.
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

magnum1795
Beiträge: 180
Registriert: 13.05.2020, 17:56
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 29 Mal
Danksagung erhalten: 14 Mal

Re: Füllstandssensor mit ESP8266

Beitrag von magnum1795 » 02.01.2022, 14:22

dondaik hat geschrieben:
31.12.2021, 12:56
versuche ggf. mal ein laser- entfernungsmesser - modul mit der option das es mit reflektieren, bewegten flächen ärger geben kann .... doch das kann man ja beheben.
allen erstmal noch ein Gesundes neues Jahr,

Nun der VL53L1X ist ja ein Lasersensor. Ich habe mir mal diese bestellt > https://www.amazon.de/gp/product/B09JYW ... UTF8&psc=1

Hier ist ja eine "Schutzkappe" mit dabei. Wenn es mir dann gelingt, diese mit in das Gehäuse Wasserdicht zu integrieren, sollte das Problem mit der Feuchtigkeit ja gelöst sein. Ob es so klappt, weiß ich nicht, werde es aber weiter beobachten und später dann nochmals Bescheid sagen wie und ob es so funktioniert. Von der Genauigkeit und den Tech. Daten mit dem VL53L1X klingt es ja mal ganz gut.

dondaik
Beiträge: 12383
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1084 Mal
Danksagung erhalten: 178 Mal

Re: Füllstandssensor mit ESP8266

Beitrag von dondaik » 02.01.2022, 14:49

ggf in einen abflußrohr mit aufgelegter holzplattte messen ?
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“