Für die Statistiker unter uns sind die Verbräuche des Smarthomes, also Strom, Wasser, Heizung neben Temperatur, Luftfeuchte, Wind und Regen die liebsten Informationen für Grafana & co. ioBroker kann detailliert die Verbräuche für Stunden, Tage, Monate und Jahre dokumentieren.

Wie wir mit einfachen Mitteln einen Gaszähler smart machen haben wir bereits beschrieben, auch die Einbindung eines modernen „smarten“ Stromzählers über ein IR-Adapter kann im Blog nachgelesen werden. Lediglich der Wasserzähler war bisher nicht in das Smarthome eingebunden.

Tipp: Größte Schwierigkeit ist eine Halterung, die möglichst stabil ist und nicht das Kamerabild „verschiebt“. Wer keinen 3D-Drucker besitzt, kann mittlerweile online einen 3D-Druck auf Basis von 3D-Modellen bestellen, z.B. bei https://craftcloud3d.com/ Die passenden 3D-Modelle gibt es für den digitalen Wasserzähler hier: https://www.thingiverse.com/thing:5167976/files

Um den Wasserzähler in ioBroker einbinden zu können, ist die Idee so einfach wie genial: eine Kamera macht regelmäßig ein Foto des Wasserzählers und durch die Erkennung der Ziffern und Zeiger wird der Zählerstand ermittelt. Vor einiger Zeit gab es bereits Scripte, die mittels OCR gearbeitet haben, meist mit überschaubarem Ergebnis. Mit „AI on the edge device“ hält die künstliche Intelligenz Einzug in unser Smarthome, die Erkennung bedient sich der KI-unterstützten Erkennen der Ziffern und Zeiger.

Alles was wir dafür benötigen ist


Empfohlene Produkte


Starten wir also mit dem EXP32 cam, hierzu benötigen wir neben der Platine auch ein Tool, um die Firmware auf den ESP zu flashen. Wir haben gute Erfahrungen mit dem Tool von Espressif gemacht. ZIP downloaden, entpacken und starten, mehr ist nicht zu tun.

Zusätzlich benötigen wir noch drei Firmwarefiles von AI on the edge device, die wir hier downloaden können, es sind die Dateien bootload.bin, firmware.bin und partitions.bin.

AI on the edge device als ZIP herunterladen

AI on the edge device als ZIP herunterladen

Um den ESP zu flashen benötigen wir außerdem einen FTDI-Adapter, um die Firmware über die GPIO-Pins des Boards flashen zu können. Um den ESP32 mit dem FTDI ohne großen Aufwand verbinden zu können, nutzen wir die klassischen Jumper-Kabel. Wie die Kabel verbunden werden müssen, ist in diesem Schaubild gezeigt:

ESP32 cam an FTDI anschließen

ESP32 cam an FTDI anschließen

Wichtig ist das Jumberkabel, das zwei Pins kurzschließt. Ist dieses nicht korrekt angeschlossen, geht der ESP nicht in den Boot-Modus und kann nicht neu geflasht werden. Alternativ zur der 5V-Stromversorgung können wir auch auf dem direkt gegenüberliegendem PIN 3.3V des FTDI zum Flashen nutzen. Zum Betrieb des ESP32 benötigen wir aber 5V. Haben wir die beiden Boards korrekt verbunden, können wir den FTDI-Adapter in einen freien USB-Port am Rechner anschließen. Evt. wird noch ein Treiber benötigt, in den meisten Windows-10-Fällen sollte es ohne Probleme funktionieren.

Im nächsten Schritt starten wir das Flashtool und konfigurieren die firmware-Files korrekt. Diese werden mithilfe des Tools im Speicher korrekt adressiert, folgende Einstellungen sind im Tool vorzunehmen:

bootloader.bin 0x1000
partitions.bin 0x8000
firmware.bin 0x10000
ESP32 Downloader Tool konfigurieren

ESP32 Downloader Tool konfigurieren

Den korrekten Port auswählen und zunächst mit ERASE den Speicher des ESP32 löschen, FTDI ausstecken, wieder anstecken und der ESP32 bootet neu.

Danach können wir mit „FLASH“ die Firmware auf den ESP32 flashen.

Firmware wird auf ESP32 geschrieben

Firmware wird auf ESP32 geschrieben

Firmware wurde erfolgreich auf den ESP32 geschrieben

Firmware wurde erfolgreich auf den ESP32 geschrieben

Für den Betrieb der Software auf dem ESP32 benötigen wir noch eine SD-Karte mit den Config-Files, hierzu einfach eine Micro-SD mit weniger als 16GB mit einer FAT32-Partition formatieren und das Verzeichnis „sd-card“ auf die Karte kopieren.

