NEWS
Wasserzähler - Selfmade
-
@daniel_iobroker Beim Stromzzähler verwende ich eine kommerzielle Lösung von Homematic. Klappt ganz gut und dort wo mein Zähler ist, kann ich auch nicht gut eine Kamera anbringen
-
Darf ich bitte an dieser Stelle als völliger Neuling eine Frage um weitere Schritte stellen:
Ich habe mir einen ESP32-CAM geholt und diesen auch wider erwarten mit der Firmware bespielen können, das war schon ein sehr großer Erfolg für mich
Jetzt stehe ich aber an, denn ich muss nun, wenn ich das richtig verstanden habe, meinen Raspberry 4 auf dem auch meine IObroker Instance läuft dazu bekommen das Kamerabild zu holen und zu verarbeiten.
Daher meine Frage: was muss ich am Raspberry 4 machen damit der Code läuft und am Schluss im IOBroker die Werte in die Variablen eingetragen werden?
Ich hoffe auf die Nachsicht und auf den Support von einem Wissenden, der mir vielleicht eine Step by Step Anleitung zukommen lassen kann. Es werden nämlich oft Schritte gesetzt, die für jeden hier im Forum selbstverständlich sind, aber für jemanden, der sich gerade erst einmal die Arduino IDE installiert hat um einen ESP32 zu flashen, oft nächtelanges recherchieren bedeutet.
Mich fasziniert dieses Projekt und ich würde es auch gerne umsetzen können.
Liebe Grüße aus Wien
PaulPS.: Habe auch schon von @mcchickents das Gehäuse dankenswerterweise ausgedruckt bekommen.
-
Hi ich bin auch kein Software Spezialist. Ich würde es aber so lösen. jomjol hat einen Container für die Software Plattform "Docker" erstellt. Mit dem Container auf der Plattform Docker ist es nun möglich den "Server" innerhalb weniger Minuten zum laufen und was noch wichtiger ist zum updaten zu bringen.
Bei mir läuft der Docker auf einer Synology Nas es ist aber auch möglich den Docker auf einem Pi zu instalieren.
Ob es jetzt gut ist den Iobroker sowie ein Docker gleichzeitig auf einem Pi zu installieren kann ich nicht beurteilen. CPU Ram Architektur usw.
Hier mal ein video wie es auf dem Pi geht.
https://www.youtube.com/watch?v=nBwJm0onzeoWenn du einen Docker am laufen hast ist die Einrichtung von dem Container fast ein Kinderspiel.
Gruß Julian
-
@mcchickents naja, ganz so einfach ist es leider nicht => siehe meine Beiträge oben.
Ich versuche gerade, einen docker container für den raspi zu erstellen.
-
oh da hast du natürlich recht.
Dann müsste jemand auf einem pi das zeug erst einmal manuell installieren und danach ein Container abbild erzeugen.
so wie ich das aber bisher verfolgt habe scheint man für die manuelle Installation schon etwas fortgeschrittene Linux Skills zu benötigen. -
Jetzt wisst Ihr von was ich rede! ... alles nicht so einfach für einen Anfänger.
Vielleicht kann man ja das am Raspberry 4 auch ohne Docker lösen, aber wie schon gesagt, halt Schritt für Schritt beschrieben .....Habe mal schon das pip3 Ding von oben gemacht, das lief durch
-
@pfried Erstmal super, dass deine ESP32-CAM schon läuft. Der Container muss halt für einen Raspberry installiert sein. Ich überlege gerade, ob ich meinen einzigen Raspi mal kurz mit einem anderen System bespiele und es dann einfach mal probiere. Suche mir mal eine freie SD-Karte ...
-
@pfried Raspberry 3 läuft, Docker ist installiert - jetzt muss ich aber erstmal auf ein Konzert, also geht später weiter ...
-
@jomjol Docker am Raspi ist kein Problem. Nur der Dockercontainer von dir wurde mit einer amd64 Architektur erstellt. Der Raspi hat aber arm Architektur.
Bin gerade dabei, das Tensorflow für den rpi mit python 3.7 zu compilieren. Dauert aber ziemlich lange..Danach wollte ich mir dein Github clonen und das dockerfile anpassen und die neue Tensorflow Datei ins Github Verzeichnis holen - Anschließend das Docker Image generieren.
Mit Tensorflow und python 3.4 wäre das ganze schneller, weiß aber nicht, ob das mit deinen restlichen Files funktioniert, daher das neue compilieren mit python 3.7
-
@daniel_iobroker Machst du ein crosscompile oder compilierst du direkt auf Raspy?
-
@jomjol Habe ein crosscompile versucht. Den ganzen Nachmittag und Abend lang habe ich versucht, das zu compilieren. In einer virtuellen Maschine. Habe im letzten Versuch schon 10GB RAM zugewiesen und selbst da klappte es nicht. Der RAM wurde immer wieder voll inkl. Auslagerungsdatei.
Hab jetzt ein fertiges Ternsorflow mit python 3.4 geholt und baue gerade das docker image für den pi. Bin gespannt ob das funktioniert. Ist mein erster Versuch mit Docker
-
Eure Fotos von der ESP32Cam sind so scharf. Bei mir sieht noch etwas trübe aus. Hat da jemand ne Idee?
Habe bisher alles nach Anleitung gemacht. Also die mechanischen Teile mit dem 3D-Drucker erstellt, ESP32 mit Cam geflasht.
Mit dem Befehl http://192.168.178.54/capture_with_flashlight erstellt er auch ein Bild.
-
@ecki945 Wie das mit dem fokussieren geht, steht hier mehrfach im Thread
-
Danke mal. Les den thread nochmal durch
-
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.