NEWS
Wasserzähler - Selfmade
-
@pfried Ich verwende GIMP, geht aber mit jedem anderen auch.
Hatte vergessen auf die Koordinaten zu antworten: (0,0) ist oben links.
-
@mcchickents Hast Du für Blockly jetzt eine Letztversion die Du vielleicht mit mir teilen möchtest? Thx!
-
@daniel_iobroker sagte in Wasserzähler - Selfmade:
@watcherkb was musstest du denn im python Script ändern?
Das sind die letzten 3 Zeilen in der Datei:
httpd = socketserver.TCPServer(("", PORT), SimpleHTTPRequestHandler) print("Wasserzaehler is serving at port", PORT) httpd.serve_forever()
Bin nun auch endlich soweit dass ich Bilder bekomme. Bei mir wird es wohl platztechnisch sehr eng, da hab ich nur 8-9cm Platz für die Camera. Wenn alles fest installiert ist gehe ich an die Bearbeitung der Bilder.
-
wenn ich mir eure Bilder so anschaue dann glaube ich fast dass ich mit meinem Zähler Probleme haben werde. Er hat noch eine Scheibe oben drauf mit großem Abstand, daher reflektiert alles.
Der schwarze Aufkleber in der Mitte hat etwas gegen das reflektieren geholfen. Ich schau mal ob es damit klappt.
EDIT:
So sieht das Ergebnis nun aus. Hmm...ich denke ich muss die Camera besser ausrichten, damit der Schatten nicht so extrem ist. Den Weißen runden Rand außen muss ich wohl auch noch mit schwarz abkleben. Sonst fällt mir nichts mehr ein.
6NNNN.5779 6NNNN 5779
-
@jomjol Habe nun das System zwei Tage laufen lassen:
Ergibt 00400 9779
-> 9
-> 7
-> 7
-> 9
-> Abwechselnd N oder 0 (siehe Screenshot unten)
-> immer 0
-> immer 4
-> immer 0
-> immer 0Was kann ich da noch optimieren? Vielen Dank und liebe Grüße, Paul
Anbei noch ein Screenshot aus dem ioBroker
-
Noch eine Frage dazu: jetzt kommt folgender Wert:
400.5251 stimmt, aber wird nicht genommen, da 400.9779 einmal falsch erkannt wurde. Ich habe keinen Pre Valve Wert gesetzt. -
@pfried das ist wohl die neue Logik dass der Zählerstand niemals kleiner werden darf. Dadurch dass der Stand 400.9779 größer ist (auch wenn er falsch interpretiert wurde), ist jetzt dein richtiger Wert falsch (weil kleiner). Probier mal mit http://deineIP:3000/setPreValue.html?value=00400.5251 den alten richtigen Wert zu setzen.
-
@jomjol wie kann ich sicher sein dass ich die aktuellste Version von dir habe bzw. was muss ich tun um den neuen Stand zu bekommen? Achtung ich verwende nicht dein Docker-Image...
Wollte nämlich vorhin den Anfangsstand über http://192.168.1.38:3000/setPreValue.html?value=00089.8694 setzen, bekomme aber als Antwort: Die Website ist nicht erreichbar
-
@watcherkb Danke für Deine Aufklärung. Ich habe darauf nochmals in die config.ini geschaut, da kann man auch negative Werte zulassen, damit korrigiert der Wasserzähler auch nach unten, aber jetzt hupfen die Werte lustig rauf und runter .....
Eine Frage an Dich, kennst Du Dich mit dem Parser aus? Wenn ja, wie kann ich zu einer Zahl kommen? Jetzt bekomme ich mit:
[N|0-9][N|0-9][N|0-9][N|0-9][N|0-9]\D\d\d\d\d
Immer einen Wert z.b.: 00400 5515
Also ohne ein Komma dazwischen.
Liebe Grüße
Paul -
@pfried deine 5 Zahlen (m3) sehen anders aus als die von @jomjol aber ähnlich den meinen. Ich sammle schon ein Stück (0,1,2,3,4,8,9) habe ich schon. Sobald ich alle Zahlen zusammen habe, schicke ich die Grafiken jomjol und hoffe, dass dann die Erkennung besser klappt. Die analogen Zeiger werden bei mir recht gut erkannt.
-
@pfried kenne mich nicht aus, aber schau mal hier. Da wird es per Blockly umgerechnet.
https://forum.iobroker.net/topic/23577/wasserzähler-selfmade/230 -
@watcherkb Meinst Du das Programm was in dem Beitrag angeführt wird. Wenn Ja, wo setzt man das ein?
-
@Knallochse Ok, versuche die Zahlen 5, 6 und 7 zu bekommen. Wir haben in unserer Straße alle dieselben Wasserzähler.
-
@pfried das musst du im Blockly importieren (nur den Inhalt der txt).
-
@pfried, @watcherkb
Hallo Paul, hallo watcherkb,die Zeiger eurer Wasseruhr sehen anders aus, wie bei mir. Damit ist klar, dass die neuronale Bilderkennung damit erstmal nicht zurecht kommt, da sie darauf nicht trainiert ist. D.h. man muss das neuronale Netz darauf trainieren. Wenn ihr Background in Python und Keras/Tensorflow habt, dann könnt ihr das selber tun. Dazu müsst ihr pro Zeiger ca. 100 Bilder mit dem richtigen Wert labeln, möglichst gleich verteilt auf die unterschiedlichen Werte (ja es ist Arbeit!):
Die Anleitung findet ihr hier:
- https://github.com/jomjol/neural-network-analog-needle-readout
- https://github.com/jomjol/neural-network-analog-needle-readout/tree/master/Train-CNN_Analog-Needle-Readout
- https://github.com/jomjol/neural-network-analog-needle-readout/blob/master/Train-CNN_Analog-Needle-Readout/CNN_Version2.md
Ich kann euch da unterstützen und das Training in meinem System probieren, wenn ihr mir die Bilder von den Zeigern schickt.
-
@watcherkb Die aktuelle Version ist bei mir eigentlich nur im Docker mit der Version "rolling", da ich es so in meinem System direkt verwende. Den letzen veröffentlichten Code findest du aber jeweils in Github:
setPreValue ist dort eigentlich auch implementiert. Lass mal die "0" am Anfang weg (... value=89.8694).
-
@jomjol ok danke für die Aufklärung.
Ich habe mir nochmal den mster angeschaut und keine Unterschiede zu meinem Stand gefunden. Trotzdem kann ich setPreValue nicht ausführen. Gleicher Fehler.Ich habe aber alles nochmal neu ausgerichtet und eingestellt. Erkennung ist schon besser geworden. Ich beobachte weiter.
Hab ich das richtig verstanden dass ich die neuen Werte nur über den Parser-Adapter triggern kann oder habe ich irgendwas übersehen? Würde z.B. alle 5 Minuten auswerten lassen.
-
@watcherkb Kommisch mit dem setPreValue. Muss ich nochmal schauen, ob der hochgeladene Code tatsächlich der letzte Stand ist.
Ja und du hast Recht, das Timming wird über die Abfrage selbst, also z.B. Parser-Adapter getriggert.
-
@jomjol Kann man das logging gänzlich ausschalten?.... ich habe gerade eben 157000 Dateien gelöscht
Ich starte den Parser alle 15 Sekunden, hatte vor einem Monat einen Wasserrohrbruch im Haus, deshalb meine Anstrengungen bzgl Wasserzähler (da sind in 5 Minuten bereits einige tausend Liter ausgetreten) -
@pfried Ja kannst du. Du musst in Config.ini die Location für die Logfiles auskommentieren (LogImageLocation in [Imagesource], [Digital_Digit], [Analog_Counter]) mittels "#" auskommentieren.
ACHTUNG: es gab noch einen Fehler im Code, so dass er dann nicht gestartet ist. Ist im neueste Rolling und code korrigiert.