NEWS
Wasserzähler - Version 2 - all-in-device
Wasserzähler - Version 2 - all-in-device
-
@esp8266
Danke für deine Antwort. So richtig schlau werde ich daraus aber nicht.
Man soll ein Modell auswählen, die Unterschiede sind aber nicht bekannt?Ein paar Dinge stehen hier ja auch:
https://jomjol.github.io/AI-on-the-edge-device-docs/Choosing-the-Model/ -
Ein paar Dinge stehen hier ja auch:
https://jomjol.github.io/AI-on-the-edge-device-docs/Choosing-the-Model/@david-g
Das habe ich mir mehrere male durchgelesen, aber leider nicht verstanden.
Deswegen meine Frage.
Andere haben mehr Probleme. Also alles gut. -
@sandmanyz , das liegt definitiv an deinen Referenz Markern. Ref. 01 ist viel zu klein. Warum nimmst du nicht das m? Übringens sind die Marker auf präzises Ausrichten angewiesen. Als Ref. 02 würde ich nicht oben (bringt meist Schieflage) irgendwas nehmen sondern links den Strich (Erhöhung)vor der Rundung. Den kann man ziemlich genau umranden.
Von der schwarzen Makierung oberhalb des schwarzen Sternrades kann man das obere Stück auch nehmen. Wenn das nicht hilft, dann mach ein Markierung links Ausserhalb der Uhr auf den Rand eine.
@jomjol kann dir bei so etwas auch nicht weiter helfen. -
@david-g
Das habe ich mir mehrere male durchgelesen, aber leider nicht verstanden.
Deswegen meine Frage.
Andere haben mehr Probleme. Also alles gut.@gonzokalle , ich war auf der Seite noch nie, weil für mich unintressant. Da sind doch Links zum veranschauen hinterlegt? Zumindest ich sehe die markierten Bereiche zu weiterführenden Links...
https://jomjol.github.io/neural-network-digital-counter-readout/
https://jomjol.github.io/neural-network-analog-needle-readout/Wenn das nicht reicht, musste mit offener Antwort leben.
Also war meine Beschreibung doch nicht ganz aus dem Ärmel gezogen.
-
Hallo zusammen,
ich möchte in diesem Thread den Wasserzähler in der Version 2 vorstellen und diskutieren. In Version 1 waren 2 Komponeten notwendig (Hardware mit Kameraaufnahme, Docker-Server zur Auswertung). Das Zusammenspiel und die Konfiguration waren nicht immer ganz einfach.
Daher habe ich eine Nachfolgegeneration entwickelt, bei der alles in einem all-included Device umgesetzt ist und es noch um eine Web-basierte graphische Oberfläche zur einfachen Konfiguration ergänzt.
Das Grundprinzip basiert unverändert auf einem ESP32-Modul mit Kamera, welches regelmäßig ein Bild aufnimmt und durch Bilderkennung (Neuronale Netze, CNN) auswertet und den Zählerstand digitalisiert zur Verfügung stellt:


Hier ein Eindruck der graphischen Benutzeroberfläche:

Die Hardware ist wieder auf Thingiverse veröffentlicht, die Software könnt ihr als Firmware oder zum selber kompilieren auf GitHub finden. Dort gibt es auch ein Wiki mit Installations- und Konfigurationsanleitung.
-
Software/Wiki: https://github.com/jomjol/AI-on-the-edge-device/wiki
Ich stehe hier gerne wieder für Feedback, Fragen oder einfach zur Hilfe zur Verfügung und freue mich, wenn dieser Thread genauso intensiv genutzt wird, wie bei der Version 1 (>1k Beiträge und >22k Aufrufe).
Beste Grüße und viel Spass beim Nachbauen,
Jomjol
P.S.: die neue Software ist sehr flexibel aufgebaut und kann grundsätzlich auch Bildererkennung / Neuronale Netze für andere Zwecke eingesetzt werden. Wer eine gute Idee oder Anregung hat oder bei eine Modifikation Unterstützung braucht - bitte auch gerne einfach hier posten.
Hallo,
ich nutze (Naja versuche...) das ganze für meinen Gaszähler zu nutzen.
Die Installation hat soweit geklappt, als Hardware damit das ganze vor den Zähler passt haben ich die Vorlage "ESP32-CAM-MB_for_Pipersberg_G4_RF1_c_4820301" ausgedruckt.
Soweit alles gut, es werden auch Zählerstände erkannt und per MQTT an den IOBroker geschickt.Allerdings habe ich zwei Probleme (Siehe Bild):

