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

Thorben Thuermer r00t at constancy.org
Tue Jan 8 02:49:56 CET 2013


On Mon, 7 Jan 2013 22:43:57 +0100
"Thomas Janz" <janz.thomas at gmail.com> wrote:
> 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

du hast das script von Taki in eine datei gespeichert, und willst es
ausfuehren?
mit deinem aufruf dort startest du aber das programm namens 'script',
und das tut an der stelle nichts sinnvolles...
(wenn du's noch nicht getan hast, schliesse am besten die ssh-session,
 um 'script' wieder loszuwerden.)

probiere mal:
# bash /path/to/script
(oder: # chmod +x /path/to/script ; /path/to/script )

einen parameter ("/dev/ttyUSB0") erwartet das script uebrigens nicht,
der zu verwendende port steht oben im script.

AUSSERDEM funktioniert dieses script recht sicher NUR mit Taki's
zaehler, da es anstatt die sml-daten zu parsen die werte an
hardgecodeten offsets innerhalb des sml-telegramms extrahiert,
und die positionen werden bei anderen zaehlern anders sein.

Taki:
interessante idee, aber eine warnung haette nicht geschadet ;)

> Gruß Thomas

- Thorben

> -----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