Wasseruhr smart machen

Lesezeit: ca. 7 Minuten

Ich wollte gerne unseren Wasserverbrauch überwachen, auch um bei einer Leckage rechtzeitig genug gewarnt zu werden. Aber… unsere Wasseruhr ist strutzedumm! Die hat nicht einmal einen Magnet für ein Reed-Relais oder einen Halter für eine Lichtschranke. Zum Glück gibt es aber findige Bastler und am Gemeinwohl interessierte Genies (aus meiner Sicht), die da was zusammengecodet haben. Jomjol ist zum Beispiel so ein Typ. Der hat “Digitizer – AI on the edge – An ESP32 all inclusive neural network recognition system for meter digitalization” geschrieben. Das Programm läuft auf einem winzigen ESP32, der eine eingebaute Kamera besitzt und wohl mit seinen paar Megahertz in der Lage ist, künstliche Intelligenz einzusetzen. Mir ist egal, wie genau er das macht, aber das Ergebnis ist absolut faszinierend! 🙂
“WILLKOMMEN (dramatische Pause) IN DER ZUUUKUNFT!”
Hach! Das wollte ich schon immer mal schreiben!


Ein ESP32-CAM mit einem Stromversorgungs- und Programmiermodul. Moment… ist das ein Fussel links oben? Ja, das Ding ist schon echt klein.

Der ESP!
Den ESP habe ich auf Ebay bei janfriedrichelektronikversand bekommen. So sperrig der Ebay-Name ist, so freundlich und zuvorkommend ist aber der gute Mann.
Das Set nennt sich “Starterset HK-ESP32-CAM-MB | ESP32-CAM + OV2640 Kamera + CH340G USB2Serial” und kostet mit Versand gerade mal 13 Euro.

Scharf stellen!
Die Kamera auf dem Board ist aber auf eine größere Entfernung eingestellt, als wir benötigen. Wir müssen also die Verklebung mit einem Skalpell rundum anritzen und die Linse ca 1/4 Umdrehung gegen den Uhrzeigersinn drehen, damit die Kamera aus einer halbwegs akzeptablen Entfernung das Ziffernblatt der Wasseruhr scharf stellen kann.

Zubehör!
Dazu brauchen wir noch ein einfaches, kleines Micro-USB-Netzteil mit 500 mA (0,5 A, 2,5 Watt) und eine maximal 16 GB große microSD-Karte.
Die Gesamtkosten liegen bei ca. 21 Euro.

Ach ja… gut wäre ein 3D-Drucker.
Man kann aber auch aus einem passenden Abwasserrohr (oder einer gerollten Pappe) und einem Stück Pappe für den Deckel ganz einfach und schnell eine Halterung für den Wasserzähler bauen.
Ich habe mit PETG die Halterung gedruckt, die Jomjol dafür entworfen hat. Leider hatte ich kein schwarzes PLA vorrätig – schwarz sollte es aber schon sein, sonst werden die Aufnahmen überbelichtet.


Naja, ich bin nicht so der PETG-Drucker unter dem Herrn. Sieht nicht so geil aus. Aber funzt.
Nachtrag: Jo, habe neulich ein Ersatzteil für meinen RC-Car gedruckt und dabei 240 Grad gefahren. Das Ergebnis war absolut super! Sah fast aus wie aus Carbon.


Ja, das sieht an den Rändern (Unterseite) der Einzelteile noch blöder aus, aber ich habe das ganze Ding ohne Support direkt in die Luft gedruckt.
Allerdings sind mir gleich bei der Anprobe auf der Wasseruhr einige der “Clipse” abgebrochen. Vielleicht muss ich heißer drucken?

Aber kümmern wir uns erstmal um die Installation!
Naja, das geht schon extrem schnell.
Viel schneller uns einfacher, als ich es erwartet hatte. Ich habe so einen ESP32 noch nie in der Hand gehabt, geschweige denn mit einer neuen Firmware bedampft.

Die Anleitung ist für ein Debian-Linux. Ich benutze seit 2005 kein Windows mehr. Für Windows gibt es aber Programme mit grafischer Oberfläche, die das Gleiche (nur umständlicher) machen, was ich unter Ubuntu mit ein paar kopierten Befehlszeilen in wenigen Sekunden erledige. Bevor die Windows-Jünger ihre Programme aus dem Netz geladen, installiert und am Start haben, bin ich schon lange fertig. 😉

Also, für Euch durchgeschwitzte, mausschubsende, virenliebende, Sicherheit installierende und optimierungstoolsgläubige Windows-Fanboys: Ihr braucht das Flash-Download-Tool von Expresif. Damit die Firmware des ESP löschen und mit der firmware.bin aus dem unten angegebenen Link neu flashen.