1.) Die vorderste Ziffer ist nicht mit auf dem Bild. Damit kann ich zwar generell leben (Wann ändert die sich schon), aber ich würde gern das die erste Stelle als Konstante mit an den IOBroker geschickt wird (Also sowas wie immer Null). Geht das irgendwie?
2.) Bei der ersten Nachkommastelle gibt es eine Spiegelung von der Beleuchtungs-LED (Genauso wie der weisse Fleck weiter unten). Ich habe versucht über den Parameter "LED Intensity" die Helligkeit nach unten zu regeln - Allerdings scheint der Parameter nichts zu bewirken. Wäre auch nicht schlimm, aber die KI erkennt z.B. die 7 immer als 4 und das ist dann eben schlimm.
Irgendwelche Ideen wie ich entweder die Spiegelung da loswerde oder die KI dazu bringe den Strich zu ignorieren? Ich bin aus den Vorschlägen weiter vorn nicht schlau geworden. Mein Gehäuse ist schon weiss, Antireflexionsfolien scheinen nicht geholfen zu haben und da die Cam ja mit relativ starrem Flachbandkabel angeschlossen ist traue ich mich da auch nicht die groß in der Position zu verschieben...Danke!
-
Hallo,
ich nutze (Naja versuche...) das ganze für meinen Gaszähler zu nutzen.
Die Installation hat soweit geklappt, als Hardware damit das ganze vor den Zähler passt haben ich die Vorlage "ESP32-CAM-MB_for_Pipersberg_G4_RF1_c_4820301" ausgedruckt.
Soweit alles gut, es werden auch Zählerstände erkannt und per MQTT an den IOBroker geschickt.Allerdings habe ich zwei Probleme (Siehe Bild):

1.) Die vorderste Ziffer ist nicht mit auf dem Bild. Damit kann ich zwar generell leben (Wann ändert die sich schon), aber ich würde gern das die erste Stelle als Konstante mit an den IOBroker geschickt wird (Also sowas wie immer Null). Geht das irgendwie?
2.) Bei der ersten Nachkommastelle gibt es eine Spiegelung von der Beleuchtungs-LED (Genauso wie der weisse Fleck weiter unten). Ich habe versucht über den Parameter "LED Intensity" die Helligkeit nach unten zu regeln - Allerdings scheint der Parameter nichts zu bewirken. Wäre auch nicht schlimm, aber die KI erkennt z.B. die 7 immer als 4 und das ist dann eben schlimm.
Irgendwelche Ideen wie ich entweder die Spiegelung da loswerde oder die KI dazu bringe den Strich zu ignorieren? Ich bin aus den Vorschlägen weiter vorn nicht schlau geworden. Mein Gehäuse ist schon weiss, Antireflexionsfolien scheinen nicht geholfen zu haben und da die Cam ja mit relativ starrem Flachbandkabel angeschlossen ist traue ich mich da auch nicht die groß in der Position zu verschieben...Danke!
@warhammer73 Ist das Gehäuse so flach, wie es hier https://www.3d-loewe.de/p/esp32-cam-mb-for-pipersberg-g4-rf1-c zu sehen ist? Ohne Umlenkspiegel einfach so? Das wäre ja echt stark.
-
@warhammer73 Ist das Gehäuse so flach, wie es hier https://www.3d-loewe.de/p/esp32-cam-mb-for-pipersberg-g4-rf1-c zu sehen ist? Ohne Umlenkspiegel einfach so? Das wäre ja echt stark.
@rene55
Nicht täuschen lassen, das ist nur ein von 4 Teilen.
Insgesamt sieht es dann so aus: https://www.thingiverse.com/thing:4820301 -
@rene55
Nicht täuschen lassen, das ist nur ein von 4 Teilen.
Insgesamt sieht es dann so aus: https://www.thingiverse.com/thing:4820301@warhammer73, von was für einer Beleuchtung schreibst du, intern oder extern?
Extern wird da geregelt:

