NEWS
Wasserzähler - Selfmade
-
@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
-
@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:
- Der ESP32-CAM ist noch nicht richtig konfiguriert in der Config.ini
- 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.
-
@daniel_iobroker said in Wasserzähler - Selfmade:
Also in der URLImageSoure steht:http://192.168.8.122/capture_with_flashlight
Wenn ich diesen Pfad im Browser eingebe, dann kommt das Bild vom ESP32-CAM.zu 2.: ich weiß gar nicht, wo das Verzeichnis sein soll? Muss ich dieses manuell erstellen?
Wenn ich über den Server das aktuelle Bild holen will, dann seh ich, dass der ESP32-CAM das Bild macht. Ob das gespeichert wird und vor allem wo kann ich nicht sagen.
-
@daniel_iobroker
Du musst die komplette Verzeichnisstruktur unter "code" anlegen, inkl. des leeren Verzeichnisses "image_tmp" -
@jomjol
aaaah ok, jetzt klappt es.
Den ganzen "Code" Ordner Inhalt hatte ich schon am pi, jedoch ist auf Github der leere Ordner image_tmp nicht vorhanden.
Hab den jetzt erstellt und jetzt klappt es auchWerde jetzt mal die Konfiguration angehen.
Danke