[vz-users] Kurzes Shellskript um den SML-eHZ abzulesen
Dimitrios Bogiatzoules
info at bogiatzoules.de
Tue Jan 8 11:13:49 CET 2013
Dimitrios Bogiatzoules said the following on 08.01.2013 10:28:
[...]
> Details zu liefern. Wie dem auch sei, ich habe sowieso einen Fehler im
> Wirkleistungsbereich entdeckt, sodass ich irgendwann noch eine Korrektur
> nachliefern muss....
Hier meine aktuelle Variante ein wenig aufgehübscht, damit man das
Ergebnis auf den Smartphones im Haus ordentlich lesen kann.
Grüße
Taki
Hinweis: bitte dafür sorgen, dass bc, stty und xxd auf dem Zielsystem
vorhanden sind. Die Datei gespeichert als read.sh und mittels chmod +x
ausführbar gemacht, verwende ich als cgi-Skript, man kann sie aber auch
gekürzt um die Zeilen
echo "Content-Type: text/html; charset=utf-8"
echo ""
echo ""
mittels cron aufrufen und sich regelmäßig eine html-Seite generieren lassen:
/path/to/read.sh > /path/to/htdoc/read.html
--------------------------
#!/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 365`
METER_OUTPUT__START_SEQUENCE=$(echo "${METER_OUTPUT:0:18}")
done
echo "Content-Type: text/html; charset=utf-8"
echo ""
echo ""
echo "<html>"
echo " <head>"
echo " <title>Zählerauswertung</title>"
echo " <meta name=\"viewport\" content=\"width=device-width,
initial-scale=1.0, user-scalable=no\">"
echo " </head>"
echo " <body>"
echo " <h1> Zählerstände </h1>"
let METER_180=0x${METER_OUTPUT:390:10}
VALUE=$(echo "scale=2; $METER_180 / 10000" |bc)
echo " <tt>Bezug.......: " $VALUE "kWh</tt><br>"
let METER_180=0x${METER_OUTPUT:347:10}
VALUE=$(echo "scale=2; $METER_180 / 10000" |bc)
echo " <tt>Einspeisung.: " $VALUE "kWh</tt><br>"
let METER_180=0x${METER_OUTPUT:518:8}
VALUE=$(echo "scale=2; $METER_180 / 10" |bc)
echo " <tt>Wirkleistung: " $VALUE "W</tt>"
echo " </body>"
echo "</html>"
More information about the volkszaehler-users
mailing list