NEWS
Wasserzähler - Version 2 - all-in-device
-
@jomjol said in Wasserzähler - Version 2 - all-in-device:
Hallo zusammen,
die Software hat genau den von euch beschriebenen Algorithmus:wenn ein "N" erkannt wird, dann wird es mit dem letzten Wert (aus Previous Value) ersetzt.
Ich habe ja einen ähnlichen Zähler wie @rene_hm: Die einzelnen Liter sind die letzte Digitalstelle, der eine analoge Zeiger dreht 1x pro Liter. Bei mir schiebt sich die letzte Digitalstelle (also der Liter) kontinuierlich vor.
Von x.0 bis ca. x.2 wird "x" korrekt erkannt.
Von x.3 bis x.7 wird x nicht erkannt und durch "N" ersetzt bzw. aus PreValue abgeleitet.
Von x.7 bis x.99999 wird x falsch, nämlich schon eins zu hoch erkannt, weil der Vorschub schon so weit ist.Dieses Phänomen liegt in der Bauweise des Zählers und kann in der Bild- bzw. Ziffernerkennung erst mal nicht gelöst werden. Ich habe nur ca. 50% Chance, die letzte Digitalstelle zu erkennen. Der Algorithmus mit Betrachtung, was war vorher und was kann alles nicht sein (Rückwärtslauf usw.), muss es heilen.
Hier ist es möglicherweise aber etwas kurz gesprungen, sich nur den letzten Wert zu merken (PreValue) unabhängig davon, ob er eindeutig erkannt, oder wg. eines oder mehrerer "N" abgeleitet wurde. Beispiel:
401.09N1 kann mehrmals hintereinander so erkannt werden, auch wenn ich zwischen zwei Fotos ein exaktes Vielfaches von 1 ltr gezapft habe. Natürlich -- und das ist viel wahrscheinlicher -- kann es auch Stillstand gewesen sein. (Dass die letzte Stelle, hier 1, wenn sie sehr nahe an 2 liegt, trotz Stillstands mal als 1 und dann als 2 und wieder als 1 erkannt werden kann -- also Rücklauf, oder doch 0,9ltr Zuwachs?? -- ist ein eigenes Problem.)
Wenn dann irgendwann 401.10xx erkannt wird, habe ich vielleicht den MaxRateValue überschritten und damit das nächste Problem.
Daher mein Gedanke: Der Algorithmus sollte sich nicht nur den letzten "irgendwie" ermittelten Wert merken, sondern (auch?) den letzten klar (ohne "N") erkannten oder vom Benutzer eingegebenen Zählerstand, inkl. Zeitstempel. Der sollte zum Gegencheck des aktuellen Werts mit MaxRateValue und AllowNegativRates verwendet werden -- denn meine letzte "Ableitung" kann ja auch mal deutlich falsch gewesen sein, dann sollte sie durch einen sehr zuverlässig erkannten Zählerstand korrigiert werden können.Nebenbei: Gibt es bei der Erkennung der einzelnen Ziffer eigentlich so was wie einen "Verlässlichkeitslevel", also eine Art Selbsteinschätzung, mit welcher Wahrscheinlichkeit die Bilderkennung korrekt ist?
-Rupert
PS: Mir ist klar, ich entwerfe hier tolle Ideen zur Verbesserung, ohne selbst auch nur annähernd in der Lage zu sein, so einen Algorithmus zu realisieren. -
@rupert-s Hi Rupert,
die Idee mit dem letzten "klar erkannten Wert" ist nicht schlecht, aber die Frage, ob die Zahl auch richtig erkannt wurde, oder falsch löse ich darüber nicht. Das könnte man natürlich über einen "Verlässlichkeitswert" berücksichtigten. Das neuronale Netz liefert mit der Wahrscheinlichkeit auch einen Wert dafür. Das wird aber aktuell im Algorithmus nicht berücksichtigt. Dafür fehlt mir schlicht die Zeit, dass auszuarbeiten und vor allem zu implementieren und zu testen.
Gruß jomjol -
Ich hab an meinem Stromzähler den Effekt das die "6" nicht oder nur sehr schlecht erkannt wird. Könnte das mit der Darstellung / Schreibweise dieser Ziffer zusammenhängen? Anbei mal ein Bild. Beeinflusst das die Erkennung? Wird im RAW Value als "0" erkannt.
-
@spaceduck Danke für den Hinweis. Zwei Punkte:
- genau so eine "6" habe ich in der Tat nich in den Trainingsdaten
- mit deinem Hinweis habe ich gesehen, dass eine "6" versehentlich als "0" deklariert wurde --> könnte die Ursache sein
Ich werde das mit dem nächsten Training korrigieren.
-
@jomjol
Super, vielen Dank schonmal vorab! Dann warte ich mal gespannt auf das Update. -
Moin, ich habe das Projekt jetzt auch einige Tage an einem Gaszähler laufen. Ein Gehäuse hab ich mir ausgedruckt aber leider die Spiegelungen mit der internen LED nicht in den Griff bekommen. Also flugs einen WS2812 Strip bestellt, 2 davon abgeschnitten und links und recht oben in den Ecke eingesetzt - Spiegelung nun vernachlässigbar.
Erkennung funktioniert meistens, aber ich sehe, daß manchmal die Bilder nicht korrekt weiß sind sondern mal blau, mal grün sind, irgendwie funktioniert die Ansteuerung des WS2812 nicht immer sauber.
Hat da schon jemand Erfahrungen gemacht? -
@steffi
Welche Helligkeit hast du eingestellt und wieviel Strom kann dein Netzteil liefern? Würde spontan auf ein Problem mit der Stromversorgung tippen, bzw. das zuerst überprüfen. -
@spaceduck
RGB jeweils 120, Stromversorgung USB Netzteil mit Elko 2200 uF, ansonsten ist das System stabil, auch keine WLAN-Probleme oder Restarts - keine Ahnung. Hab auch Probleme mit bestimmten Ziffern, insbesondere mit den roten fünfen und sechsen -
@steffi said in Wasserzähler - Version 2 - all-in-device:
Stromversorgung USB Netzteil mit Elko 2200 uF
Leider sagt das nichts über die Leistungsfähigkeit aus. Die Rückfrage von @spaceduck nach der Stromstärke (Ampere) ist mehr als berechtigt. Das sollte drauf stehen. Unter 1A sehe ich -- nach meinen eigenen Erfahrungen -- kritisch ...
-
Hallo,
tolles Projekt! Hab es mal ausprobiert und bekomme eigentlich valide Werte nur manchmal ist der Zeiger zwischen einer Zahl und eine höhere Zahl wird angezeigt.
Hier müsste doch normal xx.0610 sein anstatt xx.0710
Woran kann das liegen?Edit: hab mir nochmal die Verhaltensweisen der Zeiger angeschaut und tatsächlich läuft der Zeiger etwas nach. Sollte dann so korrekt sein da die dritte Anzeige schon wieder über Null ist macht es keinen Sinn das dann als 6 zu klassifizieren denke das ist so im Algo hinterlegt.
-
@rupert-s
Das Netzteil liefert bis 2A, also kein Problem.
Ich habe das jetzt gelöst indem ich die Beleuchtung fest auf grün eingestellt habe, dabei ist sogar die Erkennung der Ziffern besser. Vermutlich deswegen weil die Ziffern in den roten Feldern leicht gelblich sind, durch das Grün wird das besser gefiltert.
Ich ziehe die Daten über einen http Request aus Python heraus.
Daten werden dabei nur dann übernommen, wenn sie größer sind als der letzte Stand.
Daten, die aber deutlich zu groß sind, werden jedoch nicht übernommen. -
Irgendwie hat er hier doch einige Probleme die Ziffern zu erkennen so wie es aussieht
-
Hallo,
Ich habe das Problem, dass das Webinterface sich nur mit dem Handy öffnen lässt. Zum einrichten war das sehr blöd. Der PC zeigt die Webseite nicht oder nur selten und nicht stabil. Habe zwei Browser probiert und ebenfalls im Private Modus wo keine Cookies an sind ohne Erfolg.
-
Mit meinem Gaszähler hat er auch so seine Probleme, z.B. will er die 5 partout nicht erkennen, aber was mich auch wundert ist, dass er mehrere Ziffern irgendwie komplett rauslässt...?
-
@joergh Das Bild ist extrem verrauscht und unscharf. Ich fürchte, dass dort das Limit liegt. Zum Vergleich meine Bildqualität:
-
@joergh sagte in Wasserzähler - Version 2 - all-in-device:
Mit meinem Gaszähler hat er auch so seine Probleme, z.B. will er die 5 partout nicht erkennen, aber was mich auch wundert ist, dass er mehrere Ziffern irgendwie komplett rauslässt...?
Dein Bild errscheint zum einen etwas dunkel. Aber insbesondere kannst du deine ROIs noch besser definieren. Die sollten alle gleich groß sein. Im Setup siehst du ein inneres Vierecke, dass soll genau um die Ziffern liegen (siehe bei 3):
-
@jomjol Ok, danke. Das engere definieren der Fenster hat bei allen Zählern den Erfolg gebracht und er erkennt auch ohne weitere Hardware Änderungen die Ziffern korrekt.
Beim Gaszähler übermittelt er allerdings nur die ersten 5 Ziffern an den ioBroker, so dass die Nachkommastellen fehlen, obwohl er sie im Rawmodus durchaus erkennt. Gibt es eine Möglichkeit die Nachkommastellen einfach zu definieren?
-
@joergh welche Version verwendest du den? Da gabe es mal einen Bug - sollte in der neusten aber raus sein.
-
@jomjol Ich habe heute alle auf die aktuelle Version von Github upgedatet, also 9.1.1
-
@joergh und immer noch das Problem?