[vz-users] Kurzes Shellskript um den SML-eHZ abzulesen

Thomas Janz janz.thomas at gmail.com
Mon Jan 7 22:43:57 CET 2013


Hallo Taki,

mir gefällt der Lösungsansatz !
Leider fehlen mir ein paar Linuxkenntnisse um das umzusetzen:

root at raspberrypi:/usr/local/etc# script /dev/ttyUSB0
Script started, file is /dev/ttyUSB0

Gruß Thomas

-----Ursprüngliche Nachricht-----
Von: volkszaehler-users-bounces at lists.volkszaehler.org
[mailto:volkszaehler-users-bounces at lists.volkszaehler.org] Im Auftrag von
Dimitrios Bogiatzoules
Gesendet: Montag, 7. Januar 2013 18:30
An: volkszaehler.org - users
Betreff: Re: [vz-users] Kurzes Shellskript um den SML-eHZ abzulesen

Dimitrios Bogiatzoules said the following on 07.01.2013 16:30:
> Hallo zusammen,
> 
> nachdem ich meinen IR-Auslesekopf ordentlich ausgerichtet hatte (war 
> dann doch überrascht, dass sich die Hexadecimalwerte ändern, wenn man 
> nicht sehr genau zielt) wollte ich schon mal was ablesen, bevor ich 
> mich an vzlogger heran mache.

... als Interimslösung und bis ich vzlogger kompiliert bekomme, habe ich das
Skript um ein paar Dinge ergänzt und liefere es mittels lighttpd als cgi
aus.

Grüße

Taki



#!/bin/bash
# read and evaluate SML output received from EMH eHZ

# set serial device
INPUT_DEV="/dev/ttyUSB0"

#set $INPUT_DEV to 9600 8N1
stty -F $INPUT_DEV
1:0:8bd:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0
:0:0:0

SML_START_SEQUENCE="1B1B1B1B0101010176"
METER_OUTPUT__START_SEQUENCE=""

while [ "$METER_OUTPUT__START_SEQUENCE" != "$SML_START_SEQUENCE" ] do
        METER_OUTPUT=`cat $INPUT_DEV 2>/dev/null | xxd -p -u -l 460`
        METER_OUTPUT__START_SEQUENCE=$(echo "${METER_OUTPUT:0:18}")
        if [ $METER_OUTPUT__START_SEQUENCE != $SML_START_SEQUENCE ];
        then
                echo "missed start and trying again..."
                #exit 1
        fi
done

 echo "Content-Type: text/html; charset=utf-8"
 echo ""
 echo "<html>"
 echo " <head>"
 echo "   <title>Zaeherauswertung</title>"
 echo " </head>"
 echo " <body>"
 echo "  <h1>Bezug</h1>"

let METER_180=0x${METER_OUTPUT:390:10}
VALUE=$(echo "scale=2; $METER_180 / 10000" |bc)
echo "Meter 1.8.0 (from plant):    " $VALUE "kWh"

 echo "  <h1>Einspeisung</h1>"

let METER_180=0x${METER_OUTPUT:347:10}
VALUE=$(echo "scale=2; $METER_180 / 10000" |bc)
echo "Meter 2.8.0 (to plant):      " $VALUE "kWh"

 echo "  <h1>Wirkleistung</h1>"


let METER_180=0x${METER_OUTPUT:519:10}
VALUE=$(echo "scale=2; $METER_180 / 10000" |bc) echo "Total effective power
(+/-): " $VALUE "W"


 echo " </body>"
 echo "</html>"




More information about the volkszaehler-users mailing list