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.
Man kann für hunderte von Euro aber auch smarte Wasseruhren kaufen und hinten die offizielle Wasseruhr für wiederum hunderte von Euro einbauen lassen.
Zum Glück gibt es aber findige Bastler und am Gemeinwohl interessierte Genies (aus meiner Sicht), die da was zusammengecodet haben. Lasst uns also die Wasseruhr smart machen.
[widgets_on_pages id=“Translated“]
Inhalt:
Wer hat es erfunden?
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 nebst einem Blitzlicht 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.
Wo den ESP kaufen?
Den ESP habe ich auf Ebay bei janfriedrichelektronikversand bekommen. So sperrig der Ebay-Name ist, so freundlich und zuvorkommend ist aber der gute Mann, der für mich testete, ob der ESP auch mit einem Netzteil läuft. Er übernimmt aber keine Garantie, ob das USB-Board für den Dauerbetrieb ausgelegt ist.
UPDATE 09/21: Ja, läuft absolut rockstable seit über einem halben Jahr mit einem Billignetzteil.
Das Set nennt sich „Starterset HK-ESP32-CAM-MB | ESP32-CAM + OV2640 Kamera + CH340G USB2Serial“ und kostet mit Versand gerade mal 13 Euro. (Stand 09/21)
Alternative: Zwei der ESP für 23 Euro (Stand 09/21) mit Versand bei Amazon. Vielleicht möchtest Du noch eine zweite Wasseruhr für den Garten digital auslesbar machen? Oder einen ganz alten Stromzähler damit upgraden?
Um ehrlich zu sein, habe ich beim Versuch die Linse zu lösen mit dem Skalpell die Leiterbahn der Kamera beschädigt. Gut, dass ich zwei ESP gekauft hatte. Der eine kann mir immer noch als Steuereinheit für die Daikin-Wärmepumpe dienen.
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 benötigen wir noch ein einfaches USB-Netzteil mit mindestens 500 mA (0,5 A, 2,5 Watt) und eine maximal 16 GB große microSD-Karte . Dazu noch ein längeres (je nach Einbauort) Micro-USB-Kabel. Am besten gleich als Datenkabel.
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?
Haftungsausschluss
ACHTUNG! NICHT NACHMACHEN!
- Dies ist keine Anleitung!
- Der Artikel dient der persönlichen Dokumentation!
- Dieser Artikel soll nicht die beiliegenden Anleitungen, Einbauhinweise oder Installationsanleitungen ersetzen!
- Dieser Artikel soll einen groben Überblick über die anfallenden Arbeiten ermöglichen.
- Der Artikel erhebt keinen Anspruch auf Vollständigkeit oder gar Korrektheit.
- Hier beschreibe ich, wie ich diese Arbeiten als Laie erledigt habe – nicht, wie man sie korrekt oder nach handwerklichen Standards, Vorschriften oder Gesetzen erledigt.
- Ich lehne jede Verantwortung, Haftung und Gewährleistung ab. Jeder muss selbst wissen, was er macht.
- Einige Arbeiten sind durch Fachfremde nicht zulässig, respektive gesetzwidrig und bedürfen teilweise mindestens der Abnahme durch einen ausgebildeten Berechtigten.
- Einige Handlungen und Arbeiten sind im öffentlichen Bereich (Straßenverkehr, Stromnetz, Luftraum, Internet, etc.) verboten oder verstoßen gegen Lizenzvereinbarungen, was straf- oder zivilrechtliche Konsequenzen nach sich ziehen kann.
- 230 Volt sind tödlich!
- Kein Backup? Kein Mitleid!
- Meine 3D-Modelle sind nur Machbarkeitsstudien, keine geprüften, funktionsfähigen Bauteile.
- Die beschriebenen Tätigkeiten sind in der Folge rein akademischer Natur.
- Bedenke, dass durch Deine Arbeiten Dritte an Leib und Leben gefährdet werden können und Du persönlich dafür haftest.
Mit dem Weiterlesen stimmst Du diesem Haftungsausschluss zu.
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 benötigt 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. Allein 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 = "DEINE-SSID" password = "DEIN-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.
Befestigung auf dem Wasserzähler
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 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 mehr oder weniger 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, sodass 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!
Setup
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 insbesondere 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.
Integration in IOBroker
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.
Support?
Da ich nicht der Entwickler bin, sondern nur diesen Artikel geschrieben habe, verweise ich auf den umfangreichen Support-Thread im ioBroker-Forum.