Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. Wasserzähler - Version 2 - all-in-device

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Wasserzähler - Version 2 - all-in-device

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jomjol last edited by

      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:
      29bcd786-9496-4509-9d83-53d2aa12f075-grafik.png
      5c454ff1-52e5-4a6e-8161-374ed3add53a-grafik.png

      Hier ein Eindruck der graphischen Benutzeroberfläche:

      aad50478-622e-4df1-9224-6370205904f4-grafik.png

      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.

      • Hardware: https://www.thingiverse.com/thing:4573481

      • 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.

      Master67 A E T W 22 Replies Last reply Reply Quote 15
      • Master67
        Master67 @jomjol last edited by

        @jomjol ....... was für ein Zufall, ich habe mir Gestern diese Seite https://tutorials-raspberrypi.de/raspberry-pi-objekterkennung-mittels-tensorflow-und-kamera/ mal angeschaut weil ich noch zwei Raspberry Pis hierrum liegen habe, aber dein Projekt erscheint mir Sinnvoller als Äpfel und Birnen zu "Scannen" 😉

        Nun meine Frage, siehst du ein Problem das mit einem Pi und einer Webcam (Auflösung 720P) zu realisieren und läuft dort dann auch dein Docker Container?

        J 1 Reply Last reply Reply Quote 1
        • J
          jomjol @Master67 last edited by

          @Master67 sagte in Wasserzähler - Version 2 - all-in-device:

          ine Frage, siehst du ein Problem das mit einem Pi und einer Webcam (Auflösung 720P) zu realisieren und läuft dort dann auch dein Dock

          Also das geht auch mit einem Raspberry PI. Der Docker-Container von Version 1 läuft dort - es gibt auf docker einen speziellen Container für den Raspberry. Dort ist nur noch keine direkte Ansteuerung für die Pi-Kamera drin. Das geht aber definitiv auch, weil ich es auch schonmal implementiert habe.

          Master67 1 Reply Last reply Reply Quote 0
          • A
            aandekant @jomjol last edited by

            Entschuldigen Sie mein schlechtes Deutsch. Ich komme aus Belgien.

            Ich habe einen alten Stromzähler mit einem zusätzlichen Glasfenster davor. (7-8cm vor dem Zähler) Ich habe die Standardmethode versucht, diesen Zähler mit einem optischen Sensor auf der rotierenden Scheibe abzulesen, aber mit der Doppelreflexion ist das sehr schwierig.

            Dann habe ich Ihre wunderbare Lösung gefunden. Ich konnte die Software (Docker-Version) vor einigen Wochen ausführen. Aber ich habe abgebrochen, als die Ausgabebilder sehr verzerrt waren. Wahrscheinlich stimmt etwas mit meine Ausrichtungsreferenzen nicht.

            IMG_20200731_211115.jpg (älteres Bild, es funktioniert besser, wenn die Kamera auf das erste Glas aufgesetzt wird)

            Bevor ich mehr Zeit darauf verwende: Halten Sie es für möglich, dass Ihre Lösung etwas von diesem Bild lesen könnte? Ein Problem, das ich sehe, ist, dass der Text weiß auf schwarz und nicht schwarz auf weiß ist?

            refAfbeelding202008161605.jpg

            Wenn ich die Kamera höher stelle, fällt die Reflexion der LED in die Ziffern. Bei dem rgb-Streifen hatte ich das Problem, dass die erste LED grün blieb. ähnlich wie bei https://arduino.stackexchange.com/questions/32017/esp8266-nodemcu-first-ws2812-led-lights-up-green. Das Bild war aber besser.

            J Eisbaeeer 2 Replies Last reply Reply Quote 1
            • Master67
              Master67 @jomjol last edited by

              @jomjol sagte in Wasserzähler - Version 2 - all-in-device:

              @Master67 sagte in Wasserzähler - Version 2 - all-in-device:
              Also das geht auch mit einem Raspberry PI. Der Docker-Container von Version 1 läuft dort - es gibt auf docker einen speziellen Container für den Raspberry. Dort ist nur noch keine direkte Ansteuerung für die Pi-Kamera drin. Das geht aber definitiv auch, weil ich es auch schonmal implementiert habe.

              Danke dir, dann versuche ich mich mal an Version 1, weil ich nicht wüsste wie ich die (USB) Cam in den Docker Container implementieren kann.

              1 Reply Last reply Reply Quote 0
              • E
                Eggs @jomjol last edited by

                @jomjol

                Moin und danke für die Arbeit,

                aber irgendwie stelle ich mich wohl zu blöd an...

                Kann ich aus dem github-Ordner Code die firmware.bin mit ESP-Flasher auf das Modul schieben und danach das WLAN konfigurieren (ähnlich Tasmota bei Sonoffs) oder muss ich die Zugangsdaten vorher irgendwo hinterlegen? Habe auch versucht, die Software in Arduino zu öffnen, der will will aber eine *.ino...

                Im Voraus dankende Grüße für die Erleuchtung
                Dirk

                H J 2 Replies Last reply Reply Quote 0
                • H
                  hike @Eggs last edited by

                  @jomol
                  Toll geschriebener Code. Es macht Spaß so was zu lesen und daran zu lernen.

                  Frage: Das Entwicklungssystem ist PlatformIO ?

                  Ich habe leider kaum Erfahrungen damit.
                  Gibts eine Kurzanleitung zum Import dieses Projekts?
                  Hike

                  J 1 Reply Last reply Reply Quote 0
                  • J
                    jomjol @Eggs last edited by

                    @Eggs sagte in Wasserzähler - Version 2 - all-in-device:

                    @jomjol

                    Moin und danke für die Arbeit,

                    aber irgendwie stelle ich mich wohl zu blöd an...

                    Kann ich aus dem github-Ordner Code die firmware.bin mit ESP-Flasher auf das Modul schieben und danach das WLAN konfigurieren (ähnlich Tasmota bei Sonoffs) oder muss ich die Zugangsdaten vorher irgendwo hinterlegen? Habe auch versucht, die Software in Arduino zu öffnen, der will will aber eine *.ino...

                    Im Voraus dankende Grüße für die Erleuchtung
                    Dirk

                    Hallo Dirk,
                    ganz so einfach wie bei Sonoffs ist es (noch) nicht, aber fast 😊 .

                    Die Firmware besteht aus drei Teilen (Bootloader, Partitioninfo und Firmware) und die müssen alle drei geflasht werden - das geht aber mit dem Tool von Espressif eigentlich reicht einfach - ist hier detailliert beschrieben: https://github.com/jomjol/AI-on-the-edge-device/wiki/Installation

                    Dort findest du auch den Link zum Flashtool und eine Anleitung zur Bedienung. Das Wlan wird über eine Dateil auf der SD-Karte konfiguriert. Dort gibt es die wlan.ini (im Root Verzeichniss) - dort einfach SSDI und Passwort eintragen. Ist auch im o.g. Link nochmal beschrieben.

                    Arduino geht nicht, da der Code in PlattformIO mit ESP-IDF erstellt ist und nicht die Arduino Bibliotheken verwendet.

                    Dann sollte es funtkionieren und du kannst die Konfiguration an deinen Wasserzähler vornehmen. Details findest du hier: https://github.com/jomjol/AI-on-the-edge-device/wiki/Configuration und hier https://github.com/jomjol/AI-on-the-edge-device/wiki/Graphical-configuration.

                    Viel Erfolg und gerne bei Fragen melden.

                    Beste Grüße,
                    jomjol

                    E 1 Reply Last reply Reply Quote 1
                    • J
                      jomjol @hike last edited by

                      @hike sagte in Wasserzähler - Version 2 - all-in-device:

                      @jomol
                      Toll geschriebener Code. Es macht Spaß so was zu lesen und daran zu lernen.

                      Frage: Das Entwicklungssystem ist PlatformIO ?

                      Ich habe leider kaum Erfahrungen damit.
                      Gibts eine Kurzanleitung zum Import dieses Projekts?
                      Hike

                      Hallo Hike,

                      erstmal danke für dein positive Feedback. Ja - der Code ist in PlattformIO geschrieben und kompiliert. Eine detailierte Anleitung habe ich nicht - ist mein ersten Projekt in PlattformIO.
                      Ich habe alles in Windows10 aufgesetzt (ja Asche auf mein Haupt 😁 :-)). Ich programmiere alles im Editor VSCode und habe über das Plugin "PlattformIO IDE" PlattformIO installiert. Dort musst du dann das "Espressif 32" Framework installierte. Letzteres ist etwas tricky in Windows gewesen.

                      Das ganze geht auch unter Linux - temporär hatte ich die Entwicklung auch auf einem virtualisierten Linux (ich verwende Ubuntu) am Laufen, dort geht die Installation etwas leichter. Wenn ich es nochmal installiere, dann mache ich da mal ein Tutorial draus.

                      Gruß,
                      jomjol

                      coyote H Segway 3 Replies Last reply Reply Quote 0
                      • coyote
                        coyote Most Active @jomjol last edited by

                        Hey @jomjol vielen Dank für deine V2 Version.
                        Habe heute mal probiert es aufzusetzen, leider scheitere ich am Referenzbild🙄
                        Irgendwie bin ich gerade zu blöd dazu. Der ESP ist im WLAN und die HTML Seiten werden angezeigt.
                        Jetzt möchte ich eigentlich ein neues Referenzbild erstellen, geht aber nicht. Beim ersten Test Start wurde mal ein Bild gemacht von meinen Fingern, dass wird jetzt als Referenzbild angezeigt, möchte ich ein neues erstellen, wird immer wieder dieses Bild angezeigt.
                        Löschen unter File Server kann ich es auch nicht, weiß jetzt gerade die Fehlermeldung nicht aus dem Kopf, war aber was mit "Header too Long". Gibt ja auch schon ein Issue dafür und ja nutze Chrome.
                        Habe noch ein anderes Problem mit meinem zweiten ESP32 der die ganze Zeit mit der v1 lief, aber dazu später. Erst möchte ich die v2 jetzt mal am laufen haben😀

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          michaeljoos last edited by

                          Hi jomjol

                          Habe unterdessen noch weitergetestet....irgendwie hat es mich jetzt so richtig gepackt 😁
                          --> Habe die 2 Issues auf Github eröffnet

                          Wegen der Error-Meldungen im Chrome-Browser: Mir hat schlussendlich geholfen, den Browser zurückszusetzen (Cache löschen, alle Cookies, löschen...). Wieso auch immer.
                          Nun...bevor ich das aber bemerkt habe, hatte ich bereits einige Stunden versucht (bin eben auch nicht wirklich ein Experte....) dem Problem in den HTML-Dateien auf die Spur zu kommen und dabei das Script "includeHTML();" verwendet um externe HTML-Daten einzubinden. Das hat im Chrome ebenfalls geholfen. Hab dann aber auch noch ein wenig am Layout rungewerkelt:

                          bc8d329b-c8ac-43a6-984f-4ea1a692a6f8-image.png

                          Ich stelle meine HTML-Dateien einfach mal hier rein, dann kann jeder selbst entscheiden 😎 Du kannst diese natürlich auch für das Projekt weiterverwenden wenn du willst.

                          html.zip

                          Noch eine letzte Frage: Das "DeleteAll"-Feature funktioniert tiptop, danke! Bei vielen Dateien dauert es aber ziemlich lange und man weiss nicht ob was geht oder der ESP32 abgeschmiert ist. Eine Progressbar wäre da super. Weiss aber nicht ob das machbar ist? Zudem wäre nach erfolgreichem löschen noch ein "Page Refresh" gut so wie beim löschen einer einzelnen Datei.

                          Gruss
                          Michael

                          coyote 1 Reply Last reply Reply Quote 0
                          • coyote
                            coyote Most Active @michaeljoos last edited by

                            @michaeljoos sieht schick aus die Oberfläche👍
                            Hast du gerade ne Idee, da du ja schon am rumprobieren bist, warum ich kein Ref Bild erstellen kann?

                            J 1 Reply Last reply Reply Quote 0
                            • M
                              michaeljoos @coyote last edited by

                              @coyote Mmhh, bin mir auch nicht wirklich sicher. Aber versuch doch trotzdem mal mit Firefox die Datei reference.jpg im Fileserver zu löschen und dann das Referenz-Bild neu zu generieren. Im Firefox sollte das alles ohne Error-Meldungen funktionieren.

                              coyote 1 Reply Last reply Reply Quote 0
                              • coyote
                                coyote Most Active @michaeljoos last edited by coyote

                                @jomjol bin einen kleinen Schritt weiter. Habe jetzt mit Firefox die raw.jpg gelöscht, dass war das Bild, dass immer angezeigt wurde. Wann wird dieses erstellt bzw. kann ich es neu erstellen?

                                Edit: Ok, jetzt hab ich den kompletten Inhalt von img_tmp gelöscht, dummerweise auch die "leer.txt", nach reboot geht dann nix mehr😁 Ich mach mal die SD Karte neu, dann geht's weiter

                                J 1 Reply Last reply Reply Quote 0
                                • H
                                  hike @jomjol last edited by

                                  @jomjol
                                  danke für die Information. Ich habe mich mal dumm gestellt und versucht das Projekt in PlatformIO zu importieren.
                                  Hat gegen alle Erwartungen auf Anhieb geklappt.

                                  Kurze Beschreibung:

                                  1. Download als zip AI-on-the-edge-device-master
                                    1.1 extrahieren mit 7-zip
                                    1.2 umbenennen AI-on-the-edge-device

                                  1.2 in PlatformIO Projekt öffnen, geht leider nicht, es fehlt platformio.ini
                                  1.2.1 in Code exitiert platformio.ini, man öffnet Code
                                  1.2.2 voila, Projekt ist importiert

                                  2.1 Ich hab mich mal dumm gestellt und "build" ausgelöst
                                  2.2 Ein längerer Übersetzungslauf wird ausgeführt
                                  Es gibt ein paar Warnungen
                                  Ergebnis: Archiving .pio\build\esp32cam\lib89c\libjomjol_image_proc.a
                                  Archiving .pio\build\esp32cam\libe37\libjomjol_fileserver_ota.a
                                  Linking .pio\build\esp32cam\firmware.elf
                                  Retrieving maximum program size .pio\build\esp32cam\firmware.elf
                                  Building .pio\build\esp32cam\firmware.bin
                                  Checking size .pio\build\esp32cam\firmware.elf
                                  Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
                                  RAM: [== ] 22.7% (used 74412 bytes from 327680 bytes)
                                  Flash: [========= ] 85.9% (used 1671313 bytes from 1945600 bytes)
                                  esptool.py v2.6
                                  ================================== [SUCCESS] Took 212.56 seconds ==================================
                                  2.3 serial Monitor über Symbol Stecker in Symbolleiste geöffnet
                                  2.3.1 kontrolliere ob 115200 baud : Miniterm on COM6 115200,8,N,1 ---
                                  2.3.2 Alte Software reboots , ok
                                  3.0 upload:
                                  3.1 Verbinde Masse mit GPIO0 (3.Pin von rechts auf 3,3V Seite
                                  3.2 5V anlegen, ..waiting for download
                                  3.3 upload über Symbol ->
                                  3.3.1 erfolgreich geflashed
                                  3.4 SD-Karte mit dem Inhalt aus sd-card gefüllt und
                                  4.0 hurra, es läuft
                                  4.1 IP aus dem Protokoll entnommen
                                  4.2 kann auf die Web-OberFläche zugreifen.

                                  Selten so viel Glück gehabt

                                  J 1 Reply Last reply Reply Quote 0
                                  • J
                                    jomjol @coyote last edited by

                                    @coyote sagte in Wasserzähler - Version 2 - all-in-device:

                                    @jomjol bin einen kleinen Schritt weiter. Habe jetzt mit Firefox die raw.jpg gelöscht, dass war das Bild, dass immer angezeigt wurde. Wann wird dieses erstellt bzw. kann ich es neu erstellen?

                                    Edit: Ok, jetzt hab ich den kompletten Inhalt von img_tmp gelöscht, dummerweise auch die "leer.txt", nach reboot geht dann nix mehr😁 Ich mach mal die SD Karte neu, dann geht's weiter

                                    Das raw.jpg wird gemacht, sobald ein automatischer Durchlauf stattfindet --> Sollte noch einen Button zum manuellen Aufzeichnen von raw.jpg einfügen --> habe einen issue erstellt.

                                    1 Reply Last reply Reply Quote 0
                                    • J
                                      jomjol @hike last edited by

                                      @hike Genial --> Kannst du das in eine Doku schreiben (Markup Language), dann werde ich es in das Wiki mit aufnehmen!

                                      Wäre super - danke im Voraus!

                                      J H 2 Replies Last reply Reply Quote 0
                                      • J
                                        jomjol @jomjol last edited by

                                        @coyote, @hike, @michaeljoos, @watcherkb

                                        Es kommt gerade etwas Dynamik in die Entwicklung - gefällt mir! Vielen Dank an euch für das schnelle und ausgiebige Feedback. Damit es im Rollout nicht zuviele neue Versionen hagelt, habe ich soeben einen neuen Channel auf Github erstellt ("Rolling") das ist eine Kopie von v1.1.3 und jetzt mein Arbeitsverzeichnis für neue Versionen. Dort werde ich Korrekturen / Updates und Test erstellen und hochladen.

                                        https://github.com/jomjol/AI-on-the-edge-device/tree/rolling

                                        coyote 1 Reply Last reply Reply Quote 0
                                        • J
                                          jomjol @aandekant last edited by

                                          @aandekant sagte in Wasserzähler - Version 2 - all-in-device:

                                          Entschuldigen Sie mein schlechtes Deutsch. Ich komme aus Belgien.

                                          We can discuss in Englisch - no problem

                                          Ich habe einen alten Stromzähler mit einem zusätzlichen Glasfenster davor. (7-8cm vor dem Zähler) Ich habe die Standardmethode versucht, diesen Zähler mit einem optischen Sensor auf der rotierenden Scheibe abzulesen, aber mit der Doppelreflexion ist das sehr schwierig.

                                          Dann habe ich Ihre wunderbare Lösung gefunden. Ich konnte die Software (Docker-Version) vor einigen Wochen ausführen. Aber ich habe abgebrochen, als die Ausgabebilder sehr verzerrt waren. Wahrscheinlich stimmt etwas mit meine Ausrichtungsreferenzen nicht.

                                          IMG_20200731_211115.jpg (älteres Bild, es funktioniert besser, wenn die Kamera auf das erste Glas aufgesetzt wird)

                                          Bevor ich mehr Zeit darauf verwende: Halten Sie es für möglich, dass Ihre Lösung etwas von diesem Bild lesen könnte? Ein Problem, das ich sehe, ist, dass der Text weiß auf schwarz und nicht schwarz auf weiß ist?

                                          This picture should be totally fine for the image recognition. The newest version of the neural network files have been also trained for white numbers on black background. Even if it does not work perfect on the first test - it is rather uncomplicated to incorporate your digits in the training as well, as soon, as you can send me 2-3 pictures of each digit (0..9)

                                          refAfbeelding202008161605.jpg

                                          Wenn ich die Kamera höher stelle, fällt die Reflexion der LED in die Ziffern. Bei dem rgb-Streifen hatte ich das Problem, dass die erste LED grün blieb. ähnlich wie bei https://arduino.stackexchange.com/questions/32017/esp8266-nodemcu-first-ws2812-led-lights-up-green. Das Bild war aber besser.

                                          So I would recommend to go on!

                                          A 1 Reply Last reply Reply Quote -1
                                          • coyote
                                            coyote Most Active @jomjol last edited by coyote

                                            @jomjol ich glaube ich habe noch etwas Probleme mit der WLAN Verbindung, dass muss ich noch beheben und genau da sind wir beim Punkt, vllt kannst du mir helfen.
                                            Ich hatte deine "alte" Version auf einem ESP32 mit eingelöteter Brücke um die externe Antenne zu nutzen, genau den wollte ich heute flashen mit der V2, aber da tut sich nix.
                                            Laut flashtool läd er alles hoch (vorher auch schon etliche Male gelöscht), stecke ich dann die SD Karte ein und gebe ihm Spannungsversorgung, tut sich nichts. Kein LED blinken und im WLAN sehe ich ihn auch nicht. Auf dem zweiten ESP32 keine Probleme, aber der nutzt nur die interne Antenne.
                                            Hast du vllt ne Idee?

                                            EDIT: Habe jetzt auch die SD Karte neu beschrieben auf dem zweiten ESP32, jetzt sehe ich wieder dein default RAW Bild, aber ich bekomme mein Wasserzähler Bild nicht hin

                                            J 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            903
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            ai on the edge cnn esp32 hausautomatisierung neuronale netze ov2640 version 2 wasserzähler water gauge water meter
                                            235
                                            3381
                                            1464552
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo