D0-Zähler Landis & Gyr auslesen

Hallo,

ich habe es mit Hilfe der Suche Funktion und diversen verschiedenen anderen Foren schon geschaft meinen Landis & Gyr Zähler via D0 und ser2net am PI auszulesen.

Jetzt komme ich leider nicht mehr weiter,…

Meine Registervariable erhält alles vom Cutter. Soweit so Gut. Leider schaffe ich es nicht aus der Registervariable via Skript meine Bezugsvariable zu befüllen.

Meine Registervariable befüllt sich vom Cutter alle Minuten brav mit folgenden Werten:

HEX: 46 2E 46 28 30 30 29 0D 0A 43 2E 31 2E 30 28 31 33 39 34 31 33 32 38 29 0D 0A 30 2E 30 28 31 33 39 34 31 33 32 38 20 20 20 20 20 20 20 20 29 0D 0A 43 2E 31 2E 31 28 20 20 20 20 20 20 20 20 29 0D 0A 31 2E 38 2E 31 28 30 30 30 30 30 30 2E 30 30 30 2A 6B 57 68 29 0D 0A 31 2E 38 2E 32 28 30 31 35 39 31 35 2E 39 37 34 2A 6B 57 68 29 0D 0A 32 2E 38 2E 31 28 30 30 30 30 30 30 2E 30 30 30 2A 6B 57 68 29 0D 0A 32 2E 38 2E 32 28 30 31 30 32 35 36 2E 38 32 37 2A 6B 57 68 29 0D 0A 31 2E 38 2E 30 28 30 31 35 39 31 35 2E 39 37 34 2A 6B 57 68 29 0D 0A 32 2E 38 2E 30 28 30 31 30 32 35 36 2E 38 32 37 2A 6B 57 68 29 0D 0A 31 35 2E 38 2E 30 28 30 32 36 31 37 32 2E 38 30 39 2A 6B 57 68 29 0D 0A 30 2E 32 2E 30 28 4D 32 35 29 0D 0A 30 2E 32 2E 31 28 33 37 35 41 29 0D 0A 43 2E 35 2E 30 28 30 34 32 31 29 0D 0A 43 2E 37 2E 30 28 30 30 32 38 29 0D 0A 33 32 2E 37 28 32 32 37 2A 56 29 0D 0A 35 32 2E 37 28 32 32 33 2A 56 29 0D 0A 37 32 2E 37 28 32 32 37 2A 56 29 0D 0A 31 36 2E 37 28 30 30 31 2E 30 34 2A 6B 57 29 0D 0A 21 0D 0A 
TXT: F.F(00)<CR><LF>C.1.0(13941328)<CR><LF>0.0(13941328        )<CR><LF>C.1.1(        )<CR><LF>1.8.1(000000.000*kWh)<CR><LF>1.8.2(015915.974*kWh)<CR><LF>2.8.1(000000.000*kWh)<CR><LF>2.8.2(010256.827*kWh)<CR><LF>1.8.0(015915.974*kWh)<CR><LF>2.8.0(010256.827*kWh)<CR><LF>15.8.0(026172.809*kWh)<CR><LF>0.2.0(M25)<CR><LF>0.2.1(375A)<CR><LF>C.5.0(0421)<CR><LF>C.7.0(0028)<CR><LF>32.7(227*V)<CR><LF>52.7(223*V)<CR><LF>72.7(227*V)<CR><LF>16.7(001.04*kW)<CR><LF>!<CR><LF>

In Ziel unter der Registervariable ist folgendes Script definiert:

<?

SetValueFloat(40868 /*[Strom\Zählerstände\Bezug]*/ ,(hexdec(substr(bin2hex($IPS_VALUE), 164, -174))));


?>

Leider landen in meiner Bezugsvariable (40868) keine Werte.

Kann mir bitte wer auf die Sprünge helfen?

Danke,
lg
Herby

Die Daten sind doch im Klartext.
Also lass hexdec als auch bin2hex weg.
Bei Substr habe ich jetzt nicht gezählt, wird aber eh Problematisch sobald sich die Länge der Zeichenkette verändert.
Und wozu ein Cutter? Was soll der machen?
Sinnvoll ist es die Daten erstmal mit explode auf
( CR & LF) in ein Array zu bekommen.
Dann kannst du mit Foreach das Array durchwandern und vergleichst die ersten Ziffern bis du den gewünschten Eintrag vor der Klammer gefunden hast und schreibst den Wert zwischen den Klammern in deine Variable.
Alternativ geht auch ein Cutter auf hex 0D 0A und dahinter ein Textparser, dann brauchst du gar kein Script.
Michael

Hi,

Sorry du schreibst es so einfach, aber nicht jeder hat eine hochwissenschaftliche Ausbildung.

Geht das auch etwas verständlicher?

Danke
Lg
Herbert