und intern genau da wo du das einstellt hast, die Wirkung ist nur sichtbar, wenn man mit Take Image bestätigt, das dauert ein bisschen, danach sebstverständlich alles speichern und rebooten.
Ich würde auch mit den anderen Werten mal spielen und Take Image dabei nicht vergessen, um die Vorschau zusehen.
Vieleicht reicht auch den Blitz etwas in eine andere Richtung zu lenken. Es gibt so eine Art Haftknete (Hafttabs). Wäre ein Versuch Wert. Wo man auch was an der Wand befestigen kann. Postkarten etc. -
@warhammer73, von was für einer Beleuchtung schreibst du, intern oder extern?
Extern wird da geregelt:

und intern genau da wo du das einstellt hast, die Wirkung ist nur sichtbar, wenn man mit Take Image bestätigt, das dauert ein bisschen, danach sebstverständlich alles speichern und rebooten.
Ich würde auch mit den anderen Werten mal spielen und Take Image dabei nicht vergessen, um die Vorschau zusehen.
Vieleicht reicht auch den Blitz etwas in eine andere Richtung zu lenken. Es gibt so eine Art Haftknete (Hafttabs). Wäre ein Versuch Wert. Wo man auch was an der Wand befestigen kann. Postkarten etc.@esp8266
Intern.
Andere Werte helfen nicht, der Streifen wird leider immer falsch erkannt.
Ich hatte die Hoffnung mit etwas verschieben der Kamera vielleicht die Spiegelung passend verschoben zu bekommen, aber dazu reicht die Kamerabewegung nicht aus.Na mal sehen, vielleicht fällt mir morgen was ein...
-
@warhammer73 , die Spiegelung hat auch da nichts zu suchen.
-
@warhammer73 , die Spiegelung hat auch da nichts zu suchen.
@esp8266 Danke für den Hinweis, hab ich der Spiegelung gesagt - Die bleibt aber hartnäckig bei der ersten Nachkommastelle.
-
@esp8266 Danke für den Hinweis, hab ich der Spiegelung gesagt - Die bleibt aber hartnäckig bei der ersten Nachkommastelle.
Ich habe auch wirklich lange probiert beim Gaszähler.
Milchglaafolie vor die LED, mein Gehäuse von innen mit matten Materialien angeklebt und was weiß ich alles.Irgendwann hat es dann geklappt.
-
Ich habe auch wirklich lange probiert beim Gaszähler.
Milchglaafolie vor die LED, mein Gehäuse von innen mit matten Materialien angeklebt und was weiß ich alles.Irgendwann hat es dann geklappt.
-
Ich habe auch wirklich lange probiert beim Gaszähler.
Milchglaafolie vor die LED, mein Gehäuse von innen mit matten Materialien angeklebt und was weiß ich alles.Irgendwann hat es dann geklappt.
@david-g
... gestern hat er jetzt das erste mal die 7 statt der 2 erkannt. Mal sehen ob das so bleibt.Ich habe jetzt:
- Die Kamera minimal versetzt, sodass die Spiegelung etwas weiter unten ist
- Am Gaszähler über den Zahlen mehrere Lagen gelbliches Klebeband geklebt
- Die rote "Power LED" mit Malerkrepp abgeklebt
- Die weisse "Beleuchtung" LED mit zwei Lagen Malerkrepp abgeklebt
-
Hallo zusammen, ich habe zur Zeit alle paar Tage einen Absturz meines Wasserzählers.
Der Wasserzähler ist vom Anfang des Jahres bis vor kurzem durchgelaufen.
Beim ersten mal war die SD-Karte gelöscht. Widerhergestellt ist er wieder gelaufen.
Bin dann gleich auf die Release: v15.1.1 (Commit: 03c84a1+) gegangen.
Nun habe ich alle paar Tage einen Absturz.
Keine neuen Werte per MQTT. WEB-GUI kann nicht aufgerufen werden. Ping geht noch.
SD-Karte bleibt intakt. Kurz ohne Strom läuft er wieder.
Netzteil habe ich schon einmal gewechselt.
Habt ihr noch Ideen?Hier mal die letzten Einträge:
[0d01h47m54s] 2023-04-11T03:46:25 <DBG> [PSRAM] Freeing memory in PSRAM used for 'C IMG BASIS->CImageBasis (ImageTMP, 921600)'...
[0d01h47m54s] 2023-04-11T03:46:25 <DBG> [MQTT IF] Published topic: Wasserzaehler/status, content: Digitalization of ROIs (msg_id=688)
[0d01h47m55s] 2023-04-11T03:46:25 <DBG> [CNN] doFlow after alignment
[0d01h47m55s] 2023-04-11T03:46:25 <DBG> [PSRAM] Allocated 819200 bytes in PSRAM for 'TFLITE->tensor_arena'
[0d01h47m55s] 2023-04-11T03:46:25 <DBG> [TFLITE] CTfLiteClass::LoadModel
[0d01h47m55s] 2023-04-11T03:46:25 <DBG> [TFLITE] CTfLiteClass::ReadFileToModel: /sdcard/config/dig-class11_1430_s2.tflite
[0d01h47m55s] 2023-04-11T03:46:25 <DBG> [PSRAM] Allocated 356488 bytes in PSRAM for 'TFLITE->modelfile'
[0d01h47m55s] 2023-04-11T03:46:26 <DBG> [TFLITE] CTfLiteClass::MakeAllocate
[0d01h47m55s] 2023-04-11T03:46:26 <DBG> [CNN] Processing Number 'main'
[0d01h47m55s] 2023-04-11T03:46:26 <DBG> [CNN] ROI #0 - TfLite
[0d01h47m55s] 2023-04-11T03:46:26 <DBG> [CNN] CNN Type: Digital
[0d01h47m56s] 2023-04-11T03:46:26 <DBG> [CNN] ROI #1 - TfLite
[0d01h47m56s] 2023-04-11T03:46:26 <DBG> [CNN] CNN Type: Digital
[0d01h47m56s] 2023-04-11T03:46:27 <DBG> [CNN] ROI #2 - TfLite
[0d01h47m56s] 2023-04-11T03:46:27 <DBG> [CNN] CNN Type: Digital
[0d01h47m57s] 2023-04-11T03:46:27 <DBG> [CNN] ROI #3 - TfLite
[0d01h47m57s] 2023-04-11T03:46:27 <DBG> [CNN] CNN Type: Digital
[0d01h47m57s] 2023-04-11T03:46:27 <DBG> [CNN] ROI #4 - TfLite
[0d01h47m57s] 2023-04-11T03:46:27 <DBG> [CNN] CNN Type: Digital
[0d01h47m57s] 2023-04-11T03:46:28 <DBG> [CNN] ROI #5 - TfLite
[0d01h47m57s] 2023-04-11T03:46:28 <DBG> [CNN] CNN Type: Digital
[0d01h47m58s] 2023-04-11T03:46:28 <DBG> [CNN] ROI #6 - TfLite
[0d01h47m58s] 2023-04-11T03:46:28 <DBG> [CNN] CNN Type: Digital
[0d01h47m58s] 2023-04-11T03:46:29 <DBG> [CNN] ROI #7 - TfLite
[0d01h47m58s] 2023-04-11T03:46:29 <DBG> [CNN] CNN Type: Digital
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [PSRAM] Freeing memory in PSRAM used for 'TFLITE->modelfile'...
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [PSRAM] Freeing memory in PSRAM used for 'TFLITE->tensor_arena'...
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/status, content: Post-Processing (msg_id=689)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [CNN] getReadout _analog=0, _extendedResolution=0, prev=-1
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [POSTPROC] handleAllowNegativeRate for device: main
[0d01h47m59s] 2023-04-11T03:46:29 <INF> [POSTPROC] main: Raw: 00182.371, Value: 182.371, Status: no error
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/status, content: Sending MQTT (msg_id=690)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT SERVER] Publishing System MQTT topics...
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/connection, content: connected (msg_id=691)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/uptime, content: 6479 (msg_id=692)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/freeMem, content: 2892782 (msg_id=693)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/wifiRSSI, content: -63 (msg_id=694)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/CPUtemp, content: 35 (msg_id=695)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT SERVER] Successfully published all System MQTT topics
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT SERVER] Int. Heap Usage before publishing System Topics: 44763, after: 44763, delta: 0, lowest free: 17515
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT] Publishing MQTT topics...
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/main/value, content: 182.371 (msg_id=696)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/main/error, content: no error (msg_id=697)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/main/rate, content: 0.000000 (msg_id=698)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/main/rate_per_time_unit, content: 0.000000 (msg_id=699)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/main/changeabsolut, content: 0.000 (msg_id=700)
[0d01h47m59s] 2023-04-11T03:46:29 <DBG> [MQTT IF] Published topic: Wasserzaehler/main/rate_per_digitalization_round, content: 0.000 (msg_id=701)
[0d01h47m59s] 2023-04-11T03:46:30 <DBG> [MQTT IF] Published topic: Wasserzaehler/main/raw, content: 00182.371 (msg_id=702)
[0d01h47m59s] 2023-04-11T03:46:30 <DBG> [MQTT IF] Published topic: Wasserzaehler/main/timestamp, content: 2023-04-11T03:45:53+0200 (msg_id=703)
[0d01h47m59s] 2023-04-11T03:46:30 <DBG> [MQTT IF] Published topic: Wasserzaehler/main/json, content: { "value": "182.371", "raw": "00182.371", "pre": "182.371", "e.. (msg_id=704)
[0d01h47m59s] 2023-04-11T03:46:30 <DBG> [MQTT IF] Published topic: Wasserzaehler/status, content: Flow finished (msg_id=705)
[0d01h47m59s] 2023-04-11T03:46:30 <INF> [TFLITE SERVER] Round #35 completed (47 seconds)
[0d01h47m59s] 2023-04-11T03:46:30 <DBG> [TFLITE SERVER] CPU Temperature: 35°C
[0d01h47m59s] 2023-04-11T03:46:30 <DBG> [TFLITE SERVER] WIFI Signal (RSSI): -63dBm
[0d01h50m12s] 2023-04-11T03:48:43 <DBG> [TFLITE SERVER] ----------------------------------------------------------------
[0d01h50m12s] 2023-04-11T03:48:43 <INF> [TFLITE SERVER] Round #36 started
[0d01h50m12s] 2023-04-11T03:48:43 <DBG> [MQTT IF] Published topic: Wasserzaehler/status, content: Take Image (msg_id=706)
[0d01h50m22s] 2023-04-11T03:48:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'C IMG BASIS->CImageBasis (zwImage, 0)'...
[0d01h50m22s] 2023-04-11T03:48:53 <DBG> [MQTT IF] Published topic: Wasserzaehler/status, content: Aligning (msg_id=707)
[0d01h50m23s] 2023-04-11T03:48:54 <DBG> [PSRAM] Allocated 921600 bytes in PSRAM for 'C IMG BASIS->CImageBasi
-
Genau das Problem habe ich auch. Webinterface funktioniert nicht mehr und es werden keine Daten mehr gesendet.
Heute war das Teil wieder nicht erreichbar. Ich muss es einmal stromlos machen. Danach gehts dann wieder für ca. einen Tag.
Ist seit dem Update. Ich habe einen größeren Sprung gemacht und kann daher nicht genau sagt seit welchen der letzten Versionen das Problem auftritt. -
Genau das Problem habe ich auch. Webinterface funktioniert nicht mehr und es werden keine Daten mehr gesendet.
Heute war das Teil wieder nicht erreichbar. Ich muss es einmal stromlos machen. Danach gehts dann wieder für ca. einen Tag.
Ist seit dem Update. Ich habe einen größeren Sprung gemacht und kann daher nicht genau sagt seit welchen der letzten Versionen das Problem auftritt.@sandmanyz
Da bin ich wenigstens nicht alleine.
Die Version, die so lange lief, müsste aus der Weihnachtszeit 22' sein.
Ich lasse jetzt erstmal den Zeitstempel vom Wasserzähler überwachen und mich benachrichtigen, wenn er sich nicht aktualisiert. -
@sandmanyz
Da bin ich wenigstens nicht alleine.
Die Version, die so lange lief, müsste aus der Weihnachtszeit 22' sein.
Ich lasse jetzt erstmal den Zeitstempel vom Wasserzähler überwachen und mich benachrichtigen, wenn er sich nicht aktualisiert.Warum auch immer hatte ich das auch mal ca 1 Woche. Hat sich von selber erledigt.....
Klappt bei euch noch die Rest-API? Bei mir hatte sie damals.
Hab dann auch den Zeitstempel abgefragt und das Teil wenn zu alt neugestartet. -
Warum auch immer hatte ich das auch mal ca 1 Woche. Hat sich von selber erledigt.....
Klappt bei euch noch die Rest-API? Bei mir hatte sie damals.
Hab dann auch den Zeitstempel abgefragt und das Teil wenn zu alt neugestartet.@david-g
Ich bin gerade nicht am Rechner. Was ist die Rest-Api? Ein DP im Mqtt Adapter? -
@david-g
Ich bin gerade nicht am Rechner. Was ist die Rest-Api? Ein DP im Mqtt Adapter?Eine URL die man aufruft über die man des esp neustarten kann.
https://jomjol.github.io/AI-on-the-edge-device-docs/REST-API/


