Wasseruhr auslesen mit ESP32-Cam und Raspberry

    • Official Post

    Hallo Zusammen,


    nachdem ich erfolgreich meinen Stromverbrauch erfasse war es an der Zeit dem Wasserverbrauch zu Leibe zu Rücken. Eigentlich wollte ich das alles selber machen, und hatte mich schon seelisch und moralisch darauf eingestellt, als ich ich zufällig auf Thingiverse auf dieses Projekt stiess. Da war schon einer fertig - sehr schön, weniger Arbeit für mich :cool:.

    Ich möchte hier nur noch mal meine Installation + Konfigurationen beschreiben. Der Support vom Ersteller jomjol findet hier statt. Dank Web3.0 Blödsinn wie continuous scrolling ist die Seite komplett unbrauchbar, da man nicht mal alles durchsuchen kann.


    Was brauchen wir:


    • ESP32-Cam (China oder 16€ auf Ebay)
    • Raspberry Pi 3b+ oder höher
    • Ein 10cm Rohr im passenden Durchmesser oder dieses Ding, was auf die Wasseruhr gestellt wird.
    • eine Datenbank eurer Wahl + Visualisierung eurer Wahl (Ich nutze influxdb + grafana)


    Leider passt das o.a. Ding nicht auf meine Wasseruhr, da ich noch so einen Deckel drauf habe, der nur mit Gewalt abzubrechen geht. Ich habe mir daraufhin dieses Teil (eine 8,6 x 10cm Röhre mit breiterer Auflage unten)


    gezeichnet, gedruckt (anschliessend mit Zange die Aussparung für den Wasseruhrdeckel weggeschnitten - und ja, das hätte ich beim Zeichnen gleich bedenken sollen :bussi2: )und fachmännisch mit Panzertape an der Wasseruhr befestigt. Als Deckel + Halterung kamen die Originalteile aus dem Link zum Einsatz. Das ganze sieht dann so aus:


    Der ESP wurde mit diesem Code bespielt. Damit die Kamera auch ein Bild lieferte musste ich diesen Teil im Code anpassen


    Code: JomjolGitESP32CamComm.h
    // Select camera model
    //#define CAMERA_MODEL_WROVER_KIT
    //#define CAMERA_MODEL_ESP_EYE
    //#define CAMERA_MODEL_M5STACK_PSRAM
    //#define CAMERA_MODEL_M5STACK_WIDE
    #define CAMERA_MODEL_AI_THINKER

    Anschliessend noch in der ESP32-CAM_Server-GitHub.ino Wlan SSID + Pw eintragen und mit folgenden Einstellungen flashen.


    Durch Aufrufen von http://IP_DES_ESP32/capture_with_flashlight kann man ein Bild anfordern und siehe da, es ist unscharf :conf:.

    Wenn man mit einem Skalpell den kleinen Tropfen kleber an der Kamera löst, kann man diese drehen und so den Fokus verändern. Ich musste eine 300° Drehung gegen den Uhrzeigsinn drehen damit es scharf wird. (Einfach durch Try and Error ausprobieren).



    Damit wäre Hardwareteil schon geschafft. Ich hab bei mir im Keller recht schlechten WLAN Empfang (ich erreiche den ESP öfter nicht)

    woraufhin ich mir noch eine externe Antenne (Affiliate-Link) bestellt habe.(noch unterwegs).


    Zum Softwareteil:


    Der Entwickler weiss selber nicht mehr richtig wie er "damals" opencv und tensorflow manuell installierte hatte und bietet deshalb ein Docker image an, womit sich der Aufwand für einen selbst in Grenzen hält. Ich habe gut 2 Tage damit verbracht rauszufinden warum das "latest" image auf meinen Pi eine Fehlermeldung nach der anderen schmiss.

    Das X86/64 latest image funktionierte an meinen Notebook auf Anhieb (für die die es auf ner Synology installieren wollen). Die aktuelle "beta" (raspi-rolling) wiederum funktionierte wundersamer weise.


    Auf dem pi installiert und startet man das ganze per

    (Noch nicht ausführen!)

    Code
    docker run -d -p 3000:3000 --mount type=bind,source=/home/pi/wasser/config,target=/config --mount type=bind,source=/home/pi/wasser/log,target=/log jomjol/wasserzaehler:raspi-rolling

    (Docker installation vorausgesetzt)

    In /home/pi/wasser/config kommen alle Dateien, die im Laufe der Konfigurationserstellung anfallen. Da diese alles andere als Selbsterklärend für mich war, hier mal die groben Schritte.


    Wir wechseln wir auf die Seite http://wasserzaehler.ignorelist.com/preparation/ und klicken auf . Dann macht ihr ein Bild mit eurem ESP und speichert es 3x (ref0,jpg,ref1.jpg,ref2.jpg) und ladet die Bilder anschliessend hier hoch.


    Klickt dann im Header auf Reference Image und ladet im Bereich



    einfach noch mal ref0.jpg aus dem vorherigen Schritt hoch. Dreht euch das Bild über


    so zurecht, dass die Zahlen halbwegs grade ausgerichtet sind


    Klickt dann auf rechts neben dem Bild.

    Jetzt müsst ihr 3 unveränderliche Punkte auf eurem Bild finden und diese angeben. Rechts ref0.jpg auswählen und einen Rahmen um z.B.


    ziehen. Anschliessend auf Save klicken. Dann zu ref1.jpg wechseln und das ganze mit einem anderen Schriftzug wiederholen, für ref2.jpg das gleiche.

    Dann oben im Header auf Digits wechseln und alle bestehenden Rahmen, durch klick auf delete löschen. Die 5 Felder werden nach folgendem Schema erfasst:

    • Bild benennen (z.B. Bild1)
    • rename
    • Rahmen um die erste Zahl ziehen (rechts beginnen) und ausrichten
    • save
    • new


    Wenn ihr 5 Rahmen habt, klickt oben auf Analog und wiederholt die oberen Schritte für die 3-4 Anzeigen.

    Wechselt Parameters tab. Dort hab ich nur eine Einstellung gemacht. Bei URLImageSource den Link zu eurem ESP eingeben und Haken setzen. Abschliessend mit save speichern.




    Zu guter Letzt findet ihr im Config.ini tab einen Knopf. Drücken und den Inhalt des Zip Files anschliessend nach /home/pi/wasser/config kopieren.

    Jetzt könnt ihr den o.a. docker Befehl absetzen und euch nen Kaffee holen. Mein Pi3 hatte während des downloads und der Installation gut zu rödeln und war zeitweise nicht ansprechbar.


    Wenn ihr nun http://IP_DES_DOCKER_PI:3000/wasserzaehler.html?full im Browser eingebt, sollten die richtigen Werte neben den Bildern stehen.




    Ein Aufruf von http://IP_DES_DOCKER_PI:3000/wasserzaehler.html?single Liefert nur die Ausgelesene Zahl, welche dann durch dein Script weiterverarbeitet werden kann.

    ....Aber davon erzähle ich euch ein anderes mal.


    TLTR;


    Bastel, Bastel, Tipp Tipp, Klick Klick.

  • dbv

    Approved the thread.
    • Official Post

    In der Config kann man nur einen einen Link eingeben. Da es am Ende nur ein PythonScript ist, sollte man das auch so umbiegen können, dass er 2 Links nimmt.


    VeryPrivat in den "Reserviert" Post kommt der Grafana part ;)

  • Hallo dbv,

    ich habe ein paar Fragen speziell zu dem Kameramodul, das ich mir mittlerweile auch angeschafft habe:


    Du schriebst, daß du den Kleber entfernt hast und dann die Kamera fokussieren konntest. Den Kleber konnte ich auch entfernen und habe dann mit viel Kraft und großer Vorsicht die Kamera leicht drehen können ohne wirklich nennenswerten Erfolg. Hast du einen Tipp wie man die Kamera am einfachsten drehen kann und glaubst du, daß die chronische Unschärfe der Kamera im Auslieferungszustand durch Fokussieren verbessert werden kann? Deine Bilder von der Wasseruhr sind ja durchaus verhältnismäßig scharf.

    Hast du die Antenne mittlerweile erhalten und eingesetzt? Zum Aktivieren der externen Antenne muß man ja diese winzige Brücke neben dem Antennenanschluß umlöten, das halte ich für sehr schwierig. Es soll auch Module geben, bei denen standardmäßig díe externe Antenne aktiviert ist, diese sind aber wohl schwer zu finden denn auch die kompletten Sets mit Antenne sind für die interne Antenne konfiguriert. Das schreiben dann allerdings erst die Käufer in ihrem Feedback.

  • Hallo dbv,


    Danke für die ausführliche Anleitung.

    Habe mir die Umgebung für den Wasserzähler nach deinen Vorgaben installiert.

    Probleme habe ich mit der unschärfe der Kamera, bei beiden Exemplaren die ich bestellt habe, dies ist aber nicht dein Problem.

    Du beschreibst, dass man die Referenzbilder nach dem Hochladen noch passend drehen kann. Diese Option finde ich leider auf der Website nicht.

    ?thumbnail=1

  • mir fehlt irgendwie eine Bestelliste,

    gibt es keinen ESP32 mit Cam Anschluß & USB Versorgung und auch zum Programmieren?

    Muss es immer über den FTDI Adapter gehen?


    egal habe mal bestellt......


    meine Wasseruhr ist im Keller im MF Haus abgeschlossen und es nervt wenn ich jährlich den Keller umräumen muss zur Jahresablesung, ich hoffe mal das es nicht auch eine ewige Programmiergeschichte wird :lol:

    (ich dachte ja eher an ein softwarefreies Periskop U-Boot)

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Edited 4 times, last by jar ().

  • Du musst das ablesen ja nicht automatisieren. Wenn das Ding da unter laeuft (ggf. noch irgendwie mit deep sleep die meiste Zeit), dann kannst du dir das Bild auch einfach selbst anschauen, und ablesen.

  • Du musst das ablesen ja nicht automatisieren. Wenn das Ding da unter laeuft

    ja wenn, kennst du Abstürze und Stromausfall oder Hardwareversagen, warum auch immer.


    Ein Spiegelperiskop läuft ewig :lol: so wie mein direct drive Plattenspieler mit Vinyl schon 45 Jahre, kein CD/DVD Spieler &| CD/DVD hat solange durchgehalten!


    aber nun gut das Teil ist bestellt, mal sehen........

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Hofei: Meine Frage war nach dem Pre-Rotate Angle Button. Dieser sollte laut Beschreibung auf der Website zu sehen sein.

  • Ich finde das Tool SEHR unuebersichtlich. Was du dazu tun musst: ein RAW Reference Image anlegen. Dann kannst du das Alignment bestimmen, und ein Referenz-Bild erzeugen.

  • Hübsches Projekt - aber natürlich relativ aufwändig - mit Pi und Kamera usw...
    Gibt es eine einfachere und preiswertere Idee für die Aufgabe? Am besten was robustes mit einem µC?

    Ich hab mal grob gegoogelt aber kaum was gefunden. Teuere Zähler mit Impulsausgang. Leute, die die Deckel der Wasserzähler geöffnet und irgendwas gefrickelt haben... sonst nichts Vernünftiges.


    Wie könnte man die Zahlen sonst sicher erkennen oder die Umdrehungen irgendwelcher Zahlenrädchen oder so sicher zählen?

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Da kosten mich zwei Zähler mehr als mein jährlicher Wasserverbrauch... das wäre irgendwie unsinnig.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Hübsches Projekt - aber natürlich relativ aufwändig - mit Pi und Kamera usw...
    Gibt es eine einfachere und preiswertere Idee für die Aufgabe? Am besten was robustes mit einem µC?

    ich verstehe noch nicht wozu der PI sein soll, der ESP hat die Cam und stellts ins Netz.

    OK es wird offensichtlich OCR benötigt, reicht der ESP nicht dazu?

    Ich bin nicht sicher ob es offene Quellen für OCR gibt, denke sollte es aber.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • ich verstehe noch nicht wozu der PI sein soll, der ESP hat die Cam und stellts ins Netz.

    OK es wird offensichtlich OCR benötigt, reicht der ESP nicht dazu?

    Ich bin nicht sicher ob es offene Quellen für OCR gibt, denke sollte es aber.

    Du irrst. Dazu reicht der ESP32 nicht.

    • Official Post

    Aufwendig ist es nun wirklich nicht. Esp + Cam ist ein preiswertes Gerät und der Docker Pi läuft eh. Und den Pi kann man sich sparen wenn man das OCR am heimischen Pc selbst macht. Dann hat man natürlich mehr Entwicklungsarbeit und die Regelmäßige Speicherung der Daten muss man irgendwie lösen.


    Das Ganze läuft jetzt 3 Monate bei mir. Und bis auf einen selbstverschuldeten Rundungsfehler in meinem Speicherscript läuft das ganze sehr stabil. 1x musste ich den ESP neustarten weil er keine Werte mehr geliefert hat.

    Hast du die Antenne mittlerweile erhalten und eingesetzt? Zum Aktivieren der externen Antenne muß man ja diese winzige Brücke neben dem Antennenanschluß umlöten, das halte ich für sehr schwierig.

    Sorry für die späte Antwort, ist an mir vorbeigangen. Namen immer mit @ davor schreiben ;) - dbv - dann krieg ich auch ne Benachrichtigung.

    Antenne ist eingesetzt und funktioniert um Faktor 100 besser als das onboard Wlan. Dieses Nano SMD Bauteil dort zu umzubiegen sieht haarig aus, ist aus es auch - klappte aber, mit Lupe und kleiner Lötspitze, auf Anhieb.

    Du schriebst, daß du den Kleber entfernt hast und dann die Kamera fokussieren konntest. Den Kleber konnte ich auch entfernen und habe dann mit viel Kraft und großer Vorsicht die Kamera leicht drehen können ohne wirklich nennenswerten Erfolg.

    Ich hab ne Kombizange genommen zum drehen. Dann ging das auch ;). Und man muss echt weit drehen bevor sich am Fokus was verändert.

  • Hatte ich vor Jahren schonmal vorgestellt: Man kann den kleinen Spegel detektieren, der mit dem kleinen Rdchen rotiert.

    RE: Differenzmessung mit Reflex-Lichtschranke

    :bravo2:nicht uninteressant!

    kann den ESP32 aus einem deep sleep wecken, dann muss der nicht immer wach sein! spart Batterie oder Akku.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)