Hallo zusammen,
nach der Umstellung auf die Version 7.0 funktionieren einige meiner Skripte nicht mehr, speziell die Abfrage der Daten von meiner Phoenix Contact SPS ILC350PN. Folgend findet ihr mein Skript und die dazugehörige Fehlermeldung.
<?
//include(IPS_GetScriptFile(52434 ));
//
//$file = "pdd.csv";
//$delimiter = ",";
//$data_pdd = get2DArrayFromCsv($file,$delimiter);
// Anlegen der Variablen aus csv Datei
//$anzahl = count($data_pdd); // Anzahl der anzulegenden Variaben
// standard string append
//$str = '';
//for ($i = 1; $i < $anzahl; $i++) {
// $str .= '<i><n>'.$data_pdd[$i][0].'</n></i>';
//}
//$xml_data = "<body><item_list>".$str."</item_list></body>";
$xml_data = GetValueString(30572 );
$anzahl = GetValue(54739 );
//$xml_data = 15888 ;
//$anzahl = 21730 ;
//<version>1.0</version><client>ILC_PDD</client><client_ver>0.01</client_ver><item_list_size>10</item_list_size>
$URL = "http://192.168.1.152/cgi-bin/ILRReadValues.exe";
$ch = curl_init($URL);
//curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
//echo $output;
//Pass results to the SimpleXMLElement function
try{
$xml = new SimpleXMLElement($output);
//print_r($xml);
} catch (Exception $e) {
echo $e;
exit;
}
$parID = IPS_GetCategoryIDByName("HTTP", 0);
//Schleife zum Anlegen der Variablen
for($i=0; $i<($anzahl-1); $i++)
//$i=30;
{
$varName = $xml->item_list[0]->i[$i]->n;
$varWert = $xml->item_list[0]->i[$i]->v;
//echo $varWert;
$varID = IPS_GetVariableIDByName((string)$varName, $parID);
if ($varID === false)
echo "Objekt nicht gefunden!";
else
//echo "Die Objekt-ID lautet: ". $varID;
$varInfo = IPS_GetVariableCompatibility($varID);
$varTyp = $varInfo["VariableType"];
switch ($varTyp) {
case 0:
if ($varWert == '0')
{
SetValueBoolean($varID, FALSE); // Boolean
}
if ($varWert == '1')
{
SetValueBoolean($varID, TRUE); // Boolean
}
break;
case 1:
SetValue($varID, (integer)$varWert); // Integer
break;
case 2:
SetValue($varID, (float)$varWert); // Float
break;
case 3:
SetValue($varID, (string)$varWert); // String
break;
}
}
?>
Fehlermeldung:
Fatal error: Uncaught ArgumentCountError: Too few arguments to function IPSLogger_PhpErrorHandler(), 4 passed and exactly 5 expected in C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php:24
Stack trace:
#0 [internal function]: IPSLogger_PhpErrorHandler(2, 'Variable mit de...', 'C:\\ProgramData\\...', 67)
#1 C:\ProgramData\Symcon\scripts\14963.ips.php(67): IPS_GetVariableIDByName('ZENTRAL.Zentral...', 56209)
#2 {main}
thrown in C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php on line 24
Fatal error: Uncaught ArgumentCountError: Too few arguments to function IPSLogger_PhpErrorHandler(), 4 passed in C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_Output.inc.php on line 91 and exactly 5 expected in C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php:24
Stack trace:
#0 C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_Output.inc.php(91): IPSLogger_PhpErrorHandler(8192, 'Function utf8_d...', 'C:\\ProgramData\\...', 91)
#1 C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_Output.inc.php(506): IPSLogger_OutLog4IPS(1, 'Error', 'PHP', 'Error: Uncaught...')
#2 C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_Output.inc.php(39): IPSLogger_invokeLoggers(1, 'Error', 'PHP', 'Error: Uncaught...', '\n 134 in scrip...', 0)
#3 C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php(134): IPSLogger_Out(1, 'Error', 'PHP', 'Error: Uncaught...')
#4 C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php(33): IPSLogger_Err('PHP', 'Error: Uncaught...')
#5 C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php(121): IPSLogger_PhpErrorHandler(1, 'Uncaught Argume...', 'C:\\ProgramData\\...', 24, NULL)
#6 [internal function]: IPSLogger_PhpFatalErrorHandler()
#7 {main}
Habe eine ähnlich Fehlermeldung im Forum gefunden und daraufhin auch die IPSLogger_PhpErrorHandler.inc.php angepasst, scheinbar ohne Erfolg. Kann mir evtl. jemand helfen oder einen Tipp geben?
Danke und schöne Grüße
Daniel