Windows 10 hat aber auch die Powershell (als Admin starten!), die Linux-Kompatibilität bereitstellt. Ihr könnt also auch einfach “sudo apt-get install” durch “npm install” ersetzen, schätze ich mal. Aber keine Ahnung, ob Windows pip und esptool in den Quellen hat. Könnt ja einen Kommentar hier drunter schreiben, ob das klappt. Aber mal ehrlich: Mit Windows werdet Ihr in der Smarthome-Welt nicht weit kommen. Alleine um Tuya-Geräte OTA mit Tasmota zu flashen, müsst Ihr ein Linux am Start haben. Da könnt Ihr auch gleich komplett zu Ubuntu wechseln, habt keinen Stress mehr mit dauernden Update-Neustarts und braucht keine Angst vor Viren und anderer Schadsoftware zu haben. Die Programme (oder ähnliche), die Ihr nutzt, gibt es auch für Ubuntu. Und, hey!, Ihr seid damit auch vollkommen legal unterwegs und braucht keine Programme mehr zu klauen. Super, oder?


Firmware laden!

https://github.com/jomjol/AI-on-the-edge-device

Im Downloads-Verzeichnis entpacken.


Terminal öffnen!


Pip installieren!

sudo apt-get install python3-pip

 

ESP-Tool installieren!

sudo pip install esptool

ACHTUNG: ESP-Tool NICHT aus den Paketquellen der Distribution installieren!

In das Verzeichnis der geladenen Firmware wechseln!

cd ~/Downloads/AI-on-the-edge-device-master/firmware/

 

Den ESP32 via USB an den Rechner anschließen und:

esptool erase_flash
esptool write_flash 0x01000 bootloader.bin 0x08000 partitions.bin 0x10000 firmware.bin

 



Eine Micro-SD-Karte mit FAT32 formatieren.
Zum Beispiel mit Gnome Disks.

In Downloads/AI-on-the-edge-device-master/sd-card/ die Datei wlan.ini anpassen und wieder speichern.
Einfach die SSID und das Passwort des eigenen Netzwerkes eintragen:

nano ~/Downloads/AI-on-the-edge-device-master/sd-card/wlan.ini

Die folgenden Zeilen ändern:

ssid = "SSID"
password = "PASSWORD"

Optional:

hostname = "wasseruhr"
ip = "XXX.XXX.XXX.XXX"
gateway = "XXX.XXX.XXX.XXX"
netmask = "255.255.255.0"

Den Inhalt des Verzeichnisses “/SDCard” auf die leere SD-Karte kopieren und in den ESP32 stecken.
Kurzer Test auf dem Schreibtisch: Läuft das Ding? Der ESP32 braucht nur wenige Sekunden, um zu booten und sich am WLAN anzumelden.
Die IP-Adresse findest Du heraus, in dem Du nach den Netzwerkgeräten in Deinem Router schaust, das Tool “Angry IP Scan” benutzt, oder Du warst so clever (so wie ich 🙂 )und hast dem ESP in der wlan.ini eine feste IP vergeben. 😛

Diese IP im Browser öffnen!
Es sollte gleich /setup.html geöffnet werden (merke Dir diesen Pfad, falls Du die Installation später noch einmal anstoßen willst)

Gut, mehr können wir gerade nicht machen. Ab in den Keller!
Den ESP auf dem Halter befestigen und beides auf die Wasseruhr stecken.

 


Sitzt und wackelt. Passt eher schlecht.

Ja, Jomjol rechnete nicht damit, dass ich bauernschlau gleich das Programmiermodul auf dem ESP lasse, deswegen passt sein Deckel nicht über meinen ESP. Aber für drei Euro Aufpreis wollte ich mir keine USB-Spannungsversorgung zusammenlöten.
Der o.a. Ebay-Händler war auch so freundlich, die Spannung zu messen, die das Programmierboard ausgibt. Es sind 5V, was gut ist, denn der ESP läuft mit nur 3,3V nicht zuverlässig. Es meinte nur noch, dass das Modul nicht dafür gedacht wäre, dauernd auf dem ESP zu stecken. Naja, es wird nichts warm und das Ding läuft bei mir nun schon über vier Wochen im Dauerbetrieb absolut zuverlässig. Natürlich widerspricht das eigentlich dem Sinn eines ESPs, wenn seine GPIOs belegt sind, aber ich brauche die ja nicht. Das ist ja nur eine bessere Webcam.


Befestigt und den ESP mit dem Feigenblatt des Panzerbands vor Kurzschlüssen geschützt.
Im Sommer wird die Wasseruhr schwitzen und dann fällt vermutlich eh alles ab.

Klar, ich hätte mir einen Deckel für den ESP entwerfen können. Mache ich vielleicht irgendwann mal, aber nicht jetzt. Panzerband muss reichen.

Auch wollte die Halterung nicht so recht auf die Wasseruhr passen. Die ist irgendwie seltsam geformt, sodass ich wieder mit Tape alles grob und sehr provisorisch befestigt habe.
Auch da baue ich mir vielleicht mal eine passende Base. Jomjol hat das ja alles austauschbar mit Bajonett-Verschlüssen versehen, so dass man nicht bei Austausch die gesamte Halterung neu drucken muss.
Aber ich wollte schnelle Ergebnisse sehen! ERGEBNISSE! 😀

