[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