Stromzähler mit S0-Impulsausgang an Raspberry Pi mit Volkszähler auswerten

Ich nutze seit geraumer Zeit das freies Smart Meter von Volkszähler, um meinen Stromverbrauch am Stromzähler grafisch zu erfassen. Ich habe als Stromzähler eine “moderne Messeinrichtung”, also einen Stromzähler mit SML Datenschnittstelle. Aber um diesen Zähler soll es heute gar nicht gehen. Interessieren soll uns heute ein einfach Wechselstromzähler mit einem Impulsausgang.

Der Impulsausgang wird in diesem Fall “S0”-Schnittstelle genannt und ist nicht mit der gleichnamigen S0-Schnittstelle von ISDN zu verwechseln. Im Prinzip handelt es sich um einen potentialfreien Schaltkontakt, der oft über einen Optokoppler ausgeführt ist, so auch in meinem Beispiel bei dem Wechselstromzähler Typ DDS5188. Dieser gibt wür jede “verbrauchte” Kilowattstunde 2000 Impulse aus, sprich einen Impuls pro 0,5 Wattstunden. Die Anbindung an Volkszähler, genauer gesagt den VZLogger hat mir einiges an grauen Haaren bereitet, denn ich wollte nicht die Impulse aufsummiert dargestellt haben, sondern live die verbrauchte Leistung darstellen.

Hardware-Setup

In den meisten Fällen haben die Zähler einen “S0+”- und einen “S0-“-Anschluss. Ich habe den “S0-“-Anschluss direkt auf Masse gelegt, wenn der Zähler einen Impuls ausgibt, wird der “S0+”-Anschluss also gegen Masse gezogen. Damit dieser sonst nicht in der Luft hängt, kann man am GPIO den Pullup-Widerstand aktivieren, oder man baut einen ein, wie im Schaltplan dargestellt. Wichtig: Die GPIO des Raspberry Pi sind nicht 5V-tolerant, man muss den Pullup also auf 3,3V legen!

Wechselstromzähler mit S0 Impulsausgang am Raspberry Pi Zero

Bei jedem Impuls des Zählers, also bei jeder “verbrauchten” halben Wattstunde bekommt der Raspberry Pi an GPIO 18 (Pin 12) nun also einen negativen Impuls von einigem Millisekunden. Nun gilt es, den vzlogger dafür zu konfigurieren.

Konfiguration des vzloggers

Die Konfiguration des vzloggers befindet sich in der Datei /etc/vzlogger.conf und muss mit root rechten bearbeitet werden. Es folgt eine erläuterte Beispiel-Konfiguration für den Zähler:

{
  "retry": 0,
  "verbosity": 3, //die SD-karte nicht zu sehr belasten...
  "log": "/var/log/vzlogger.log",
  "local": {  //Ich möchte auf lokal auf die Daten zugreifen, ohne push
    "enabled": true,
    "port": 8084,
    "index": true,
    "timeout": 0,
    "buffer": 0
  },
  "meters": [
  {
    "enabled": true,
    "allowskip": false,
    "aggtime": 0, //Die Daten werden nicht zusammengefasst
    "aggfixedinterval": false,
    "aggmode": "sum",
    "protocol": "s0", //S0-Impulse
    "gpio": 18, //Broadcom-Pin an dem der Impulsausgang hängt
    "mmap": "",
    "gpio_dir": -1,
    "configureGPIO": true, //vzlogger soll die GPIO für mich konfigurieren
    "resolution": 1, //hier könnte man die 2000 Impulse pro kWh eintragen
    "send_zero": false, //keine Nullen übertragen
    "channels": [
        {
          "uuid": "4307f540-dcb4-11eb-b124-5da08f82312d",
          "identifier": "Power", //DAS ist die wichtigste Stelle! Wer hier "Impulse" einträgt bekommt nicht die aktuelle Leistung
          "api": "volkszaehler",
          "middleware": "http://localhost/middleware.php",
          "timeout" : 10,
          "duplicates": 30
        }
    ]
  }
  ]
}

Das Ganze kann dann so aussehen:

Leistung dargestellt über die Zeit

Möchte man mehrere Zähler mit einem Raspberry Pi auslesen, so müssen mehrere “meters” in geschweiften Klammern angelegt werden. Leider auch dann, wenn man pro Phase einen S0-Ausgang hat.

Als kleinen Tipp am Ende kann ich noch die fertigen Images für den Raspberry Pi von Volkszähler empfehlen: https://wiki.volkszaehler.org/howto/raspberry_pi_image

4 Kommentare

  1. Hi,
    gibt es noch eine Bezugsquelle für den Zähler oder ist das ein DIY mit Phototransistor?
    Wie kann mit VZ ein Zweirichtungszähler ausgewertet werden?
    Cruiz ElektroFix

    1. Hallo!

      Für einen einfachen Stromzähler einfach “S0 Stromzähler” bei eBay suchen. Mein Modell ist schon gar nicht mehr verfügbar.

      Für Zweirichtungszähler wird’s dann schon komplexer. Da empfehle ich einen Blick auf diesen Artikel: https://go-seven.de/2021/10/easymeter-stromzaehler-in-home-assistant-einbinden/ und den Gebrauchtmarkt von Easymeter Stromzählern.

      Wenn es nur für den Eigenbedarf ist, und nicht zur Abrechnung, dann kann man sich auch einen Shelly 3EM einbauen (lassen). Preislich ist das vergleichbar mit dem Easymeter.

  2. Hi,
    danke für die ausführliche Erklärung speziell der Config Ausführungen für die S0 Schnittstelle. Ich habe bereits meine Hauptzähler über die IR Schnittstelle am VZLogger und möchte noch einen S0 Zähler aus einer Einliegerwohnung dazu nehmen, kenne mich aber zu wenig mit S0 aus. Eines würde mich daher interessieren: Hast Du das S0 – Ausgangssignal von Deinem Zähler direkt am Pi verwendet oder einen externen Optokoppler verwendet?
    Wenn ich in der Doku meines Zählers (ELTAKO DSZ15D 3×80) schaue, steht beim S0 Signal nämlich folgendes:

    Schnittstelle lmpulsausgang S0 nach DIN EN 62053-31,
    potenzialfrei durch einen Optokoppler,
    max. 30V DC/2OmA u. min.5V DC.
    Impedanz 100 Ohm,
    Impulslänge 30ms, 1000Imp./kWh

    Die 5-30V machen mich halt stutzig…

    Danke!

    1. Hallo Tobias!

      Der im Datenblatt erwähnte Optokoppler sitzt bereits im Zähler. Du kannst dir die zwei Anschlüsse vorstellen wie zwei Pins eines Tasters, der alle X kWh gedrückt wird. Ich habe einen der Pins mit GNS (Masse, Minus, Null, Erde) verbunden und den anderen mit einem GPIO des Raspberry. Damit “nicht gedrückt” aber ein definiertes Signal gibt, muss man den Pin am GPIO des Raspberry noch auf 3,3V (niemals 5V) “ziehen”. Dazu nutzt man einen Wiserstand mit 10 kOhm (10000 Ohm) oder mehr. Wenn jetzt der gedankliche “Taster gedrückt” wird, liegen kurz am GPIO des Raspberry das GND-Signal an statt wie sonst die 3,3 V. Diese “negative Flanke” kann man registrieren und zählen. Und das mach der Volkszähler für dich.

      Wichtig ist nur, dass dir dein Datenblatt sagt, welcher der beiden Anschlüsse am Zähler an “GND” muss. Sonst funktioniert der Aufbau nicht.

      Gruß

      Pascal

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.