[vz-users] vzlogger d0-parser (was: Re: Landis&Gyr E350 - ZxF100Ax/Cx)

Christian Neuhold christian.neuhold at gmail.com
Wed Oct 16 19:59:02 CEST 2013


Hallo, dieses Script macht schon was ähnliches:

( sleep 1 ; echo -e "\x2f\x3f\x21\x0d\x0a" > /dev/ttyUSB0 ) &

while read -t8 line                                         # warten auf die Zaehlerausgabe
do                                                          # Bestaetigung nach dem Wecken nicht notwendig
  [[ "$line" =~ "1.8.0" ]] && Z1=${line:6:8}                # Wert fuer Bezug
  [[ "$line" =~ "2.8.0" ]] && Z2=${line:6:8}                # Wert fuer Einspeisung
done < /dev/ttyUSB0

                                                                 # Auslesen des 2. Zaehlers
( sleep 1 ; echo -e "\x2f\x3f\x21\x0d\x0a" > /dev/ttyUSB1 ) &
while read -t8 line
do
#  [[ "$line" =~ "1.8.0" ]] && Z2_in=${line:6:8}                 # wird hier nicht benoetigt
  [[ "$line" =~ "2.8.0" ]] && Z3=${line:6:8}                     # Wert fuer Erzeugung
done < /dev/ttyUSB1
Von der Seite: http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/itron_ace3000_type_260

Wenn man den echo Befehl mit einem & sleep 2 & sleep 2 && echo -n -e '\x06000\r\n' funktioniert es mit meinem Zähler. 

( echo -n -e '/?!\r\n' > /dev/ttyUSB0 && sleep 2 && echo -n -e '\x06000\r\n' > /dev/ttyUSB0 ) &

Vorausgesetzt ich gebe die Befehle direkt in die Konsole ein. In einem Script bekomme ich vom Zähler keine Daten. Ich versuche das ganze gerade in Perl zu lösen. Den Output bekomme ich schon. Das ist ein kleiner Erfolg verglichen mit dem Bash-Script.


Ein: stty -F /dev/lesekopf0 300 parenb -parodd cs7 -cstopb raw -echo 
reicht um die Schnittstelle richtig zu konfigurieren. Der Output endet immer mit einem "!" und  danach mit einer unbestimmten Ziffer. Bis jetzt zwischen 1 und 4 ….

Vollständiger Output:
/?!

/LGZ5ZMF100AC.M25
000
F.F(00)
C.1.0(13037922)
0.0(13037922        )
C.1.1(        )
1.8.0(000434.208*kWh)
1.8.1(000286.397*kWh)
1.8.2(000147.811*kWh)
2.8.0(000585.331*kWh)
2.8.1(000585.331*kWh)
2.8.2(000000.000*kWh)
15.8.0(001019.540*kWh)
0.2.0(M25)
0.2.1(3533)
C.5.0(0601)
31.7(000.61*A)
51.7(001.03*A)
71.7(000.40*A)
16.7(000.25*kW)
!
1

Es müssen immer beide echo Befehle eingegeben werden, damit der Zähler reagiert.

LG, Christian


On Oct 16, 2013, at 5:41 PM, Thorben Thuermer <r00t at constancy.org> wrote:

>> Am 16.10.2013 12:35, schrieb Thorben Thuermer:
>>> Peter Evertz, Tue Oct 15 23:34:41 CEST 2013:
>>>> Ich fliege zwar "blind" mangels zähler, aber ich würde sagen der
>>>> vzlogger code kann nicht funktionieren. Ist also etwas schwieriger als
>>>> "send pullseq2"
>>> ja, der code funktioniert.
>>> (zumindest frueher ohne pullseq mit zaehlern die von sich aus senden)
>>> wie kommst du darauf, das er ganz kaputt sein sollte?
>>> 
>>> der parser ist halt nicht toll und sollte mal neu geschrieben werden.
>> 
>> danke für die Infos. Ich würde gern den Parser neu schreiben damit er 
>> etwas "robuster" ist. Gegen den E350 kann der Code IMHO nicht gehen, 
>> daher die Frage ob ihn überhaupt jemand benutzt.
>> 
>> Könnt Ihr mir die Zähler nennen die funktionieren, und am besten eine 
>> Link zur Doku. Damit ich, wenn ich versuche die anderen Zähler 
>> einzubinden, nicht die alten kaputt mache.
>> Sowas wie dieses wäre super:
>> Zusätzlich wäre wichtig zu wissen:
>> - Schickt Ihr ( z.B. per Script) eine Pullsequenz ?
>> - Antwortet der Zähler dann kontinuierlich, oder nur einmal?
> 
> mutig mutig, dass du die aufgabe uebernehmen willst!
> 
> ich hatte auch die ueberlegung, erstmal ein test-set von zaehlerausgaben
> zu sammeln, um dann den parser dagegen testen zu koennen.
> (wichtig ist, dass die korrekt geloggt werden, da sie auch nicht-druckbare
> zeichen enthalten koennen!)
> einige sollten sich schon im wiki finden, ansonsten sollte man nochmal
> einen aufruf auf der liste machen.
> 
> das wird aber bei den pull-sequenzen wenig helfen,
> weil dort zT. auch das timing kritisch ist, etc.,
> und man das ohne die hardware eh nicht testen kann.
> 
> ich denke wichtig ist:
> ein parser, der robust ist, und alles was einigermassen d0 ist verarbeiten kann.
> zB. damit klarkommt, wenn die anforderungssequenz aufgrund von reflektionen
> mit zurueckgelesen wird, vorhandensein von <STX> bytes oder nicht,
> endmarkeriung am ende des telegramms oder nicht, etc...
> vlt. einfach eher per brute-force nach gueltigen zeilen suchen.
> 
> sowie eine engine zum erzeugen von anforderungssequenzen die flexibel genug ist
> um beliebige zaehler bedienen zu koennen.
> man muesste halt zu sendende zeichen konfigurieren koennen,
> pausen, abzuwartende antworten, baudraten-wechsel...
> 
> macht halt alles nicht unbedingt spass...
> 
>> Grüße
>> Peter
> 
> - Thorben

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20131016/21724860/attachment-0001.html>


More information about the volkszaehler-users mailing list