Zählerstand des Wasserzählers mit ESP32 Cam erfassen

1. Einleitung

Seit dem Jahr 2024 habe ich eine Hausautomatisierung mit „Home Assistant“ lauffähig, mit der ich einige Automatisierungen umgesetzt habe.
Des Weiteren möchte ich damit auch gerne sämtliche Zählerstände loggen.
Während bei den modernen Stromzählern das Auslesen über die IR-Schnittstelle möglich ist, ist dies bei meinem Wasserzähler noch nicht möglich.
In diesem Projekt wird beschrieben, wie der Zählerstand eines klassischen Wasserzählers mit einer ESP32 Cam ausgelesen werden kann.
Hierzu wird in einstellbaren Intervallen ein Foto mit der ESP32 Cam aufgenommen, der Zählerstand durch Bilderkennung auf dem ESP32 ermittelt und dieser anschließend per MQTT an einen MQTT-Broker übermittelt.
Die Umsetzung basiert auf einer frei verfügbaren Firmware für die ESP32 Cam.
Im Folgenden möchte ich kurz auf die Bezugsquelle für die Firmware eingehen und dann zeigen, wie ich die Montage der Kamera über dem Wasserzähler umgesetzt habe.

2. Die Hardware

Als Hardware dient eine ESP32 Cam. Diese findet man unter eben dieser Bezeichnung bei einschlägigen Online-Händlern.
Man sollte darauf achten, dass man aus folgendem Grund die Variante mit den zwei Leiterplatten im Sandwichformat kauft.
Auf der Oberseite der oberen Leiterplatte befindet sich die eigentliche Kamera, eine weiße LED und der Slot für die Micro-SD-Karte.
Der ESP32-Microkontroller und die gelayoutete WLAN-Antenne befindet sich auf der Unterseite der oberen Leiterplatte.
Auf der unteren Leiterplatte befindet sich der USB-Anschluss (USB-C oder Micro-USB) sowie ein USB-TTL-Seriell-Wandler.
Dieser wird benötigt, um den Microcontroller mit dem USB-Anschluss des Rechners zu verbinden.

3. Die Firmware für das Projekt       

3.1. Bezugsquelle der Firmware

Das erste Mal auf das Projekt aufmerksam geworden bin ich 2021 durch einen Artikel im „Make Magazin“ [1].
2024 gab es dann noch einmal einen zweiteiligen Artikel dazu in der Elektor ([2]).

Die Firmware „AI-on-the-edge-device“ des Programmierers jomjol ist auf Github verfügbar [3].
Edge Computing bedeutet, dass Daten nicht auf einem zentralen Server verarbeitet werden, sondern meint die dezentrale Datenverarbeitung am Rand des Netzwerkes.
Der Name der Firmware spielt wohl darauf an, dass die Bilderkennung mit einem zuvor anderweitig trainierten neuronalen Netzwerk auf dem Mikrocontroller, nämlich dem ESP32, ausgeführt wird.

3.2. Installation der Firmware

Unten auf der github-Seite gibt es einen Readme-Bereich, in dem die Installation unter „Flashing the ESP32“ beschrieben ist.
Dort gibt es einen Link, zu einem Webinstaller im Browser, über den die Installation bevorzugt durchgeführt werden sollte.
Das Flashen über den Browser funktioniert nur mit Microsoft Edge oder Google Chrome, nicht jedoch mit Mozilla Firefox, weil dieser keinen Zugriff auf die virtuelle COM-Schnittstelle hat.
Der ESP32 muss zum Flashen per USB an dem Rechner angeschlossen sein.
Weitere Infos zum Reset sind der Beschreibung auf der Projektseite zu entnehmen.
Zusätzlich muss die ESD-Karte FAT formatiert sein und dann mit bestimmten Daten, die ebenfalls im Projekt downloadbar sind, beschrieben werden.
Die Datei wlan.ini muss zuvor mit den eigenen WLAN-Zugangsdaten modifiziert werden.
Sobald sich die ESP32 Cam im eigenen WLAN angemeldet hat, ist sie über die IP-Adresse im Browser erreichbar.
Eine exakte Beschreibung findet man unter [4]. Dort ist unter „Initial Setup“ auch beschrieben, wie man ein Referenzbild aufnimmt, die Referenzmarker setzt und die „Regions of Interest“ für die digitalen und die analogen Zählerstellen definiert.

