Stromzähler auslesen

Um einen digitalen Stromzähler auszulesen, wird eine kleine Schaltung benötigt, die die IR-Signale des Zählers in elektronische Signale für eine Auswerteelektronik umwandelt.

Moderne digitale Stromzähler senden jede Sekunde Daten per Infrarot. Diese beinhalten unter anderem die aktuell abgerufene Leistung in Watt und den aktuellen Zählerstand. Bei Mehrrichtungszählern wird auch die Einspeiseleistung und die Einspeisemenge gesendet.

Sofern der Zähler per Code freigeschaltet ist, gibt er diese Daten aus. Sollte der Zähler gesperrt sein, gibt der Zähler in der Regel nur den aktuellen Zählerstand aus. (Einige Zähler auch gar nichts.)

Den Freischaltcode müssen die Energieversorger einem zusenden, wenn er angefordert wird. Oftmals reicht eine eMail oder Anfrage per Kontaktformular aus.


Ein Beispiel für einen schnell zusammen gelöteter Wandler nach obigen Schaltbild:

An den beiden Adern links wird der Fototransistor angeschlossen. Dieser kann abgesetzt vom Wandler am Zähler montiert werden. R1 ist optional und auf diesem Bild nicht zu sehen. Er begrenzt den Basisstrom vom BC547c.

  1. GND
  2. +3V3 / 5V
  3. NC
  4. TXOut

Die Pins auf der rechten Seite werden mit der Auswerteelektronik verbunden. TX wird mit RX an der Auswerteelektronik verbunden.

Den Foto-Transistor kann man zum Beispiel mittig in ein kleines Holzscheibchen mit ca. 1-1.5cm Stärke kleben. Um den „Lesekopf“ nun an den Zähler anzubringen, werden zwei kleine Neodym-Magnete in das Holzstück eingelassen.

Wenn man diesen Schritt nicht machen möchte, kann man später auch Klebepads nehmen.

Wer einen 3d-Drucker hat, kann sich auch ein entsprechendes Gehäuse drucken. Für diesen Prototyp habe ich mir die Mühe nicht gemacht.

Es ist möglich, den gezeigten Wandler mit einem USB2ttl-Adapter zu verbinden und die Daten auf einem PC oder Raspberry Pi einzulesen. Den Pin2 (VCC) vom IR2ttl-Wandler schließt man an VCC vom USB2ttl-Adapter an. Den TXOut am RX anschließen. GND der Wandler verbindet man miteinander.

Hier, noch ein Bild mit Schrumpfschlauch über der Platine:

Dieser IR-Lesekopf ist in wenigen Minuten auf einer nur 4×4 Löchern großen Lochrasterplatine zusammen gelötet und kostet keine 2€. Im Vergleich dazu sind die Leseköpfe die es bei eBay/Amazon zu kaufen gibt schon beachtlich teurer. Sie liegen um 25-45€.


Anstatt eines RPi oder PC’s lässt sich auch ein ESP-SoC verwenden.

Die Wifi-Variante ist in der Regel ein ESP8266 mit einer modifizierten Tasmota-Version mit aktivierter SML-Unterstützung.

Im Netz werden einige vorkompilierte Varianten angeboten. Man sollte allerdings darauf achten, wer diese bereit stellt! Es kann durchaus passieren, dass die Version kompromittiert ist. Vorgefertigte Software bietet immer die Gefahr von Datenlecks. So können WLAN-Zugangsdaten versendet werden oder das Netzwerk gescannt bzw. Ports geöffnet werden. Ladet also von einer vertrauensvollen Quelle runter. Alternativ könnt ihr euch die Datei mit etwas Arbeit selber kompilieren.

Ich habe die Version 14.3.0 mit aktivierter SML-Unterstützung kompiliert. Diese biete ich zum Download an:

Wie man die Binary auf den Flash vom ESP-SoC bekommt, habe ich bereits im Beitrag zum ESP-Relaisboard beschrieben. Daher, werde ich das hier nicht wiederholen. Im Prinzip lässt sich jedes Board so flashen.

Bei einem ESP mit USB-Schnittstelle braucht man aber keinen USB2ttl-Adapter.


Tasmota konfigurieren, damit die Zählerwerte angezeigt werden

Nachdem man den SoC geflasht, mit seinem WLAN verbunden und grundsätzlich eingerichtet hat, kann man nun Tasmota so einrichten, dass es die Zählerwerte anzeigt.

Um die Zählerwerte anzeigen zu lassen muss im Menü Werkzeuge der Punkt Script konfigurieren aufgerufen werden.

Im Feld Script bearbeiten fügt man nun folgenden Code ein:

>D
>B
=>sensor53 r 
>M 1
+1,3,s,0,9600,Haus
1,77070100010800FF@1000,Zählerstand,kWh,Total,4
1,77070100100700FF@1,Wirkleistung,W,Wirk_P,2
#

Der Haken bei Script aktivieren wird auch gesetzt.

Nun noch speichern und wenn alles geklappt hat, gelangt man wieder in das Werkzeug-Menü zurück.

Sollte sich der SoC aufhängen, kann man es erneut probieren. Manchmal benötigt es zwei Anläufe.


Kurze Erklärung zum Script:

+1,3,s,0,9600,Haus – Die „3“ ist der GPIO-Pin am SoC, wo die Daten empfangen werden. Standardmäßig ist dies der RX-Pin. Sollte dieser Pin belegt sein, tut es auch ein anderer. Am WeMos-ESP8266 bietet sich z.B. D5 bzw. GPIO14 an.

to be continued….

In nächster Zukunft werde ich beschreiben, wie man Diagramme (Google Charts mit den Verbräuchen) einfügt und entsprechende Firmware bereitstellen (ESP8266_2M/4M, ESP32-dev, ESP32-S2)


Kommentare

Schreibe einen Kommentar

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