NEWS
Wasserzähler - Selfmade
-
Ich wollte nochmal kurz berichten. Bei mir hat es jetzt mit der anderen Cam auch geklappt. Die alte war anscheinend defekt (Bild war zu blau und unscharf).
Also ich habe bisher nur die Zeiger ausgelesen, die Zähler mache ich später.Ich hatte auch Probleme den Kleber von der Kamera abzubekommen um den Fokus zu verstellen. Ich habe es mit einem sehr dünnen Küchenmesser versucht und dann immer mit einer kleinen Zange versucht zu drehen, so lange, bis es dann funktionierte. Ich kann den Fokus auch jetzt nur mit der Zange verstellen, per Hand geht es nicht.
Ich habe zwei Kameras zerstört, bis ich es dann doch mal hinbekommen habe (einmal das Kabel zu weit gebogen, und einmal mit dem Messer abgerutscht und das Kabel getroffen).Ich habe die kleine Tube weggelassen, jetzt ist die Kamera näher am Zähler. Das geht auch gut.
Und noch als Tipp für alle anderen: Nehmt kein Referenbild das sehr nah am Rand des Bildes ist. Das hatte ich erst gemacht, sobald man dann aber die Tube einmal etwas dreht oder so, dann kann es schnell passieren, dass das Referenzbild nicht mehr gefunden wird und dann funktioniert gar nichts mehr.Danke an alle für die Hilfe und besonders an @jomjol für dieses Projekt, es macht sehr viel Spaß
-
Hi @Thomas_s2
ein paar Fragen
- Wie rum hast du dann den Fokus gedreht und wie hast du es eingestellt und getestet?
- Was für ein Abstand hat dein Objektiv zur Wasseruhr?
- Was meinst du mit "Tube" ?
Danke!
-
So Leute, habe noch etwas rumprobiert und bin ein gutes Stück weiter.
Habe mir ein 3D-Modell von einem Werkzeug erstellt, mit dem man den Fokus einstellen kann (Werkzeug_Focus_Linse.stl). Einfach mit 3D-Drucker ausdrucken, Layer 0,2mm und 20% Infill.
Es passt nicht 100% perfekt, aber ich konnte damit meinen Fokus justieren und es geht besser als mit einer Zange und vor allem ohne was zu verschrammen.
Habe die Cam jetzt in ca. 10cm Entfernung von der Wasseruhr und bekomme relativ gute Bildqualität würde ich sagen.
Reicht die Qualität aus, oder muss ich noch irgendwas verbessern? -
@Atifan sieht doch super aus. Jetzt noch die Reflektion mit schwarzem Klebeband abkleben dann ist es perfekt.
Und dank für das Teilen der STL, kann man bestimmt gut gebrauchen. -
Kann mir mal einer nen kurzen Tipp geben was ich machen muss, stehe gerade auf dem Schlauch.
Ich habe bisher folgendes gemacht.-
ESP32 CAM geflasht und über der Wasseruhr platziert
-> Bilder können über den Aufruf der URL gemacht werden: http://192.168.178.238/capture_with_flashlight?quality=10&size=SVGA -
Habe auf meinem NUC ein Docker installiert und das "rolling" Image geladen.
-> habe in der Datei "config.ini" die IP für die ESP32-CAM angepasst -> URLImageSource=http://192.168.178.238/capture_with_flashlight?quality=10&size=SVGA
Wenn ich die IP vom Docker/Bildbearbeitungsserver aufrufe bekomme ich eine Anzeige
-> http://192.168.178.115:3000/wasserzaehler.html
Jetzt weiss ich irgendwie nicht mehr weiter was ich machen soll.
Irgendwie muss ich ja ein Referenzbild auf meinen Bildverarbeitungsserver bekommen welches ich dann bearbeiten muss und wo ich diese Markierungen setzen muss usw. -
-
@Atifan sagte in Wasserzähler - Selfmade:
http://192.168.178.238/capture_with_flashlight?quality=10&size=SVGA
dein Referenzbild bekommst du ja über die Camera direkt (nicht über Dockeraufruf). Dieses Bild speicherst du dir ab und holst dir daraus alle Koordinaten und Ref-Bilder.
-
@watcherkb sagte in Wasserzähler - Selfmade:
r Dockeraufruf). Dieses Bild speicherst du dir ab und holst dir daraus alle Koordinaten und Ref-Bilder.
Achso, d.h. ich muss garkein Bild auf dem Bildverarbeitungsserver speichern? Sondern nur ein Bild auf Rechner ziehen und die Referenzpunkte las kleine Bildchen rausziehen und abspeichern mit Koordinaten? Und dann alles in der Config angeben?
-
@Atifan korrekt
und mit diesem Aufruf siehst du nachher wie gut du eingestellt hast: http://192.168.178.115:3000/roi
wichtig ist nach jeder Änderung Dockercontainer neustarten!
-
So, habe soweit die Referenzpunkte und die Marker für die Zeigern und Ziffern eingerichtet.
Aber ich bekomme noch keinen richtigen Wert über: http://192.168.178.115:3000/wasserzaehler.htmlHier das Prüfbild über http://192.168.178.115:3000/roi.
-
@Atifan du solltest die 3 roten Referenzen als Dreieck erstellen. Die zwei oben sind zu nah zusammen.
Was sagt denn http://192.168.1.36:3000/wasserzaehler.html&full -
Das kommt dabei raus:
Sehe ich das richtig, er erkennt die ersten drei Ziffern nicht richtig. Alles andere erkennt er.
Kann es sein dass die Ecke zu dunkel ist? -
@Atifan kann sein das es zu dunkel ist. Kann aber auch sein dass deine Ziffern angelernt werden müssen.
-
LOL es funktioniert
Habe das Gehäuse bisschen optimiert, das war bisschen schlecht. Dadurch konnte die LED nicht gut ausleuchten. Habe nun viel besseres Bild und es funktioniert schon wunderbar Das war ja einfach
Thx 4 help @ all
Wieder ein Thema erledigtBleibt nur noch eine Frage, wie bekomme ich den Wert in den IoBroker rein?
-
@Atifan gratuliere
Was hast du denn optimiert und welchen Abstand hast du jetzt? -
Ich hatte mir ein 3d-Gehäuse erstellt und dort ein kleines Loch vorgesehen, wodurch die LED dann beleuchten kann. Das Loch war aber nur so groß wie die LED selbst, so dass die Ausleuchtung schlecht war, da nur in einem kleinen Winkel ausgeleuchtet wurde. Habe das Loch jetzt größer gemacht, so dass die LED in einem größeren Winkel strahlen kann.
Der Abstand von dem Objektiv bis zur Wasseruhr ist ziemlich genau 10cm. -
PS nur als Tipp, falls das Glas spiegelt.
Ich habe kein schwarzes Isolierband genommen, da dieses auch spiegelt.
Ich habe einen schwarzen Filz-Untersetzer genommen (die kleinen Filz Füßchen die man unter Gegenstände kleben kann).
Da dieses Matt ist kann nix spiegeln und eine klebende Unterfläche ist auch mit dabei, so dass es nicht so leicht verrutschen kannHabe jetzt alles fertig installiert. Habe die Kamera richtig fixiert und die 5V Stromversorgung hingelegt und fertig installiert.
Musst nochmal die Marker leicht anpassen, da sich dadurch die Kameraposition wieder minimal geändert hatte, war aber kein Problem.
Man sollte die Kamera auf jeden die Fall möglichst so installieren, damit man die gleiche Position leicht wieder einstellen kann.
Ich habe mir dazu ein 3d Gehäuse ausgedruckt mit dem ich die Linse exakt über dem Mittelpunkt der Wasseruhr positionieren kann.
Das ist natürlich bei jedem etwas anders.Bin jedenfalls froh jetzt den Wasserzähler fertig zu haben, ging schneller und einfacher als ich dachte.
Das Ergebnis kann sich sehen lassenDanke an alle Helfer und vorallem an @jomjol für das tolle Projekt
-
Was mir gerade einfällt, was mir aber noch fehlt ist die Automatisierung und Integration in IoBroker.
Wie wird das realisiert?Automatisierung meine ich, damit z.B. jeden Tag 1x ein Bild gemacht wird und damit die Daten aufbereitet und zur Verfügung gestellt werden über http://192.168.178.115:3000/wasserzaehler.html
Und dann halt die Frage wie bekomme ich den Wert von der HTML-Seite dann in den IoBroker als Datenpunkt? -
@Atifan Würdest du dein Gehäuse einmal teilen?
Für das Auswerten gibt es den Parser Adapter.
UNter RegEx gibst du folgendes ein: [N|0-9][N|0-9][N0-9][N|0-9][N|0-9]\D\d\d\d\d
Das Intervall kannst du hinten selbst in ms einstellen. Am Ende hast du ein Objekt welches er ausgewertet hat. -
Ah super, Danke!
Ja hier ist mein Gehäuse inkl. Halterung.
Besteht aus 2 Teilen und kann z.B. mit doppelseitigem Montageband zusammengeklebt werden.
Die Linse der CAM hat genau einen Abstand von 8cm von der Wand, wo der Halter befestigt ist.
Der Abstand kann aber auch noch einige cm vergrößert werden.
Ist halt auf meine Örtlichkeiten abgestimmt, sollte aber bei den meisten nutzbar sein.
Ich habe die CAM dann einfach mit Isolierband am Halter fixiert.
Es ist eigentlich noch ein Prototyp, aber er erfüllt so auch seinen Zweck, daher habe ich es einfach so gelassen
Man muss den Halter eigentlich nur so einstellen, dass die Linse möglichst genau über der Mitte des Zählers sitzt.
Dann den Halter in der Höhe über der Wasseruhr im optimalen Abstand befestigen.
Bei mir waren das genau 10cm von der Linse der CAM zur Glasoberfläche der Wasseruhr.
Dafür muss ggf. die Linse justiert werden, damit das Bild scharf wird.Hier die 3D-Dateien zum Drucken:
Kamerahalter.stl
Wandhalter.stl
Werkzeug_Focus_Linse_einstellen.stl -
So habe den Parser installiert und jetzt auch einen Datenpunkt im IoBroker
Allerdings alle Ziffern aneinander gereiht ohne Trennung der Nachkommastellen durch ein Komma.
Wie kann ich das konvertieren in eine Zahl mit Komma?
Muss man das irgendwie über ein Script machen, oder geht das mit dem Parser selbst irgendwie?