Abbildung 1: Flashvorgang per Webinstaller

4. Mechanischer Aufbau und Befestigung über dem Wasserzähler

4.1. Mechanischer Aufbau

Die ESP32 Cam wurde in den Deckel eines HT-Rohres eingebaut.
Zusammen mit einem auf die passende Länge gekürzten HT-Rohr sorgt dieser Aufbau dafür, dass die Kamera vor Fremdlicht geschützt ist.

Abbildung 2: Deckel für HT-Rohr mit ESP32 Cam und Magnet

In Abbildung 2 ist erkennbar, dass die ESP32 Cam inklusive der USB-Leiterplatte als Sandwich mit Heißkleber in den Deckel geklebt wurde.
An der Seite des Micro-USB-Steckers wurde seitlich ein Loch in den Deckel gebohrt,
damit der USB-Stecker für die Spannungsversorgung eingesteckt werden kann.
Der Magnet wurde ebenfalls mit Heißkleber in den Deckel geklebt und sorgt später dafür, dass das Rohr an der Halterung haftet.
Über die LED wurde ein Stück einer halbtransparenten Folie geklebt.
Diese streut das Licht und verhindert, dass die LED zu stark auf dem Glas des Zählers reflektiert.

Abbildung 3: Befestigung des Rohres am Winkel mittels Magneten

Die Abbildung 3 zeigt das Rohr mit aufgestecktem Deckel.
Die Dichtung wurde aus der Muffe des Rohres entfernt. Der Deckel sitzt trotzdem stramm im Rohr. Der verzinkte Winkel wurde an die Wand gedübelt.
Das Rohr hält sich unter dem Winkel durch den Magneten im Deckel.

Nachdem die passende Position gefunden war, wurde die Kontur des Winkels mit einem Filzstift auf den Deckel gemalt, damit die Position reproduzierbar ist.

4.2. Mechanische Modifizierungen

Später hat sich das Rohr durch Anstoßen doch mal verschoben, was erst einige Tage später bemerkt wurde.
Daher wurden an den passenden Stellen zwei Löcher mit 3,3mm Durchmesser in den Winkel gebohrt und die Löcher auf den Deckel übertragen.
In die Löcher im Winkel wurden M4 Gewinde geschnitten und eine jeweils eine kurze M4-Schraube eingedreht. In den Deckel wurde an diesen beiden Stellen Löcher mit 4mm Durchmesser gebohrt. Der Deckel wird somit weiterhin durch den Magneten unter dem Winkel gehalten, kann sich aber weder verschieben noch verdrehen. Abbildung 4 zeigt die beiden Schraubenköpfe auf dem Winkel.

Abbildung 4: Schrauben im Winkel als Verschiebe- und Verdrehschutz

Damit die Luft besser zirkulieren und die warme Luft entweichen kann, wurden ein paar Löcher in die Oberseite des Deckels eingebracht.

5. Elektronische Modifizierungen

5.1. Externe WLAN-Antenne

Nachdem die ESP32 Cam im Deckel des Rohres montiert und dieses unter dem Winkel befestigt war, funktionierte die WLAN-Anbindung so schlecht, dass die Kamera nicht einmal mehr sinnvoll konfiguriert werden konnte.
Zunächst hatte ich die Stromversorgung im Verdacht. Deshalb habe ich die 5V-Spannungsversorgung zunächst mit einem großen Kondensator gepuffert.
Dies führte jedoch nicht zum gewünschten Erfolg. Den Kondensator habe ich trotzdem als Pufferung an der ESP32 Cam belassen.

