Wasserzähler mit ESP32CAM auslesen und in Variable schreiben

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
microsuck
Beiträge: 213
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Wasserzähler mit ESP32CAM auslesen und in Variable schreiben

Beitrag von microsuck » 10.04.2021, 22:31

Hi,

ich habe ein Projekt in der aktuellen ct Make 02/21 nachgebaut.

Kosten ca. 10€ für einen ESP32CAM bei Amazon oder in China für ca. 5€ + Speicherkarte + 3D Druck.

https://www.heise.de/select/make/2021/2 ... 0897420296
https://github.com/jomjol/AI-on-the-edge-device

Installationsanleitung:
https://github.com/jomjol/AI-on-the-edg ... stallation

funktioniert sehr gut und mit dem Skript kann man den Wert auslesen und in eine Variable schreiben.

Nur die IP des ESP eintragen und eine Variable Wasserzaehler erstellen

Code: Alles auswählen

string url = "http://IP-ESP32/wasserzaehler.html";
string stdOut;
string stdErr;

system.Exec("wget --no-check-certificate --timeout=2 -q -O - '"#url#"'" , &stdOut, &stdErr);
string s;
if (stdOut.Contains ("value")) {
  foreach (s,stdOut.Split("-")) {
 	if (s.Contains("read value"))  {
    	real wert= (s.StrValueByIndex(":",1)).ToFloat();
	    dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Wasserzaehler").State (wert);
   	    break;
 	}
  }
} else {
 real wert=stdOut.ToFloat();
 dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Wasserzaehler").State (wert);
}       

Habe das Teil seit ein paar Tagen in Betrieb und seit heute das Skript installiert. Läuft stabil

kleine Stolperfalle:
Überprüft ob das WLAN Signal im Keller auch verfügbar ist. Bei mir war dies nicht der Fall. Habe mir einen RPI3 (war noch übrig aus einem anderen Projekt) als AP und RaspAP in den Heizraum gehängt und per LAN Kabel mit meinem Netzwerk verbunden. Dieser schleift die WLAN Geräte einfach nur durch. Der DHCP muss dann abgeschaltet werden sonst gib es Probleme.

Vielleicht hilft das jemanden.

Viel Spass beim nachbauen
Zuletzt geändert von microsuck am 11.04.2021, 17:34, insgesamt 1-mal geändert.

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Wasserzähler mit ESP32CAM auslesen und in Variable schreiben

Beitrag von Black » 11.04.2021, 11:16

ich würde das Script noch diesbezüglich abändern:

Code: Alles auswählen

string url = "http://IP-ESP32/wasserzaehler.html";
string stdOut;
string stdErr;

system.Exec("wget --no-check-certificate --timeout=2 -q -O - '"#url#"'" , &stdOut, &stdErr);
string s;
foreach (s,stdOut.Split("-")) {
 if (s.Contains("read value"))  {
    real wert= (s.StrValueByIndex(":",1)).ToFloat();
    dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Wasserzaehler").State (wert);
    break;
 }
}    
Grund: Sollte deine Verbindung hängen und mit Timeout abgebrochen werden, oder sonstwie einmal müll gesendet werden, so hat dein Variable "Wert" einen sinnfreien Zustand, der dann aber auf jedenfall immer in die Sysvar geschrieben würde. Die Version schreibt hier nur, wenn im Antwortstring auch wirklich das "real value" drinvorkommt.
Und ich bin ein Freund von sauberen vollqualifizierten Zugriffen, bei Systemvariablen dann entsprechend dom.GetObject (ID_SYSTEM_VARIABLES).Get ("IchBinDerNameDerSysvar")

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

microsuck
Beiträge: 213
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Re: Wasserzähler mit ESP32CAM auslesen und in Variable schreiben

Beitrag von microsuck » 11.04.2021, 11:51

Black hat geschrieben:
11.04.2021, 11:16
ich würde das Script noch diesbezüglich abändern:

Code: Alles auswählen

string url = "http://IP-ESP32/wasserzaehler.html";
string stdOut;
string stdErr;

system.Exec("wget --no-check-certificate --timeout=2 -q -O - '"#url#"'" , &stdOut, &stdErr);
string s;
foreach (s,stdOut.Split("-")) {
 if (s.Contains("read value"))  {
    real wert= (s.StrValueByIndex(":",1)).ToFloat();
    dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Wasserzaehler").State (wert);
    break;
 }
}    
Grund: Sollte deine Verbindung hängen und mit Timeout abgebrochen werden, oder sonstwie einmal müll gesendet werden, so hat dein Variable "Wert" einen sinnfreien Zustand, der dann aber auf jedenfall immer in die Sysvar geschrieben würde. Die Version schreibt hier nur, wenn im Antwortstring auch wirklich das "real value" drinvorkommt.
Und ich bin ein Freund von sauberen vollqualifizierten Zugriffen, bei Systemvariablen dann entsprechend dom.GetObject (ID_SYSTEM_VARIABLES).Get ("IchBinDerNameDerSysvar")

Black
super danke das werde ich gleich ändern.

django122
Beiträge: 16
Registriert: 18.10.2021, 14:55
System: CCU und Access Point
Wohnort: Penkow
Hat sich bedankt: 1 Mal

Re: Wasserzähler mit ESP32CAM auslesen und in Variable schreiben

Beitrag von django122 » 02.10.2022, 13:13

Hallo,
ich möchte nochmal dieses alte Teil aufgreifen. Ich habe es mal nachgebaut und habe über das Netz auch Zugriff.

Leider funktioniert das Script nicht. Es liefert immer den Wert 0.000
Es ist alles angepasst, IP stimmt, es kommt auch keine Fehlermeldung.

Kann es sein, dass die Software der Kamera verändert wurde?
Ich steh ein wenig auf dem Schlauch.

django

fraenki11
Beiträge: 1
Registriert: 10.11.2022, 18:10
System: CCU
Hat sich bedankt: 3 Mal

Re: Wasserzähler mit ESP32CAM auslesen und in Variable schreiben

Beitrag von fraenki11 » 10.11.2022, 18:22

Hallo,

habe auch das Problem. Die Url müsste jetzt m.E. allerdings "...wasserzaehler_roi.html" lauten. Funzt aber dennoch nicht. Vielleicht mag sich @microsuck nochmal dazu melden...

UPDATE: Mea culpa! Es funktioniert alles einwandfrei! Die von @microsuck benannte url ist selbstverständlich korrekt! Vielen Dank!

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“