Auslesen eines Stromzählers

Seit einigen Jahren produzieren wir einen Teil unseres Stroms selber und einen Teil davon verkaufen wir. Bei der Inbetriebnahme der Anlage war auch ein “Gateway” eingeplant mit dem man den aktuellen Bezug und Verkauf von Strom auslesen kann. Dieses Gerät hat einen optischen Lesekopf und einen Netzwerkadapter und “spukt” dann über einen bestimmten Port seine Informationen in einem bestimmten Format (SML) aus. Wie üblich sind diese Ausgaben natürlich für unterschiedliche Zählertypen nicht gleich.

So weit die Theorie. Charly Kühnast hat in einem Blogeintrag die generelle Vorgehensweise beschrieben. Seine Scripte machen noch etwas mehr als ich brauche (und verstehe) aber auf dieser Basis konnte ich dann nach etwas mühseliger Suche die richtigen Stellen in den SML Nachrichten finden an denen die richtigen Werte stehen.

Der Zähler ist vom Typ eHZ-IW. der Firma EMH.

    #!/bin/bash
    SERVER=pv-com1:5000
    /usr/bin/wget  -4 -d -a com1.log $SERVER -O aktuelle_daten.neu.txt &
    sleep 3;
    killall -9 wget;
    if $(test -s aktuelle_daten.neu.txt); then
      mv aktuelle_daten.neu.txt aktuelle_daten.txt
    fi
    tail aktuelle_daten.txt |grep SML|uniq|tail -1|cut -f2 -d\(|cut -f1 -d\) > aktuelle_daten_sauber.txt
    BEZUGZAEHLERSTAND=$(cat aktuelle_daten_sauber.txt|cut -b401-410);
    BZZDEZIMAL=$(echo "ibase=16;obase=A;$BEZUGZAEHLERSTAND"|bc);
    BZZKWH=$(echo "scale=4;$BZZDEZIMAL/10000"|bc -l);
    BZZWH=$(echo "scale=1;$BZZDEZIMAL/10"|bc -l);
    echo "Der aktuelle Bezugszaehlerstand ist $BZZKWH kWh oder $BZZWH Wh.";
    EINSPEISEZAEHLERSTAND=$(cat aktuelle_daten_sauber.txt|cut -b443-452);
    EINSPDEZIMAL=$(echo "ibase=16;obase=A;$EINSPEISEZAEHLERSTAND"|bc);
    EINSPKWH=$(echo "scale=4;$EINSPDEZIMAL/10000"|bc -l);
    EINSPWH=$(echo "scale=1;$EINSPDEZIMAL/10"|bc -l);
    echo "Der aktuelle Einspeisezaehlerstand ist $EINSPKWH kWh oder $EINSPWH Wh."

So als nächstes muss ich einen Weg finden wie ich die Daten ablege und dann in schönen Grafiken darstelle.

Stromzähler auswerten