Da die Onboard-Antenne der ESP32 Cam durch den Winkel und den Magneten abgeschirmt wird, habe ich eine externe Antenne gekauft und montiert [5].
Diese wurde in den Deckel eingebaut.
Beim Einbau ist zu beachten, dass ein 0 Ohm-Widerstand auf der Leiterplatte der ESP32 Cam umzulöten ist, damit die externe Antenne aktiv ist [6]
Danach funktionierte der Zugriff auf das Webinterface der ESP32 Cam wie erwartet.

Abbildung 5: Der Antennenfuß wurde unterhalb des Kondensators im Deckel verschraubt
Abbildung 6: Rohr mit WLAN-Antenne (Seitenansicht)
Abbildung 7: Rohr mit WLAN-Antenne (Ansicht von oben)

5.2.    Elektrischer Anschluss

Meine Version der ESP32 Cam hat einen Micro-USB-Anschluss.
Für die Leseköpfe an den Stromzählern im benachbarten Zählerschrank hatte ich schon ein 5V-Meanwell-Netzteil für Hutschienenmontage in diesen eingebaut.
Daran wurde auch die ESP32 Cam über ein abgeschnittenes USB-Kabel und eine eigene Feinsicherung angeschlossen.

Abbildung 8: Netzteil und Feinsicherungshalter

6. Webinterface und Home Assistant

6.1. Webinterface

Die folgende Abbildung zeigt das Webinterface der Firmware „AI-on-the-edge-device“ auf der ESP32 Cam.
Nachdem die „Regions of Interest“ sauber eingestellt wurden, wird der Zählerstand erkannt und auf der linken Seite digital angezeigt.
Die ESP32 Cam übermittelt diesen Wert per MQTT an den MQTT-Broker des Home Assistants.

Abbildung 9: Webinterface der ESP32 Cam

6.2.    Home Assistant

Der Zählerstand kann dann im Home Assistant weiterverarbeitet werden.
Z.B. kann der stündliche Verbrauch in einer Grafik dargestellt werden (siehe Abbildung 10). Des Weiteren schreibe ich alle Zählerstände am Ende des Monats automatisiert in eine Textdatei.

Abbildung 10: Darstellung des stündlichen Verbrauchs in Home Assistant

Literaturverzeichnis:

[1]        Josef Müller, ESP32CAM liest Wasseruhr, Make Magazin, Heise Gruppe, Ausgabe 2/2021 Seite 14-20

[2]        Daniel Scaini, KI-gestützter Wasserzähler, Elektor, Elektor Verlag GmbH, Ausgaben Juli/August 2024 Seiten 30-33 und September/Oktober 2024 Seiten 60-67

Links:

[3]        github.com – AI-on-the-edge-device
https://github.com/jomjol/AI-on-the-edge-device

[4]        github.com – AI-on-the-edge-device – Documentation
https://jomjol.github.io/AI-on-the-edge-device-docs/

[5]        Amazon – MakerMind 2.4G Antenne Bluetooth/Wifi für IoT Boards ESP32-CAM, Zigbee uvm. SMA zu IPEX
https://www.amazon.de/dp/B0DBZNYDWZ?ref=ppx_yo2ov_dt_b_fed_asin_title

[6]        Youtube – How to add an external antenna to an ESP32-CAM (2 methods)
https://www.youtube.com/watch?v=aBTZuvg5sM8

Abbildungsverzeichnis

Abbildung 1: Flashvorgang per Webinstaller
Abbildung 2: Deckel für HT-Rohr mit ESP32 Cam und Magnet
Abbildung 3: Befestigung des Rohres am Winkel mittels Magneten
Abbildung 4: Schrauben im Winkel als Verschiebe- und Verdrehschutz
Abbildung 5: Der Antennenfuß wurde unterhalb des Kondensators im Deckel verschraubt
Abbildung 6: Rohr mit WLAN-Antenne (Seitenansicht)
Abbildung 7: Rohr mit WLAN-Antenne (Ansicht von oben)
Abbildung 8: Netzteil und Feinsicherungshalter
Abbildung 9: Webinterface der ESP32 Cam
Abbildung 10: Darstellung des stündlichen Verbrauchs in Home Assistant

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen