Stromzähler optisch auslesen

Da es hier vor kurzem endlich moderne Stromzähler gab und das Thema wahrscheinlich eher länderspezifisch ist, schreibe ich diesen Artikel zur Abwechslung auf Deutsch.

Idee

Die Idee stammt von volkszaehler.org, wobei deren Lösung nicht so ganz zu meiner Hausautomatisierung passt. Aber auch bei esphome.io gibt es alles an Software was man braucht.

Material

Der von mir gebaute Lesekopf kommt mit sehr wenigen Bauteilen aus:

  • Infrarot-Fototransisor (z.B. SFH309, BPW40)
  • Widerstand 1k
  • Microcontroller D1 mini ESP32 (ein ESP8266 könnte es auch tun aber da der ESP32 nicht viel mehr kostet setze ich keine ESP8266 mehr ein)
  • Ring-Magnet (25x6x13, z.B. hier)
  • USB-Kabel und Netzteil
  • 3D-gedrucktes Gehäuse (Lesekopf, Deckel, Freecad-Zeichnung)
20220817-204110-wt-Stromzaehler-0002.jpg

Aufbau

Als Signaleingang habe ich GPIO27 gewählt – weil er bei meinem ESP32 direkt neben dem Masse-Pin liegt. Diesen Pin verbinde ich per 1k Widerstand mit dem 3.3V Pin (der interne PullUp Widerstand funktioniert nicht).

20220817-204119-wt-Stromzaehler-0003.jpg

Beim Fototransistor auf die richtige Polung achten:

  • Emitter (langes Bein) – auf Masse
  • Collector (kurzes Bein) – auf den Signaleingang. Das ist keine Fotodiode – von daher auf die Polung achten!

Zu beachten ist noch dass die LED bei dem bei mir verbauten Stromzähler nur schwach leuchet – dh. der Fototransistor muss genau positioniert werden. Dabei hilft der 3D-gedruckte Halter.

Einbau

Der Lesekopf wird mit mit den Löchern auf die Positionierungshilfen gesetzt, der Magnet haftet dann an einer Metallplatte um den Sensor herum. Anschliessen und fertig.

20220727-090327-wt-Stromzaehler-0001.jpg

Software

Da bei mir zuhause Home Assistant im Einsatz ist, bietet sich für den ESP32 ESPHome als Software an. Bei volkszaehler.org gibts noch mehr Software zur Auswahl – im Prinzip ist eine serielle Schnittstelle zu lesen und die Daten im Obis format zu dekodieren. ESPHome bringt entsprechende Funktionen schon mit. Meine Konfiguration für ESPHome sieht so aus:

uart:
  rx_pin: GPIO27
  baud_rate: 9600

sml:
  id: mysml

sensor:
  - platform: sml
    name: "Total energy"
    sml_id: mysml
    obis_code: "1-0:1.8.0"
    unit_of_measurement: kWh
    accuracy_decimals: 1
    device_class: energy
    state_class: total_increasing
    filters:
      - multiply: 0.0001
  - platform: sml
    name: "Current power"
    sml_id: mysml
    obis_code: "1-0:16.7.0"
    unit_of_measurement: W
    device_class: power
    state_class: measurement
    on_value:
      then:
        - switch.turn_on: blueled

switch:
  - platform: gpio
    pin: GPIO2
    id: blueled
    name: "$uroom Status LED"
    restore_mode: ALWAYS_OFF
    on_turn_on:
    - delay: 500ms
    - switch.turn_off: blueled   

Wie man sieht, liefert mein Zähler nur zwei Werte (eigentlich liefert er vier, aber Seriennummer und Typbezeichnung sind nicht sehr interessant).

Update 2022-08-29: ESPHome

Ich wollte eine Möglichkeit haben am Sensor zu sehen ob gültige Werte empfangen werden ohne immer den Laptop dabei zu haben. Dafür nutze ich die kleine blaue LED auf dem ESP32, sobald ein gültiger Wert empfangen wird blinkt sie kurz auf.

Update 2022-08-29: Meßwerte

Meßstellenbetreiber Syna hat mir mitgeteilt dass der Zähler nur einen reduzierten Datensatz ausgibt (siehe auch Config oben). Schade, aber nicht zu ändern (ja, ich könnte einen anderen Meßstellenbetreiber beauftragen). Gründe haben sie leider nicht genannt.

Update 2022-10-01: Lesekopf

Nach ca. 3 Wochen bekam ich keine Daten mehr. Alles hin und her justiere half nichts. Zuerst dachte ich der Zähler ist defekt, aber mit einer alten Digigalkamera konnte ich die Infrarot-LED im Sekundentakt blinken sehen. Also war wohl mein Setup mit dem Fototransistor auf einmal nicht mehr empfindlich genug. Im Fotovoltaik-Forum fand ich einen Hinweis auf einen Fertigen lesekopf, schnell via Ebay bestellt und es tut wieder.

Verarbeitung der Meßwerte

Ich nutze hier HomeAssistant und Grafana. Viel kann man mit den zwei Messwerten natürlich nicht visualisieren:

Screenshot 2022-08-29 at 17.09.57.jpg

Stromzähler optisch auslesen

2 Gedanken zu „Stromzähler optisch auslesen

  1. Moin, ich habe das gleiche setup aus Zähler und Lesekopf. Leider bekomme ich gar keine Daten gelesen mit meinem Lesekopf. (Ich logge momentan alles direkt, also versuche noch nichtmal es zu dekodieren. Leider kann ich garnichts auslesen im Moment).

    – Ist es bei dir egal wierum du du Lesekopf auf den Stromzähler hälst? (Kabel oben, Kabel unten)? Funktioniert der in jeder Position.
    – Ich habe leider keine alte Digicam, kannst du mit deinem Handy was sehen? Wie häufig sollte das Gerät senden, wie lange musst du warten bis was kommt?
    – Hast du noch einen Tip, etwas was vorher nicht auf Anhieb geklappt hat?

    1. Naja, der Lesekopf hat eine Sende-LED und einen Empfangs-Fototransistor. Der Empfangstransistor muss rechts liegen. Dh. Kabel unten
    2. Mit dem Handy habe ich nichts gesehen. Hat mich auch zur Verzweiflung gebracht bis ich die Idee mit der Digicam hatte
    3. Die LED sendet jede Sekunde. Dauerhaft und ohne Pause
    4. Sonst fällt mir nix ein….

Schreibe einen Kommentar

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

Nach oben scrollen