SD-Karte mit Konfiguration

SD-Karte mit Konfiguration

Damit sich der ESP32 mit dem WLAN verbinden kann, müssen wir noch die WLAN-Konfiguration in der entsprechenden Datei auf der SD-Karte vornehmen. In der Datei wlan.ini geben wir WLAN-Name und das Passwort an, außerdem kann ein Hostname für den ESP32 definiert werden. Speichern und die SD-Karte in den ESP32 stecken.

Den ESP32 mit Strom versorgen, dies kann entweder über die 5V-Leitung des FTDI oder über ein normale USB-Kabel mit Handy-Ladegerät gelöst werden, wichtig ist die korrekte Verkabelung an 5V.

Blinkt die rote LED des ESP32 drei mal kurz auf, konnte erfolgreich eine Verbindung zum WLAN hergestellt werden. Wir müssen über den Router die IP-Adresse des ESP32 ermitteln und können die Oberfläche zur Konfiguration aufrufen: http://#IP-Adresse#

Es begrüßt uns der Willkommen-Bildschirm, mit Klick auf next geht’s weiter.

Im nächsten Schritt müssen wir ein Referenz-Bild des Wasserzählers anlegen, hierzu ist es wichtig, dass das Board bereits korrekt über dem Wasserzähler fixiert ist und sich in der Position nicht mehr wesentlich bewegen wird. WICHTIG: Der Drehring auf der Kamera kann zur Fokussierung genutzt werden, ist allerdings mit Kleber fixiert. Mit einer Zange lässt sich der Drehring vorsichtig lösen, je weniger Abstand zwischen Wasserzähler und ESP32, um so mehr Umdrehungen nach LINKS gegen den Uhrzeigersinn wird benötigt.

Schritt 2 Referenzbild anlegen

Schritt 2 Referenzbild anlegen

Schritt 3 Referenzbild speichern

Schritt 3 Referenzbild speichern

Wir legen ein neues Referenzfoto an, alle Zahlen und Zeiger sollten scharf und reflexionsfrei erkennbar sein. Bild übernehmen und weiter.

Auf dem Referenzbild müssen wir zwei Fixpunkt auswählen, die sich nicht verändern, das können z.B. feste Schriftzüge auf dem Ziffernblatt sein, Konfiguration speichern und weiter geht’s.

Schritt 4 Referenzbild alignments speichern

Schritt 4 Referenzbild alignments speichern

Im nächsten Schritt legen wir die Erkennungsfelder der Ziffern fest, jede einzelne Ziffer erhält eine eigene sog. ROI. Hierbei konfigurieren wir von links nach rechts, alle Stellen/Ziffern der Zahl. Konfiguration speichern und weiter.

Schritt 5 Ziffern konfigurieren

Schritt 5 Ziffern konfigurieren

Im nächsten Schritt erfolgt die Konfiguration der analogen Zeiger, die meisten Wasserzähler besitzen hiervon vier Stück, die Kreise entsprechend positionieren und speichern. In diesem Fall arbeiten wir uns von rechts nach links.

Schritt 6 Zeiger konfigurieren

Schritt 6 Zeiger konfigurieren

Danach können wir den MQTT-Server konfigurieren. Wir gehen davon aus, dass im ioBroker bereits ein MQTT-Adapter läuft und unter der korrekten IP mit Port und den Zugangsdaten die messages empfangen und verarbeiten kann.

Schritt 7 MQTT konfigurieren

Schritt 7 MQTT konfigurieren

Der ESP32 kann maximal alle ca. 3min ein Bild erfassen und verarbeiten, wir erfassen den Wasserverbrauch alle 5min.

Schritt 8 Konfiguration abschließen und neu starten

Schritt 8 Konfiguration abschließen und neu starten

Konfiguration abschließen und neu starten, über die bekannte IP-Adresse erreichen wir die Oberfläche des ESP32, auf der z.B. das letzte Foto den ermittelten Werten zu sehen ist. Die Software bietet eine Fehlertoleranz und Erkennung über den „preValue“, so wird verhindert, dass Fehler irrtümlich an ioBroker gemeldet werden.

Wird aus Versehen die Kamera verrückt und das Bild passt nicht mehr zur Referenz, wird auch dies als Fehler erkannt.

Fehlererkennung bei verschobenem Bild

Fehlererkennung bei verschobenem Bild

Arbeitet unser ESP32 korrekt, wird also regelmäßig unser Datenpunkt in ioBroker mit dem aktuellen Wasserzählerstand aktualisiert und wir können den Verbrauch erfassen oder z.B. einen Alarm aktivieren, wenn über längere Zeit ein hoher Verbrauch registriert wird.