NEWS
Wasserzähler - Selfmade
-
@jomjol sagte in Wasserzähler - Selfmade:
@sissiwup Hallo sissiwup,
das tut das Programm auch schon. Du kannst es in der Config.ini aktivieren, indem du die Kommentierung vor der ZeileLogImageLocation
entfernst, dann findest du die Bilder im entsprechenden log Verzeichnis:[Digital_Digit] names=ziffer1, ziffer2, ziffer3, ziffer4, ziffer5 Modelfile=./config/neuralnets/Train_CNN_Digital-Readout_Version_4.1.0.h5 LogImageLocation=./log/digital_digit #LogNames=ziffer4, ziffer5
Wenn du nur die letzten Ziffern mitloggen willst, da sich die anderen eh nicht ändern, es sei den du versorgst ein ganzes Dorf, kann du über den Parameter LogNames noch festlegen, dass nur Bilder der aufgezählten Ziffern geloggt werden. Die Namen müssen zu den Bezeichnungen deiner ROIs passen.
Ziffern, die nicht zugeordnet werden konnten ("N") finden sich in "NAN".
Gruß,
jomjolSuper, Danke. Probiere ich aus.
-
Eine Frage zur Ausgabeinternetseite vom Dockercontainer. Habe aktuell die Ausgabe:
Der Wert 106.0934 passt eigentlich. Jedoch hat der Parser Adapter Probleme den Wert zu empfangen. Wo kann die "Internetseite" im Docker Container angepasst werden, dass der Parser Adapter es leichter hat, den aktuellen Wert zu finden?
-
@ecki945 sagte in Wasserzähler - Selfmade:
Eine Frage zur Ausgabeinternetseite vom Dockercontainer. Habe aktuell die Ausgabe:
Der Wert 106.0934 passt eigentlich. Jedoch hat der Parser Adapter Probleme den Wert zu empfangen. Wo kann die "Internetseite" im Docker Container angepasst werden, dass der Parser Adapter es leichter hat, den aktuellen Wert zu finden?
Hallo,
was für einen Aufruf nutzt du?
Hast du "?usePreValue" am Ende dran?Bei mir hat der Parser-Adapter leider den ESP zum Absturz gebracht. Seit dem nutze ich das o.g. Skript. Das läuft jetzt stabil.
-
Guten Morgen
@sissiwup Ich rufe den Parser mit URL: http://192.168.178.61:3000/wasserzaehler.html auf.
-
@jomjol
Guten Morgen, ich hätte eine Frage bzgl der Auswertung: es kommt ja doch relativ oft vor, dass die Ziffer 5 wechselt. Bei meiner Wasseruhr startet der Wechsel circa 50 Liter vorher (also z.B. bei 422,9500 und die Erkennung funktioniert wieder circa 10 Liter nach dem Wechsel (also bei z.B. 423,0100). Dazwischen kommt das N bei der Auswertung der Ziffer 5 (z.B. 42N,9990). Könnte man nicht in diesem Bereich, also von xxxxx,09500 bis xxxxx,0100 dieses N automatisch mit dem "richtigen" Wert ersetzen? Also 422,9999 und dann weiter mit 423.0000 ....
Den Bereich könnte man dann vielleicht in der config.ini einstellbar machen (Liter vorher / Liter nachher) da wahrscheinlich jede Wasseruhr anders ist.
Aber vielleicht gibt es bereits einen einfacheren Weg?
Liebe Grüße
Paul -
@ecki945 sagte in Wasserzähler - Selfmade:
Guten Morgen
@sissiwup Ich rufe den Parser mit URL: http://192.168.178.61:3000/wasserzaehler.html auf.
Hallo,
Dann nutze doch
http://192.168.178.61:3000/wasserzaehler.html?usePrevalueDas ist genau dafür gemacht, das er die Ziffern korrigiert.
-
@jomjol Hi jomjol,
ich komme nochmals auf die ZaehlerstandClass.py zurück. Ich habe in der config.ini in der Sektion:stehen. Trotzdem gibt es negative Sprünge als auch Werte die > 100 Liter auseinander liegen....
Oder mache ich was mit dem Parser falsch?
RegEX = [N|0-9][N|0-9][N|0-9][N|0-9][N|0-9]\D\d\d\d\d -
@pfried Hallo pfried,
auf den ersten Blick sehe ich keinen Fehler und eigentlich dürftest du keine negativen Werte haben. Zwei Fragen dazu:- Hast du den Server nach Änderung der Config.ini neu gestartet?
- usePreValue funktioniert nur, wenn auch mindestens einmal ein vollständiger Wert (also ohne "N") gelesen wurde. Alternativ kannst du den WErt auch mit
/setPreValue?value=406.1187
setzen.
Beste Grüße, jomjol
-
@jomjol Hallo jomjol, der Server wird über den Docker restart Befehl alle zwei Stunden neu gestartet. Ich habe das auch getestet und es wird bei jeden restart auch die config.ini übernommen.
Ich hatte den usePreValue zu dem oben genannten Zeitpunkt nicht in Verwendung. Das Bild zeigt zwar die Verwendung, ist aber nicht aktuell.
Liebe Grüße
Paul -
Sooo, hab das DAU Stadium verlassen und muss nur noch etwas nachjustieren:
Meine ESP Cam zickt im WLAN rum, wenn sie sich sich mit dem Mesh Repeater verbindet, dann ist sie nicht mehr erreichbar. Und ohne das ich ihn kurz rausziehe, geht sie immer zum Repeater, obwohl der weiter weg ist als die FritzBox.
Warum werden mir eigentlich die 3 Analogen Zeiger Positionen angezeigt, obwohl in der ini
[AnalogReadOut] #If enabled analog counters will be read, if disabled only digital counters will be read. Enabled=false
gesetzt ist?
Grüße Brati
-
@Brati Hi Brati,
das ist noch ein Bug - das Feature ROI-Zeichnen habe ich implementiert, als es das Disable noch nicht gab. Korrigiere ich bei Gelegenheit - mach vielleicht in Issue in Github, dann vergesse ich es nicht. -
@pfried Hi Paul,
dann ist alles klar. Ohne "usePreValue" wird funktiniert der Consistency Check nicht, da er ja keinen Wert als Vergleich hat - momentan speichert er den Vorgängerwert nur, wenn "usePreValue" auch gesetzt ist und nur dann kann auch ein Vergleich auf Maximale Veränderung bzw. negative Werte gemacht werden.
Müsste eigentlich nicht unbedingt sein. Aber ich bin noch nicht auf die Idee gekommen, dass jemand den ConsistencyCheck ohne usePreValue macht. Macht auch nicht in jeder Situation Sinn, denn wenn du das "N" bei Ziffernswechsel ersetzt, kann auch kein Konsistenzcheck gemacht werden.
Müsste mal überlegen, wie es am sinnvollsten ist. Was wäre dein Vorschlag? Vielleicht kannst du einen Issue in Github machen, dann bleibt es im Ideenspeicher.
Beste Grüße,
jomjol -
@jomjol
Hallo,ich habe noch ein Problem festgestellt:
Durch das Restarten des Docker-Containers ist der preValue weg.
D.h. wenn @pfried alle 2h seinen Container neu startet und er in dieser Zeit ein NaN hat, nach dem Start der Wert nicht mehr korrigiert wird.Könnte das in eine Datei ins config-Verzeichnis geschrieben werden?
-
@sissiwup
Hallo,für alle die den docker häufiger restarten habe ich das Skript angepaßt.
Der letzte Wert wird als preValue gesetzt.
Gleichzeitig habe ich noch angepasst, dass nicht nur 3-stellige Wasserzähler funktionieren.createState('javascript.0.vWasserzaehler',""); schedule('*/10 * * * *', function () { var url = "http://192.168.1.13:3000/setPreValue?value="+getState('javascript.0.vWasserzaehler').val; var req = require('request'); req(url, function(error, response, body) { if (body){ log("Set OK:"+ body,"info"); } else { log("Set fehlerhaft:" +url+"->"+ body,"warn"); } }) var url = "http://192.168.1.13:3000/wasserzaehler.html?usePreValue"; var req = require('request'); req(url, function(error, response, body) { if (body){ var count=String(body.match(/^[0-9.N]+/)); log("Body OK:"+body+"->" + count,"info"); setState("javascript.0.vWasserzaehler",count); } else { log("Body fehlerhaft:" +url+"->"+ body,"warn"); } }) });
-
@sissiwup Colle Idee mit dem automatischen Setzen von preValue. Den Wert könnte man auch intern speichern. Frage ist dann nur, was mache ich, wenn der Container länger nicht lief und der Wert schon "sehr alt" ist. Man könnte noch ein Verfallsdatum hinzufügen - überlege ich mir mal.
-
-
@sissiwup Bitte um Nachsicht ich bin Anfänger: Ich habe statt dem Parser im IOBroker nun unter javascript Deinen Code reinkopiert, aber es stellt das Ding bei var req = require('request'); auf: cannot find name 'require'
Was mache ich falsch?
-
@pfried hi,
die IP von Zeile 5 stimmt erstmal nicht mit Zeile 18 überein. Xxx.xxx.x.130 & xxx.xxx.x.13 ...
So als Schnellübersicht... -
@Rababersaft Habe ich nun ausgebessert, danke für den Hinweis!
Fehlermeldung im Log: -
@pfried sagte in Wasserzähler - Selfmade:
@sissiwup Bitte um Nachsicht ich bin Anfänger: Ich habe statt dem Parser im IOBroker nun unter javascript Deinen Code reinkopiert, aber es stellt das Ding bei var req = require('request'); auf: cannot find name 'require'
Was mache ich falsch?
Hallo,
request ist schon vordefiniert. Muss nicht mehr eingebunden werden.
Und zur Fehlermeldung siehe: Forum zu FehlercreateState('javascript.0.vWasserzaehler',""); schedule('*/10 * * * *', function () { var url = "http://192.168.1.13:3000/setPreValue?value="+getState('javascript.0.vWasserzaehler').val; request(url, function(error, response, body) { if (body){ log("Set OK:"+ body,"info"); } else { log("Set fehlerhaft:" +url+"->"+ body,"warn"); } }) var url = "http://192.168.1.13:3000/wasserzaehler.html?usePreValue"; request(url, function(error, response, body) { if (body){ var count=String(body.match(/^[0-9.N]+/)); log("Body OK:"+body+"->" + count,"info"); setState("javascript.0.vWasserzaehler",count); } else { log("Body fehlerhaft:" +url+"->"+ body,"warn"); } }) });