NEWS
Wasserzähler - Selfmade
-
Nun ist das Bild scharf nach verdrehen der linse.
-
@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.
-
@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? -
@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?
-
@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
-
@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.
-
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 istMit freundlichen Grüßen
-
@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 -
@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. -
@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. ? -
@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.
-
@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. -
Hi Gents,
habe alles andere fertig Hoffe Ihr bekommt das mit dem Raspberry hin.....
Liebe Grüße -
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.
-
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?
-
@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 -
@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.
-
@daniel_iobroker Ich habe eine frisch installierte Raspbian Buster Lite Version. Dort ist Python 3.7 installiert (und 2.7).
Ich verwende Python 3.7 -
@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.
-
@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