NEWS
Wasserzähler - Selfmade
-
@coyote @watcherkb ja korrekt, ist ein micro usb Breakout-Board:
Welches genau, kann ich euch nicht mehr sagen. Im Zweifelsfall müsst ihr die Löcher auf dem Inlay etwas anpassen. Dient nur der Stromversorgung. Zur Programmierung baue ich das Teil dann jeweils aus.
-
@mcchickents
Am besten du nimmst den Parser Adapter. Da ist bereits alles drin.
Einstellungen siehst du im Bild.
Als RegEX nimmst du folgendes: "[N|0-9][N|0-9][N0-9][N|0-9][N|0-9]\D\d\d\d\d"
Den Inhalt der Anführungszeichen nehmen ohne jene welche.
Dann hast du den Wert deines Zählers in den Objekten unter Parser und kannst ihn weiterverarbeiten, Loggen oder was auch immer -
Um das Thema mit dem "N" in den Griff zu bekommen, habe ich einen Algorithmus implementiert, der nun auch den letzten Wert mit berücksichtigt. Wenn die Ziffern auf einem Zwischenwert stehen, also "N" zurück liefern, dann wird kann der Algo prüfen, ob die Ziffer mit "N" vorher schonmal erkannt wurde und das N durch die gültige Ziffer ersetzten. Es werden auch Zehnerübergänge berücksichtigt. Also z.B.:
letzer gültiger Wert: 401.995
Rückgabe-Wert: 40N.015Dann wir daraus: 402.015
Um das Feature zu nutzen muss bei der Abfrage des Wasserzaehler ein Parameter ergänzt werden:
.../wasserzaehler.html?usePreValue
Wenn Docker gerade neu gestaret wurde und noch keine Zahl ganz ohne "N" detektiert wurde, funktioniert es natürlich nicht. Dazu gibt es aber die Möglichkeit einen gültigen Zählerwert manuell zu setzen:
.../setPreValue.html?value=402.015
Das experimentelle Docker Image (jomjol/wasserzaehler:rolling) enthält dieses Feature.
Gruß,
jomjol -
Hi jomjol,
hab die letzten Tage mal etwas anderes wie Wasserzähler gemacht.
Heute habe ich dein neuste update getestet.Wenn ich den Wert Setzte erhalte ich folgende Antwort.
Last value set to: 00302.0398Wenn ich jetzt den Parser wieder arbeiten lasse will das N in der 30N leider nicht verschwinden.
Anbei meine Praser Einstellungen. Config ini ist die alte.Noch eine kurze Frage zu deinem "N Algo" kann der Algorithmus auch erkennen wenn die Zeiger Falsch detektiert worden sind. Ein Beispiel
Scan 1 302.0008
Scan 2 302.0009 richtig
Scan 3 302.0007 falschSozusagen wenn die Zahl kleiner wird das dann dein Algo den Scann korrigiert?#
Gruß Julian
Ps. Echt geile arbeit von dir.
-
Ich werde hier evtl diese Woche auch mal weiter machen. Musste die unterste Halterung etwas umkonstruieren, damit sie auf meine Uhr passt.
Ist aber jetzt alles erledigt, alle Teile sind gedruckt und das letzte Update installiert.
Jetzt muss ich nur mal noch Zeit finden um das Teil auf die Uhr zu bauen und einzurichten.
Hoffe das funktioniert überhaupt mit meiner Uhr... -
Bin mir immer noch unschlüssig ob ich diese Lösung favorisieren soll oder doch die von Stall.biz
Vorteil von @jomjol 's Variante mit dem ESP: es ist sehr günstig. Nachteil: falls die Stadtwerke vorbeikommt um den Zählerstand abzufragen, muss ich alles demontieren, mit der Folge, anschließend alles neu justieren zu müssen (oder?)
Vorteil Stall.biz: Zählerstand ist immer sichtbar. Nachteil: teurer, und muss immer abgedunkelt sein.
Wie sind eure Erfahrungen bisher?
-
@mcchickents Hi Julian,
zu 1) komisch, dass dein Parser immer noch das "N" anzeigt, den eigentlich sollte der Wasserzaehler kein N mehr liefern. Hast du ihn im Browser mal direkt abgefragt und geschaut, was er liefert?
Du musst natürlich "setPreValue" jedesmal aufrufen, wenn du den Docker neu startest, da der Wert nur in einer Variable ist und bei Neustart leer ist. Alternativ kannst du ihn auch so starten und warten, bis er mal alle Ziffern erkannt hat.zu 2) falsche Werte (z.B. Zählerstand kleiner, wie vorher) erkennt der Algo noch nicht. Momentan mache ich das beim Übertrag in die DB in einem anderen Script. Aber gute Idee, könnte man auch dort als Plauscheck implementieren.
Gruß,
jomjolP.S.: was wäre im Fall eines inkonsiten Auslesewertes die "vernünftige" Rückgabe: 1) Fehlermeldung (z.B.
inconsistent value
) oder 2) lieber den alten Wert, damit die DB-Abfrage kein Fehlerhandling braucht? -
@watcherkb Meine Rückmeldung insbesondere zu "Demontage":
Die Halterung ist einfach nur auf die Wasseruhr aufgesteckt und kann bei mir ohne jedes Werkzeug jederzeit abgenommen werden - geht natürlich nur bei ebener Wasseruhr.Eine extra Justage ist nicht notwendig. Das Aufsetzen mit Augenmass reicht völlig aus, da die Bildverarbeitung kleinere Winkelfehler durch Verdrehen durch das Ausrichten des Bilders anhand der Referenzmarken vollautomatisch korrigiert.
Eine Idee, um den Zähler zu auch immer sichtbar zu haben, wäre ein Fenster/Aussparung in der Halterung - Platz wäre genug. Müsste man einfach mal ausprobieren, ob es die Beleuchtung zu sehr stört.
Meine Meinung ist natürlich etwas gefärbt
-
@jomjol habe gerade noch einen Fehler im Algo für den PreValue gefunden (Typumwandlung, falls 0-Übergang). Erklärt zwar deinen Fehler nicht - dennoch neue Version für den Docker hochgeladen.
-
Werde ich heute Abend ausprobieren.
Kannst du mir noch Verraten wie du die Daten im Iobroker weiter verarbeitest? Schön wäre ja. Einzelne DB mit den Werten. Ich probiere heute Abend mal das in Blockly zu realisieren.
Wasserverbrauch_aktuell (letzte 5min)
Wasserverbrauch_letzte Stunde
Wasserverbrauch_heute
Wasserverbrauch_gestern
Wasserverbrauch_Woche
Wasserverbrauch_letzte Woche
Wasserverbrauch_Monat
Wasserverbrauch_letzter Monat
Wasserverbrauch_Jahr
Wasserverbrauch_gesamt -
@jomjol bräuchte jetzt leider auch noch etwas Hilfe.
Irgendwas stimmt mit dem Bild noch nicht, so brauche ich gar nicht weiter einzurichten.
Schau mal bitte, das ROI Bild ist komplett verzerrt, aber das SourceImage ist doch eigentlich ok oder nicht? Auflösung 800x600, die config habe ich schon etwas angepasst, habe mir 3 Punkte ausgeschnitten und eingetragen. Punkte sind: m³, PN16 und 30°C -
Hi das hatte ich auch schon. Start mal den Docker Container neu.
-
@mcchickents das hab ich gestern leider schon mehrmals gemacht. Kann es vllt auch am Winkel liegen? Dass wollte ich nachher mal probieren, da einen anderen Winkel in der Config anzugeben
-
Ok nimm mal die 0,001 als Referenz dann wird das Dreieck größer.
-
Hab ich gemacht und jetzt nen Winkel von 182 angegeben. Dann kommt folgendes raus.
Aber wenn ich jetzt mit dem Winkel weiter spiele in Plus oder Minus Richtung wird es eher wieder schlechter.... Sonst noch ne Idee? Die Digitalen und Analogen Werte habe ich noch nicht verändert, sind ja vorerst auch nicht wichtig oder doch? Erst muss ja mal mein Referenzbild passen.
Irgendwie fehlt mir hier noch etwas das Verständnis. Das SourceImage ist doch einwandfrei , wieso ist es dann beim ROI Picture so verdreht? Dachte ich müsste mit dem Winkel nachher nur noch etwas nach rechts oder links drehen um die exakte Position einzustellen.
-
Mir ist gerade noch was aufgefallen... Mein Bild ist quasi 600x800 nicht wie bei euch 800x600
-
Ich bin leider auch kein Profi wie du vielleicht gemerkt hast poste doch mal deine config Datei.
Ps ich habe den Winkel schon immer auf 0
-
@mcchickents ich denke es liegt vllt doch an der Auflösung, die falsch herum ist. Probiere ich nachher mal. Habe die Kamera jetzt gedreht
-
@coyote Hallo coyote,
irgendetwas stimmt mit deinen Referenzen noch nicht. Wenn ich mir dein Orginalbild anschaue, dann liegt "PN16" links und "m3" rechts von den 5 Ziffern. Dann müssten auch dort zwei rote Kästchen sein. Die sind aber alle unterhalb. Schau mal, ob die wirklich passen.
Das verdrehte Bild kommt daher, dass die Koordinaten der Referenzen nicht passen. Dann wird es stark verzerrt.
Der Ablauf der Bildverarbeit läuft wie folgt.- Aufnehmen des Rohbildes
- Drehen um einen festen Winkel (initial_rotation_angle), um ein aufrechtes Bild zu erhalten. Falls das Bild schon richtig ist, dann den Winkel 0 angeben.
- Suchen der 3 Referenzen. Diese sollten möglichst in einem Dreieck sein und nicht zu nahe beieinander.
Das Bild wird dann gedreht und ggf. verzehrt, so dass die Referenzen an den Koordinaten liegen, wie sie im Config-File angegeben wurden. - Rausschneiden der ROIs und auslesen
Dein Orginalbild sieht erstmal ganz gut aus. Ich sehe deutliche Schatten. Wie weit bist du mit der Kamera weg?
Bei deinem Zähler könnte die Form der Zeiger ein Problem werden. Die sehen anders aus, wie bei meinem Zähler und vielleicht funktioniert die Bilderkennung nicht optimal. Ggf. müsste man mit Bilder das Neuronale Netz nochmal nachtrainieren. Ist aber erstmal unabhängig vom Ausrichten des Bildes.
Hier nochmal eine Step-By-Step Anleitung für die Einrichtung der Config.ini.
Alignment_procedure_draft.pdfIch versuche gerade mittels Bildverarbeitung die Positionen für die Konfiguratin automatisch zu finden, dass ist aber echt tricky und braucht sicher noch einige Zeit.
Falls alle Stricke reissen, kannst du mir mal ein Originalbild von deiner Kamera schicken und ich finde etwas Zeit, um dich bei der Config zu unterstützen. Frühestens aber am Wochenende.
Beste Grüße,
jomjol -
@jomjol und zack, sieht das Ganze gleich viel besser aus
Hab ja jetzt die Kamera gedreht, damit die Auflösung 800x600 passt, alle Referenzen nochmal angepasst und siehe da, klappt.
Jetzt muss ich noch den Rest eingestellt bekommen.Ich habe dein Gehäuse ausgedruckt, außer den unteren Teil, den musste ich etwas abändern, heißt ich bin ca. 10mm weiter weg vom Zähler.
Ja den Schatten seh ich auch, der ist jetzt nach rechts gewandert durch das Drehen der Kamera. Der blöde weisse Kunststoffring macht das Ganze nicht besser.