Navigation

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

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Wasserzähler - Selfmade

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

      @jomjol
      hab endlich das docker image für den pi fertig bauen können.
      Beim start davon gibt es jedoch noch eine Fehlermeldung.

      root@orangepione:/home/pi# docker run -p 3000:3000 daniel2212/test-wasserzaehler
      Using TensorFlow backend.
      Traceback (most recent call last):
        File "./wasseruhr.py", line 3, in <module>
          import lib.ZaehlerstandClass
        File "/lib/ZaehlerstandClass.py", line 2, in <module>
          import lib.ReadAnalogNeedleClass
        File "/lib/ReadAnalogNeedleClass.py", line 1, in <module>
          import keras
        File "/usr/local/lib/python3.4/site-packages/keras/__init__.py", line 3, in <module>
          from . import utils
        File "/usr/local/lib/python3.4/site-packages/keras/utils/__init__.py", line 27, in <module>
          from .multi_gpu_utils import multi_gpu_model
        File "/usr/local/lib/python3.4/site-packages/keras/utils/multi_gpu_utils.py", line 7, in <module>
          from ..layers.merge import concatenate
        File "/usr/local/lib/python3.4/site-packages/keras/layers/__init__.py", line 4, in <module>
          from ..engine.base_layer import Layer
        File "/usr/local/lib/python3.4/site-packages/keras/engine/__init__.py", line 8, in <module>
          from .training import Model
        File "/usr/local/lib/python3.4/site-packages/keras/engine/training.py", line 21, in <module>
          from . import training_arrays
        File "/usr/local/lib/python3.4/site-packages/keras/engine/training_arrays.py", line 8, in <module>
          from scipy.sparse import issparse
        File "/usr/local/lib/python3.4/site-packages/scipy/__init__.py", line 77, in <module>
          from . import _distributor_init
      ImportError: cannot import name '_distributor_init'
      
      

      Musste noch ein paar packages auf eine ältere Version ändern, da es für den pi keine neueren Versionen gab.
      Hilft dir das weiter?
      Vor allem der letzte Eintrag ist komisch und hier wird es auch hängen denke ich.

      Bin gespannt was du dazu schreibst.

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

        @daniel_iobroker Da bist du deutlich weiter gekommen wie ich. Ich habe es bisher noch nicht geschafft, Tensorflow für Raspi zu kompilieren und die Version für Python 3.4 funktioniert auch nicht.
        Die letzte Fehlermeldung scheint eine interne Bibliothek in Tensorflow zu sein. Damit bin ich auch ziemlich ratlos.
        Ich überlege gerade, ob ich alles auf Tensorflow 1.9 oder 2.0 übertrage, denn dass sollte auf dem Raspi laufen. Ich habe aber noch keine Ahnung wieviel Aufwand das ist.
        Was hast du den als Basisimage für das Docker vewendet?

        1 Reply Last reply Reply Quote 0
        • D
          daniel_iobroker last edited by daniel_iobroker

          @jomjol
          Danke.
          Tensorflow zu kompilieren klappte bei mir auch nicht. Wie gesagt, wollte es in einer virtuellen Maschine kompilieren, aber selbst mit 10gb RAM klappte es nicht.
          Aber mit der Tensorflow für python 3.4 klappte es.

          Hmm Tensorflow 1.9 bzw 2 konnte ich nicht für den pi finden. Hab daher die gleiche version genommen, die auch du hast. Nur halt in der arm v7 version mit python 3.4
          In deinem docker file sind ja noch 4 weitere packages in das docker Image eingebunden. Die habe ich auch eingebunden und bei 2 gab es nur niedrigere Versionen. Das scipy musste ich komischerweise auch von Hand einbinden. Hab glaub ich 2 packages zusätzlich als wheel geladen und eingebunden, da beim bauen vom Image hier immer ein Problem war. Kann morgen noch mal nachsehen welche es genau waren.

          Zur Fehlermeldung : für mich klingt das so, als hätte da das scipy package ein Problem oder?

          Basisimage war python 3.4
          Du hattest ja als Basisimage python 3.7 genommen, das ginge bei mir jedoch nicht, da das fertig kompilierte Tensorflow für den raspi python 3.4 voraussetzt. Hab es zuerst trotzdem versucht, dann kam aber beim bauen gleich eine Fehlermeldung.

          Kann man eigentlich in ein laufendes bzw installiertes docker Image schauen? Eventuell müssten wir bei meinem fertigen Image nur schauen, ob die fehlende Datei eventuell eh vorhanden ist - jedoch in einem anderen Verzeichnis liegt?

          1 Reply Last reply Reply Quote 0
          • W
            watcherkb last edited by watcherkb

            @jomjol Ich bekomme dein Dockerimage nicht ans Laufen. Habe in einer Debian VM unter Proxmox Docker installiert. Pull funktioniert auch. Aber dann komme ich nicht weiter:

            admp@dockertest:~$ sudo docker run -p 3000:3000 jomjol/wasserzaehler
            [sudo] Passwort für admp:
            Using TensorFlow backend.
            WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow/python/ops/init_ops.py:97: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
            Instructions for updating:
            Call initializer instance with the dtype argument instead of passing it to the constructor
            WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow/python/ops/init_ops.py:97: calling Ones.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
            Instructions for updating:
            Call initializer instance with the dtype argument instead of passing it to the constructor
            WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow/python/ops/init_ops.py:97: calling GlorotUniform.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
            Instructions for updating:
            Call initializer instance with the dtype argument instead of passing it to the constructor
            WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
            Instructions for updating:
            Call initializer instance with the dtype argument instead of passing it to the constructor
            
            

            Habe die Nacht so stehen lassen, ohne Veränderung. Dann mit CTR-C abgebrochen, folgende Ausgabe:

            ^CStart Init Zaehlerstand
            Analog Model Init Done
            Digital Model Init Done
            Digital Model Init Done
            Wasserzaehler is serving at port 3000
            Traceback (most recent call last):
              File "./wasseruhr.py", line 88, in <module>
                httpd.serve_forever()
              File "/usr/local/lib/python3.7/socketserver.py", line 232, in serve_forever
                ready = selector.select(poll_interval)
              File "/usr/local/lib/python3.7/selectors.py", line 415, in select
                fd_event_list = self._selector.poll(timeout)
            KeyboardInterrupt
            
            
            
            J 1 Reply Last reply Reply Quote 0
            • J
              jomjol @watcherkb last edited by

              @watcherkb Welches Images verwendest du den? Die Version jomjol/wasserzaehler:rolling läuft bei mir ohne Probleme.

              Was für eine Hardware hast du den? Das Dockerimage ist für eine Intel-CPU kompiliert. Daher läuft es auch auf einen Raspi so nicht.

              W 1 Reply Last reply Reply Quote 0
              • Mikewolf
                Mikewolf last edited by

                Hallo nur zur Info läuft bei mir rolling auf ner syno emulation unter doker mit der intel xenon Cpu ok !
                wobei eigentlich der server mal startet und unter port 3000 erreichbar ist

                Mit freundlichen Grüßen

                1 Reply Last reply Reply Quote 0
                • W
                  watcherkb @jomjol last edited by

                  @jomjol sagte in Wasserzähler - Selfmade:

                  jomjol/wasserzaehler

                  es wird wohl das latest sein. Also der Standard wenn nichts anderes angegeben wird. Ich habe einen NUC i7. Ich schau mal ob ich auch was Richtung CPU einstellen kann.
                  Jedoch scheint es so als ob das Docker doch fertig lädt, bekomme aber aktuell eine falsche IP aus anderem IP-Bereich. Muss mich noch damit auseinandersetzen. Docker ist neu für mich 🙂

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

                    @watcherkb Kurzer Zwischenstand: ich schaffe es gerade nicht, das ganze auf Raspi zum Laufen zu bringen. Scheitere aktuell schon an OpenCV 😞
                    Bin die nächste Woche aber komplett verplant und habe daher keine Zeit, daran zu arbeiten.
                    Wenn ihr es auf dem Raspi hinbekommt, wäre ich mehr als gespannt, wie es geht.

                    W 1 Reply Last reply Reply Quote 0
                    • W
                      watcherkb @jomjol last edited by

                      @jomjol keine Eile. Ist klar dass alles in der Freizeit passiert 😉
                      Frage mich aber ob es auch ohne Docker geht, einfach auf einem Debian System z.B. ?

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

                        @watcherkb Prinzipiell ja, habe es hier zur Programmierung ja auch auf einem Windows System zum Laufen gebracht. Leider ist die Installation von Tensorflow und tlw. auch OpenCV etwas tricky, insbesondere Tensorflow ist abhängig von den Prozessoren, da es Graphikkarten und erweiterte Befehlssätze (AVX, AVX2, ...) unterstützt und dass muss dann jeweils zum Prozessor passen.

                        W 1 Reply Last reply Reply Quote 0
                        • W
                          watcherkb @jomjol last edited by

                          @jomjol ok bin jetzt ein Stück weiter. Habe jetzt alles auf Debian Template am Laufen. Jedenfalls bekomme ich schonmal folgendes auf der Seite angezeigt: Error - Problem during Imageload (file not exists or timeout)
                          Musste ein paar Anpassungen an py-Script machen. Dann versuche ich mal die Camera anzuschließen und dann gehts weiter.

                          1 Reply Last reply Reply Quote 0
                          • pfried
                            pfried last edited by

                            Hi Gents,
                            habe alles andere fertig 😳 Hoffe Ihr bekommt das mit dem Raspberry hin.....
                            Liebe Grüße

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

                              Ich hatte am Wochenende auch Tensorflow und OpenCV auf dem Raspi am laufen. Das waren erstmal die großen Hürden. Werde am Wochenende versuchen alles zusammen zu bauen und dann eine Anleitung für ein Raspberry Pi 3 zu posten.

                              1 Reply Last reply Reply Quote 1
                              • D
                                daniel_iobroker last edited by

                                So Leute. Heute ist mein esp32 auch gekommen. Werde morgen gleich mal schauen, was ich zusammenbringen werde.

                                @watcherkb was musstest du denn im python Script ändern?

                                @jomjol kannst du uns schon verraten, was wir ungefähr machen müssten? Ich glaube mit dem docker kommen wir beim raspi nicht weiter oder?

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

                                  @daniel_iobroker, @watcherkb, @pfried
                                  Hallo zusammen,
                                  ich habe jetzt einen Server auf einem Raspberry Pi3 am Laufen. Detailierte Installationsanleitung findet ihr in Github in einem speziellen Branch für den Raspberry:

                                  https://github.com/jomjol/water-meter-system-complete/tree/Raspberry-V3

                                  Es ist sicher nicht die eleganteste und leanste Installation, da ich erstmal etwas zum Laufen bringen wollte.

                                  Achtung: ihr müsst auch den Code von dort verwenden, da ich eine kleine Änderung an einer der Libraries machen musste, führe ich einem der nächsten Releases dann zusammen.

                                  Hoffe es klappt bei euch auch!

                                  Beste Grüße,
                                  jomjol

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    daniel_iobroker last edited by daniel_iobroker

                                    @jomjol
                                    Danke für deinen Post.
                                    Hab heute schon einiges geschafft. Gehäuse ist gedruckt, esp32-cam ist geflasht und funktioniert mit deiner Software.
                                    Dann ging es an den pi. Hab den ganzen Tag über deinen Server zu laufen gebracht (python 3.5). Musste dann auch in der wasseruhr.py unten beim server was anpassen, da sich das ab python 3.6 geändert hat. Nach dem anpassen funktionierte der Server. Hab dann die IP com esp in der config eingetragen und wenn ich dann die Serveradresse aufgerufen habe, hat der esp32 ein Bild gemacht. Dann gab es aber einen Fehler mit dem Pfad. Irgendwie konnte der Server das aufgenommen Bild nicht finden.

                                    Hab vorhin gesehen, dass du hier im Forum eine Anleitung für den Pi gemacht hast. Hab das auch gleich ausprobiert. Hatte hier wieder den gleichen Fehler, dass der Server nicht gestartet werden kann. Müsste jetzt wieder das gleiche in der wasseruhr.py umschreiben. Bin mir aber sicher, dass dann der gleiche Fehler kommen wird, wie bei mir vorhin.

                                    Hier ein Ausschnitt davon

                                    Instructions for updating:
                                    Call initializer instance with the dtype argument instead of passing it to the constructor
                                    Analog Model Init Done
                                    Digital Model Init Done
                                    Digital Model Init Done
                                    Traceback (most recent call last):
                                      File "wasseruhr.py", line 86, in <module>
                                        with socketserver.TCPServer(("", PORT), SimpleHTTPRequestHandler) as httpd:
                                    AttributeError: __exit__
                                    

                                    Jetzt zu meiner Frage. Welche python3 version hast du auf dem pi am laufen?

                                    python3 --version
                                    

                                    Ich denke du wirst mindestens 3.6 haben oder?
                                    Bei mir ist derzeit noch 3.5 installiert und wenn ich sudo apt-get install python3 ausführe, dann wird mir angezeigt, dass ich schon die neueste version habe.
                                    Muss mal schauen, dass ich eine höhere Version installiert bekomme, dann werden die Fehler wohl erledigt sein.

                                    BTW: das thingiverse file is super, passte perfekt bei mir 🙂 Danke dafür.

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

                                      @daniel_iobroker Ich habe eine frisch installierte Raspbian Buster Lite Version. Dort ist Python 3.7 installiert (und 2.7).

                                      cccb6bb8-4e30-40d4-91fe-a1dec6b262f8-grafik.png
                                      Ich verwende Python 3.7

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        daniel_iobroker last edited by

                                        @jomjol
                                        ok, habe ich mir gedacht. Ich hab das ganze auf meinem alten pi 3b ausprobiert, wo noch raspbian strech installiert ist. Hier ist python 3.5 drauf. Der Hintergrund ist, dass ich das zuerst auf dem test-raspi probieren möchte und wenn alles klappt, dann auf dem pi4 übertragen, auf dem das produktive system läuft.

                                        Werde daher gleich mal auf raspbian buster updaten und dann probieren. Bin aber zuversichtlich, dass es klappen wird.

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          daniel_iobroker last edited by daniel_iobroker

                                          @jomjol
                                          so, wie versprochen. Bin jetzt mit dem update fertig. Hab jetzt die gleiche python version wie du.

                                          Server startet wie erwartet ohne Anpassung der wasseruhr.py Datei.
                                          Natürlich habe ich deine Daten von Github geladen.

                                          Wenn ich jetzt aber ein Bild über den server bzw. esp32 mache, habe ich wieder den gleichen Fehler wie gestern. Das Bild wird anscheinend nicht gespeichert oder der Pfad ist falsch.

                                          Hier der log, wenn ich die Seite http://192.168.8.202:3000/wasserzaehler.html aufrufe:

                                          Process Process-1:
                                          Traceback (most recent call last):
                                            File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
                                              self.run()
                                            File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
                                              self._target(*self._args, **self._kwargs)
                                            File "/home/pi/wasserzaehler_neu/lib/LoadFileFromHTTPClass.py", line 48, in ReadURL
                                              urllib.request.urlretrieve(url, target)
                                            File "/usr/lib/python3.7/urllib/request.py", line 257, in urlretrieve
                                              tfp = open(filename, 'wb')
                                          FileNotFoundError: [Errno 2] No such file or directory: './image_tmp/original.jpg'
                                          192.168.8.102 - - [02/Nov/2019 10:38:25] "GET /wasserzaehler.html HTTP/1.1" 200 
                                          

                                          Hattest du den Fehler auch?

                                          BTW, in github hast du noch einen kleinen fehler. Das ausführen des Programms geht nur mit python3 wasseruhr.py anstelle von python3 wasserzaehler.py

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

                                            @daniel_iobroker sagte in Wasserzähler - Selfmade:

                                            original

                                            Das Problem ist, das es das Bild in "./image_tmp/original.jpg" nicht gibt. Mir fallen zwei Ursachen spontan ein:

                                            1. Der ESP32-CAM ist noch nicht richtig konfiguriert in der Config.ini
                                            2. Das Verzeichnis ./image_tmp existiert nicht

                                            Zu eins kannst du die URL hinter URLImageSource=... direkt in einem Brower testen. Dort sollte das Bild vom ESP32-CAM kommen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            635
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            how-to wasser wasserzähler
                                            48
                                            1089
                                            313914
                                            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