Ferraris Stromzähler digitalisieren

Den eigenen analogen Stromzähler mit einem ESP32-Modul, AI on the Edge und Home Assistant digitalisieren.

Mit dieser Anleitung kann der Ferraris Stromzähler digitalisiert und in Echtzeit verfolgt werden, um den Strom-Verbrauch genau zu messen.

In meinem Fall handelt es sich um ein wirklich altes Schätzchen, sogar mit Doppelzählwerk, was lt. meinem Stromversorger erst 2032 gegen einen digitalen Stromzähler getauscht werden soll. Solange wollte ich nicht warten.

Nein, vieles von dem ganzen habe ich mir von anderen abgeschaut - u.a. von ALKLY, aber wie immer gibt es überall etwas Anpassungsbedarf.

Schritt 1: Materialien

  • Natürlich braucht es einen Ferraris Stromzähler
  • Ein ESP32-Modul - ESP32 CAM Entwicklungsplatine, WLAN/Bluetooth, ESP32 DC 5V Dual-Core-Entwicklungsplatine mit OV2640 Kamera-TF-Karten-Modul (Die MB's benötigen DRINGEND einen IO0-Taster). 8 MB PSRAM zwingend erforderlich. Kamera-Modul ist üblicherweise festgeklebt - man kann aber auch Kamera-Module kaufen ohne Verklebung
  • Optional eine externe Antenne
  • Eine dazu passende SD Karte
  • Optional ein 5V Netzteil Netzteil oder aber ein altes Netzteil aus dem bestehenden Fundes
  • Ein Home Assistant-System zur Integration und Visualisierung der Daten

Schritt 2: Einrichten von AI on the Edge auf dem ESP32

“AI on the Edge” bezieht sich auf den Einsatz von AI direkt auf Geräten (wie dem ESP32), anstatt Daten zur Verarbeitung an einen externen Server zu senden. Dieses Setup ermöglicht eine schnellere Reaktionszeit und bietet eine hohe Datenschutzsicherheit - alles passiert im eigenen Netz!

In dem Tutorial wird die Arbeit dreigeteilt - der erste Teil findet am PC-Arbeitsplatz statt, der zweite Teil beinhaltet die mechanische Installation am Ferraris Stromzähler, der dritte Teil ist dann die Einrichtung der ESP32 wieder vom PC-Arbeitsplatz aus.

Als Vorbereitung erstmal die SD Karte mit FAT32 formatieren. Dann braucht es die entsprechende Firmware für den ESP32 (von der GitHub-Seite des Projekts - https://github.com/jomjol/AI-on-the-edge-device) - hier bitte das Verzeichnis "sd-card" auf die SD-Karte kopieren. In der Datei "wlan.ini" die Zugangsdaten zum eigenen Wlan eintragen. Schadet nicht, die restlichen Einträge ebenfalls korrekt zu bearbeiten!

Die Datei config.ini im Verzeichnis config bietet auch noch viel Interessantes, ich habe mich vorerst auf den TimeServer beschränkt und gleich ptbtime1.ptb.de eingetragen - kann aber später in den Expert Parameters der Konfiguration ebenso erledigt werden.

Dann den Webinstaller verwenden von https://jomjol.github.io/AI-on-the-edge-device/

Bitte Folgendes beachten:

  • FIrefox ist hier nicht zu gebrauchen, bei mir hat Chrome gut funktioniert!
  • Bei https://jomjol.github.io/AI-on-the-edge-device/ gibt es links unten einen Button "Connect", wenn folgendes (oder ein ähnliches Fenster...) erscheint, ist das Setup praktikabel:Webinstaller good result
  • Kommt hingegen etwas Ähnliches wie folgendes Bild, hat es vermutlich ein Problem mit dem ESB32-CAM-MB. In meinem Fall hat nur ein Tausch des ESB32-CAM-MB geholfen, ich bin von den Boards ohne IO0-Taster zu den Boards mit IO0-Taster gewechselt, ich hatte danach keinerlei Probleme mehr (außer angekratztem Ego...).

 Webinstaller bad result

  • Installation wird gestartet mit:

INSTALL AI ON THE EDGE

  • Der Vorgang dauert nun etwa 2 Minuten
  • Wenn die Software komplett auf dem ESP32 installiert ist und DANACH (!) die SD Karte auch im ESP32 sauber eingerastet ist (nur so lässig hineindrücken ohne Einrasten führt zu Fehlermeldungen!!!), den Button "LOGS & Console" wählen. Im folgenden Screen unten rechts "RESET DEVICE" wählen. Die IP-Adresse der ESP32 taucht nun irgendwo im folgenden Text auf - einfach mal suchen UND merken bzw. notieren! In meinem Fall speichert der DHCP-Server 2 Tage lang die IP, man kann (und sollte!) hier auch eine dauerhafte Vergabe einer IP an den ESP32 vornehmen.
  • Auf dem ESB32-CAM-MB nacheinander sowohl Reset als auch IO0-Taster betätigen.
  • Die gefundene IP-Adresse von oben wählen und aufrufen - Voilà:

ESP FIRST START

  • Der nächste Schritt sollte schon mal irgendein Bild bringen sowie die LED zum Leuchten bringen (damit ist auch klar, dass die Kamera korrekt installiert wurde...).
  • Wenn das erste Mal nun wirklich ein Bild, aufgenommen von der Kamera des ESP32, zu sehen ist - ab damit in den Raum, wo der Ferraris Stromzähler hängt.

Schritt 3: Installation der Kamera am Ferraris Stromzähler

Kamera so installieren, dass die Zählwerke des Ferraris Stromzähler deutlich und scharf zu sehen sind. Man kann (und sollte!) eine Halterung verwenden, um sicherzustellen, dass die Kamera stabil ist und die Zählwerke stets gut im Blick hat.
In meinem Fall:
https://makerworld.com/de/models/153910-power-meter-holder-90deg-stromzahler-90deg-ai-on-t?from=search
https://www.thingiverse.com/thing:5567461 (hier nur noch Baseholder.stl und Holder_ESP32.stl)

Damit die Kamera dann gut auf den Zähler schauen kann, braucht es noch einen kleinen Taschenspiegel! Dieser Spiegel wird mittels Klebeband bzw. geeignetem Kleber an passender Stelle im Baseholder befestigt. Idealerweise wird das vor der finalen Befestigung mal provisorisch vorher ausgetestet, wo der ideale Platz zur Befestigung ist, damit der ESP32 auch wirklich die Zählwerke gut im Blick behält!

Die Kamera-Linse einstellen kann herausfordernd sein, ganz besonders, wenn die Linse verklebt ist - hier ist Gefühl und ein Cuttermesser gefragt - bitte dabei aber nicht in die Finger schneiden.
Kamera gut ausrichten und das Bild des Ferraris Stromzähler gut beleuchten. Eine unscharfe oder schlecht beleuchtete Aufnahme kann die Genauigkeit der Stromverbrauchserfassung massiv beeinträchtigen.

In meinem Fall war die Spiegelung der internen LED des ESP32 derart ungünstig, dass ich diese LED abschalten musste. Zur Beleuchtung verwende ich nun 3 LED eines LED-Streifens WS2812B (Stromversorgung und Ansteuerung funktioniert vom ESP32 aus). Einfach mal die Suchmaschine der Wahl nach Pinout zu ESP32-CAM quälen, dann ist auch klar, wo die 3 Kabel des LED-Streifens hin müssen.

Schritt 4: Einrichten von AI on the Edge auf dem ESP32

Das hat in meinem Fall Tage gedauert - es gibt viele Möglichkeiten, sich hier auf unwichtigen Nebenkriegsschauplätzen zu tummeln.

Das wichtigste ist am Anfang das "Reference Image and Camera Settings" - hier mit den Einstellungsmöglichkeiten solange esperimentieren, bis alles stimmt und eine gute Darstellung möglich ist. TIPP: Gutes Licht ist wichtig - zu viel Licht ist schädlich - habe in meinem Fall die LED auf 20% heruntergefahren - Ergebnis ist jetzt für mich optimal!

Als Nächstes ist es notwendig, dem Digitizer mitzugeben, wo eigentlich seine zukünftigen Messpunkte sind, um Zahlen zu erkennen. Mit dem von mir gewählten Setup der Hardware (Baseholder und Holder) ist es mir möglich, das Doppelzählwerk sehr gut zu erfassen, die obere Zählreihe habe ich HT genannt, die untere Zählreihe habe ich NT genannt - natürlich entsprechend der Benennung im Ferraris Stromzähler.

 ROI

Was letzten Endes sich am zeitaufwändigsten herausgestellt hat, war die Wahl des "richtigen" Processing-Model, also wie die Zahlen "gelesen" werden.

Processing Model

In meinem Fall war dann nach vielen Tagen für mein Projekt das class11_1910 das richtige, in anderen Projekten können andere Entscheidungen besser sein.

Als Ergebnis vieler Stunden steht das Projekt nun vor folgendem Zwischenergebnis:

Final Ergebnis 

Die Nachkomma-Stellen sind aktuell noch nicht erfasst - vielleicht tue ich mir das später noch mal an...

(Nachtrag: Nachkomma-Stellen sind nun auch erledigt - Decimal Shift muss für jede Dezimalstelle auf Minus-Wert gestellt werden - dann klappt das auch!)

Am Value Status ist erkennbar, dass es auch nach vielen Erkennungsrunden keine Fehler gibt, Raw Value und Value entsprechen den realen Werten - also geht es nun endlich weiter zum nächsten Schritt:

Schritt 5: Einrichten von AI on the Edge auf Home Assistant

Hier bedarf es zuallererst der MQTT-Integration von Home Assistant, essenziell notwendig dazu ist der MQTT-Broker:

HA Mosquitto broker