Problem beim WS-3650 auslesen nach Update auf 2.2

Hallo Leute,

ich habe heute von V2.0 auf 2.2 upgedated. Soweit alles ok, bis auf ein Skript, daß mir die WS3650 über eine Exe-Datei ausliest (über den Com-Port). Die exe hab ich im Internet gefunden und es funktionierte bis jetzt auch gut.

Vielleicht habt Ihr eine Idee, woran es liegen könnte??? Für mich sieht es so aus, als ob die exe gar nicht mehr ausgeführt wird:


exec("c:\IP-Symcon\ws3600\fetch3600.exe c:\IP-Symcon\ws3600\open3600.conf",$fetcharray);
foreach ($fetcharray as $value)
{
	list($parameter,$parvalue)=explode(" ", $value);
	$ws["$parameter"]=$parvalue;
}

setvalue(45063 /*[WS3600\windspeed]*/ ,$ws["WS"]);
setvalue(25584 /*[WS3600\WindDir]*/ , $ws["DIRtext"]);

Fehlermeldungen:


Notice:  Undefined variable: ws in C:\IP-Symcon\scripts\36113.ips.php on line 10

Notice:  Undefined variable: ws in C:\IP-Symcon\scripts\36113.ips.php on line 12

Warning:  Could not convert variant of type (Null) into type (Integer) in C:\IP-Symcon\scripts\36113.ips.php on line 12

Vielen Dank schonmal im Voraus!
koenjoe

Keiner ne Ahnung??? :confused::confused: Aus einer Webseite per PHP aufgerufen, funktioniert die exe jedenfalls…

Ich häng euch mal noch die OpenSource Files der Exe mit an. Vielleicht könnte man auch relativ einfach ein Modul draus machen ???

Gruß und Danke,
koenjoe

open3600_sourcecode.zip (119 KB)

mach’ mal aus allen ‚‘ ein ‚\‘ und prüfe dann, ob in fetcharray überhaupt was steht, z.B. mit print_r.
weiter: $ws wird nur innerhalb der foreach definiert, wahrscheinlich ist aber gar kein wert ausgelesen worden, deshalb gibt es das Array gar nicht, also vorher definieren.
und: wenn ein integer/float wert „Null“ sein kann(weil nicht definiert), sollte man ihn zunächst auf „0“ setzen, bevor er an setvalue() übergeben wird, oder sinnvoller, das setvalue() dann gar nicht ausführen.

Tommi