script auf Raspi ausfuehren

Hallo
Ich habe ein Script das ich auf dem Raspi ausführe

pi@raspberrypi:/var/lib/symcon $ ./as1440
usage: ./as1440 -F device -O obisval1[:obisval2...] [-p password ] [-v] [-n] [-e]
  -v    verbose
  -n    don't add units
  -e    endless loop (end with ctrl-c)

pi@raspberrypi:/var/lib/symcon $ ./as1440 -F /dev/ttyUSB0 -O 1.7.0:1.8.0 -v
opening /dev/ttyUSB0
init tty
init tty ok
init
init ok
change baudrate to B9600
change baudrate to B9600 ok
sendpwd
sendpwd ok
readack
readack ok
1.7.0   0.006 kWnotfound
1.8.0   00010078.7 kWhnotfound
hangup
hangup ok

Das ganze sollte in IPS so aufgerufen werden

<?php

$result[] = shell_exec("/var/lib/symcon/scripts/as1440 -F /dev/ttyUSB0 -O 1.7.0:1.8.0 -v"); 

print_r ($result);

Ich erhalte aber nur

Array
(
    [0] => 
)

Wie erhalte ich die Ausgabe wie auf der Console?

Und wie beschneide ich dann direkt, ich denke mal über Trim, sowie hier

$data = trim ( trim ( strstr ($string , '1.8.0(' , false ), ')' ), '1.8.0(' );

Wobei ich noch nicht verstanden habe was und wie der da genau den Text verarbeitet.
In den Orginalscript aus dem ich die Trimzeile habe wird allerdings falsch beschnitten, da kommt satt 10078.7 nur 78.7 raus

damit ich nur die Zahlenwerte in verschiedene Variablen schreiben kann?

Bernd

Sorry… Ich doof
Man sollte schon den Pfad richtig angeben.

Jetzt stehe ich aber vor dem Problem, das er wohl nur eine Zeile ausgibt.

$data[] = shell_exec('/var/lib/symcon/as1440 -F /dev/ttyUSB0 -O 2.8.0:1.8.0 -v'); 

print_r ($data);

Array
(
    [0] => 2.8.0	00007398.2 kWhnotfound
1.8.0	00010088.5 kWhnotfound

) 

Wie kann ich die zahlen in Variablen schreiben?
Ich hab schon

$lines = explode(",", strip_tags($data));
print_r($lines); //zeigt in welchen Zeilen was steht.

aus einem anderen Script probiert

aber da in dem Array keine Kommas sind, stehe ich auf dem Schlauch.

Bernd

Versuche ich das mit der Auswertung aus einem anderen Script, das im Original aus einer Registervariable liest.

$data[] = shell_exec('/var/lib/symcon/as1440 -F /dev/ttyUSB0 -O 2.8.0:1.8.0 -v -n'); 

print_r ($data);

$string = $data;

$header = strstr ($string , '(' , true );

if ($header == '1.8.0')

{
    $data = trim ( trim ( strstr ($string , '1.8.0(' , false ), ')' ), '1.8.0(' );
        SetValueFloat (47381 /*[Energie\Hausanschluß Haus 16\As1440\Verbrauch Gesamt 1.8.0]*/, $data);
}
if ($header == '2.8.0')
{
    $data = trim ( trim ( strstr ($string , '2.8.0(' , false ), ')' ), '2.8.0(' );
        SetValueFloat (42257 /*[Energie\Hausanschluß Haus 16\As1440\Einspeisung Gesamt 2.8.0]*/, $data);
Warning:  strstr() expects parameter 1 to be string, array given in /var/lib/symcon/scripts/13638.ips.php on line 9

meckert er das es kein String ist, ist ja auch eine Array…

Ich bitte um eure Hilfe
bernd

Kleines Stück weiter?

$data = shell_exec('/var/lib/symcon/as1440 -F /dev/ttyUSB0 -O 2.8.0:1.8.0 -v -n'); 
list($zeile1, $zeile2) = explode("notfound", $data);
echo trim($zeile1,"2.8.0	notfound");
echo trim($zeile2,"1.8.0	notfound");

Ergibt

7399.5
1.8.0	00010089.5

Warum beschneidet er nur die erste Zeile und nicht mehr die zweite?

Meine Loesung, nicht schoen aber selten.

<?php

$data = shell_exec('/var/lib/symcon/as1440 -F /dev/ttyUSB0 -O 2.8.0:1.8.0:2.7.0:1.7.0 -v -n -t'); 
//echo $data;

//print_r ($data);
$werte = preg_split("/[\s,]+/", $data);
//print_r($werte);
$temp = ($werte[1]);
$Out180 = trim ($temp, 'notfound');
        SetValue (57421 /*[Energie\Hausanschluß Haus 16\Strom\As1440\Bezug Zählerstand 1.8.0]*/, $Out180); 
$temp = ($werte[3]);
$In280 = trim ($temp, 'notfound');
        SetValue (25607 /*[Energie\Hausanschluß Haus 16\Strom\As1440\Einspeisung Zählerstand 2.8.0]*/, $In280); 
$temp = ($werte[5]);
$Out170 = trim ($temp, 'notfound');
        SetValue (14160 /*[Energie\Hausanschluß Haus 16\Strom\As1440\Wirkleistung (Out) 1.7.0]*/, $Out170); 
$temp = ($werte[7]);
$In270 = trim ($temp, 'notfound');
        SetValue (18970 /*[Energie\Hausanschluß Haus 16\Strom\As1440\Wirkleistung (In) 2.7.0]*/, $In270); 
?>