Okay, Du hast die Stromversorgung am ESP angeschlossen? Super!

 


Begrüßung.
Ich habe leider keinen Screenshot gemacht, aber in dem ersten Dialog richtet man das Bild waagerecht aus. Ist ganz intuitiv. Erst in groben Schritten, dann feiner. Man kann eine Hilfslinie ziehen und damit zum Beispiel die Kanten der digitalen Ziffern in einer Linie ausrichten.

Referenzpunkte setzen.


Wir markieren zwei unveränderliche Marken auf der Wasseruhr, damit sich die KI besser orientieren kann.


Hier habe ich die Kubikmeter als zweiten Referenzpunkt ausgewählt.


Wir markieren alle digitalen Zahlen von links nach rechts. Dabei wird über jede Ziffer mit der Maus ein Rahmen gezogen. Kinderspiel.
Bitte auf die Namen achten und darauf, dass Du überflüssige ROIs löschst. Das passiert schnell, wenn man ein wenig rumspielt.
Zum Schluss einfach noch einmal jeden Bereich einzeln aufrufen und prüfen. Mit Save sichern nicht vergessen und mit Next weiter.


Das gleiche Spiel mit den analogen Zeigern. Hier allerdings von rechts nach links, von groß nach klein.


In der config.ini muss noch der MQTT-Server angegeben werden. mqtt://IP_DEINES_IOBROKERS:1883
Als MQTT-User habe ich hier… naja, Du siehst es ja. 😀 Was solls? In das Netzwerk kommt eh niemand rein und ich werde auch keinen Fernzugriff haben wollen.
Update und weiter.


Nun kannst Du das System neu starten. Das dauert fünf Sekunden oder so.

Im ioBroker geht es weiter:
Natürlich funktioniert das auch so mit allen anderen MQTT-fähigen (also allen) SmartHome-Zentralen wie openHAB und wie sie alle heißen.


Vorher hast Du am besten im IOBroker den MQTT Server/Client Adapter installiert und mit den MQTT-Usernamen aus der config.ini des ESP abgeglichen.
Oder halt auch nachher. Ist egal. 🙂


Nun erscheint unter Objekte, mqtt.0 unser Zählerstand. Ganz automagisch! 🙂


Wir klicken wieder auf das kleine Werkzeugsymbol und aktivieren die Aufzeichnung durch den History-Adapter.
Das hatten wir ja schon mit dem Stromzähler so gemacht.

Einen kleinen Wermutstropfen gibt es allerdings: Der ESP ist nicht so fix. Er schafft nur rund eine Ablesung alle fünf Minuten. Aber egal, das passt schon, sieht nur auf den Diagrammen nicht sooo toll aus:


Hier die blauen eckigen Wasserverbräuche im Vergleich zu den feinen Diagrammen des Stromverbrauches.

Diese Lösung ist auch für Wochenend- und Ferienhäuser interessant. Aber das schrieb ich auch schon im Artikel über den smarten Stromzähler.

BTW: Auch dieses Projekt kann man dazu benutzen, einen unsmarten Stromzähler smart zu machen! Dazu muss man natürlich eine andere Halterung bauen und ggf. damit leben, dass die Tür des Zäherkastens (der Unterverteilung) nicht mehr schließt.

+2

4 Kommentare

  • Superanleitung und auch noch nett präsentiert! Soetwas braucht man für den Anfang.
    KLipp und klar erklärt, was zu tun ist.

    +1
    Antworten
    • Das freut mich sehr. Ich habe Dein Drama mit den SD-Karten auch noch nachgetragen. 🙂
      Das Problem hatten ja schon viele.

      0
      Antworten
  • Genau so etwas habe ich gesucht. Hört sich super an.
    Da ich leider ab und zu das Wasserabstellen vergesse und hier im Mietshaus keine Installationsänderungen vornehmen will,
    hatte ich mir gedacht, den Wasserzähler in festen Zyklen (15 Min) abzulesen und auszuwerten.
    Danach dann Warnmeldung über Alexa und Pushover.

    +1
    Antworten
    • Das ist auch ein tolles Projekt, um jedweden unsmarten Zähler ablesen zu können. Jomjol arbeitet auch unermüdlich an Verbesserungen.
      Wenn Der kleine ESP denn bis in Deine Wohnung funken kann, wäre das ja super. Da kommt es eben auch sehr viele Faktoren an, aber ich drücke Dir ganz fest die Daumen!
      Vielleicht kannst Du aber noch einen günstigen OpenWRT-Router mit externen Antennen in der Nähe des ESP aufbauen? Klar, das halbiert die Geschwindigkeit, aber auf die kommt es hier nicht an. Die LAN-Ports muss Du natürlich deaktivieren – oder Du vertraust Deinen Nachbarn in einem unüblichen Maße. 😀

      0
      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Nach oben