<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Hallo liebe Gemeinde,</div>

<div> </div>

<div>gerne würde ich den Volkszähler zum Loggen der Daten aus Elster AS1440 und später noch aus itorn ACE3000 Typ 260 Zählern via Raspberry Pi nutzen.</div>

<div>Die entsprechende Hardware ist vorhanden und arbeitet soweit. Auf dem Raspi läuft derweilen das fertige Image (v4-3) von der Seite. Das Frontend/ Middleware läuft soweit, Kanäle sind angelegt und warten darauf mit Daten gefüttert zu werden. Hier kommt nun ein Problem.</div>

<div>Da mir der vzlogger ein Arbeiten mit dem Kommentar: "Something unexpected happened: read:336!" nach senden der "pullseq" verweigert, würde ich gerne die AS1440 via bash-script auslesen und die gewünschten Werte per vzclient an die middleware übergeben.</div>

<div>Nun war mein Gedanke, dass ich das bash-script für den ACE3000 von der VZ-Seite entsprechnend modifiziere.</div>

<div>http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/itron_ace3000_type_260?s[]=ace3000</div>

<div>Jetzt habe ich aber ein kleines Problem, das die AS1440 nach dem Senden der Anfrage ihren vollständigen Datensatz ausspucken  - es folgt also eine Datenausgabe für die nächsten 5 Minuten (deswegen die lange Laufzeit). Im Allgemeinen wären lediglich die OBIS-Nummern 1.7.0, 1.8.0 und 2.8.0 für mich interessant. Nach Ablauf des Scriptes finde ich für Z1, Z1E, Z1L und Z2 via cat keine Werte - weswegen es auch nichts an die middleware übergeben wird. Das Script habe ich wie folgt modifiziert:</div>

<div> </div>

<div>
<div>#!/bin/bash</div>

<div># script zum auslesen von 2 Zaehlern "Elster AS1440"<br/>
# mit 300Baud 7E1 only<br/>
# 1. Zaehler fuer Bezug und Einspeisung<br/>
# 2. Zaehler fuer Solaranalge Erzeugung<br/>
# Aufruf des Script jede Minute via cron<br/>
#<br/>
# Berechnung und Uebertragung von Eigenverbrauch und Gesamtverbrauch<br/>
# zur Berechung werden die vorhergehenden Werte benötigt<br/>
# Speicherung im Filesystem, zum Schutz des SD-Karte im Raspberry Pi<br/>
# wird ins tmpfs , hier "/run" geschrieben.</div>

<div> </div>

<div>UUID_Z1="XXXXXXXX-3ba7-11e3-XXXX-XXXXXXX"<br/>
UUID_Z1E="XXXXXXXXXXXXXXXXX"<br/>
UUID_Z1L="XXXXXXXXXXXXXXXXX"<br/>
UUID_Z2="XXXXXX-3ba7-11e3-XXXX-XXXXXXXXX"</div>

<div> </div>

<div># Init ttyUSBx<br/>
stty -F /dev/ttyUSB0 1:4:da7:a30:3:1c:7f:15:4:10:0:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0$<br/>
stty -F /dev/ttyUSB1 1:4:da7:a30:3:1c:7f:15:4:10:0:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0$</div>

<div>                                                            # Hack zum Aufwecken der Zähler im Hintergrund<br/>
( sleep 1 ; echo -e "\x2f\x3f\x21\x0d\x0a" > /dev/ttyUSB0 ) &</div>

<div>while read -t390 line                                         # warten auf die Zaehlerausgabe<br/>
do                                                          # Bestaetigung nach dem Wecken nicht noetig<br/>
  [[ "$line" =~ "1.7.0" ]] && Z1L=${line:6:8}                # Wert fuer Last<br/>
  [[ "$line" =~ "1.8.0" ]] && Z1=${line:6:8}                # Wert fuer Zaehlerstand<br/>
  [[ "$line" =~ "2.8.0" ]] && Z1E=${line:6:8}                # Wert fuer Einspeisung<br/>
done < /dev/ttyUSB0</div>

<div>                                                                 # Auslesen des 2. Zaehlers<br/>
( sleep 1 ; echo -e "\x2f\x3f\x21\x0d\x0a" > /dev/ttyUSB1 ) &<br/>
while read -t390 line<br/>
do<br/>
  [[ "$line" =~ "1.8.0" ]] && Z2=${line:6:8}                 # Zählerstand für Zähler 2<br/>
  #[[ "$line" =~ "2.8.0" ]] && Z2E=${line:6:8}                     # Wert fuer Erzeugung<br/>
  #[[ "$line" =~ "1.7.0" ]] && Z2L=${line:6:8}                     # Wert fuer Last<br/>
done < /dev/ttyUSB1</div>

<div> </div>

<div>
<div>Z1_old=$(cat /run/Z1)<br/>
echo $Z1 > /run/Z1<br/>
Z1E_old=$(cat /run/Z1E)<br/>
echo $Z1E > /run/Z1E<br/>
Z1L_old=$(cat /run/Z1L)<br/>
echo $Z1L > /run/Z1L<br/>
Z2_old=$(cat /run/Z2)<br/>
echo $Z2 > /run/Z2</div>

<div> </div>

<div># pruefen ob sich die Werte geaendert haben, wenn nicht dann wird auch nichts in die DB geschrieben</div>

<div>[ "$Z1" == "$Z1_old" ] && Z1=""<br/>
[ "$Z1E" == "$Z1E_old" ] && Z1E=""<br/>
[ "$Z1L" == "$Z1L_old" ] && Z1L=""<br/>
[ "$Z2" == "$Z2_old" ] && Z2=""</div>

<div> </div>

<div>
<div># senden der Zaehlerstände an die Middleware wenn notwendig<br/>
# statt vzclient ist auch wget oder curl möglich</div>

<div>[ -z "$Z1" ] || /usr/local/bin/vzclient -u $UUID_Z1 add data value=$Z1  > /dev/null<br/>
[ -z "$Z1E" ] || /usr/local/bin/vzclient -u $UUID_Z1E add data value=$Z1E  > /dev/null<br/>
[ -z "$Z1L" ] || /usr/local/bin/vzclient -u $UUID_Z1L add data value=$Z1L > /dev/null<br/>
[ -z "$Z2" ] || /usr/local/bin/vzclient -u $UUID_Z2 add data value=$Z2 #> /dev/null<br/>
#[ -z "$Z3" ] || /usr/local/bin/vzclient -u $UUID_Z3 add data value=$Z3 > /dev/null</div>

<div> </div>

<div>Kann mir vielleicht jemand hinsichtlich der richtigen Übergabe der Zählerwerte helfen?  Ich bin mit meinem Latain irgendwie am Ende und die ganze Sache frustet doch schon ziemlich. Schade dass ich den Logger nicht zur Mitarbeit überreden kann.</div>

<div> </div>

<div>Gruß August</div>

<div> </div>
</div>
</div>
</div></div></body></html>