IPS 5.4: Clean-Up des Status Log - ScriptEnging Warning Message bei IPS_RunScriptEx

so… heute mit einem Symcon-Hygiene Thema…

Ich starte Scripte oft mit Übergabe von Parametern aus PHP heraus via >>IPS_RunScriptEx<< .
Das funktioniert gut.

Nachdem ich gerade das IPS >>Status Log<< anschau um die kleinen PHP Sünden bereinigen bin ich jetzt mit oben genannter Funktion und der daraus resultierenden WARNING stuck.

Hier die Warning:

M.E. ist die Warning so zu interpretieren, dass das aufgerufene Script erfolgreich gelaufen ist.

ABER… ich hab bisher keinen Ansatz gefunden mein verwendetes PHP so zu ändern, dass die WARNING der ScriptEngine nicht mehr kommt.

Was überseh ich ?

homa

Nimm einfach die „echo“ oder anderen Ausgaben aus dem Skript raus.

paresy

bis auf ein auskommentiertes echo ist nur noch eine IPS_LogMessage drin die eine Fehlermeldung ausgibt wenn der CURL Aufruf schief geht…

diese log message würde ich nur ungern rausnehmen…

Das LogMessage ist es nicht. Irgendetwas generiert die sichtbare Ausgabe. Das musst du abstellen.

paresy

muss wohl der Wald sein der mir den Blick auf die Bäume nimmt…

wenn ich nicht komplett blind bin ist keine Ausgabe in Form von Echo oder ähnlichem verbaut.

Hier mal das script (entpersonalisiert)

<?
        //==================================
	// Variablen Definition
	//==================================
		$parm1 = "dummy";
		$parm2 = 4711;
		$parm3 = "0";
		$parm4 = "";
		$parm5 = "";
		$pushover_msg = "empty";
		$ch = 0;
		//$device = "XPeriaZ3";
		$device = "XPeriaZ3"."gt-p5210";
		$tmp_sound = "echo";

	//==================================
	// Get values of array
	// passed by caller
	//==================================
		switch(true)
        {
            case(array_key_exists('p1',$_IPS)):
                $parm1 = $_IPS['p1'];
              break;
            case(array_key_exists('p2',$_IPS)):
                $parm2 = $_IPS['p2'];
              break;
            case(array_key_exists('p3',$_IPS)):
                $parm3 = strval($_IPS['p3']);
              break;
            case(array_key_exists('p4',$_IPS)):
                $parm4 = strval($_IPS['p4']);
              break;
            case(array_key_exists('p5',$_IPS)):
                $parm5 = strval($_IPS['p5']);
              break;        
            default:  
        }

        

		if($parm4 == "ALARM")
		{
			$tmp_sound = "alien";
		}

		if($parm5 != "")
		{
		   $device = $device.$parm5;
		}
		
	//==================================
	// Set the pushover message
	// Set up Pushover Rest Service Array
	//==================================
		$pushover_msg = $parm1."   [".$parm2."]";
      
  		curl_setopt_array
		(
			$ch = curl_init(),
			array
			(
				CURLOPT_URL => "https://api.pushover.net/1/messages.json",
				CURLOPT_SSL_VERIFYPEER => false,
				CURLOPT_POSTFIELDS => array(
    				"token" => "<homa's token>",
    				"user" => "<homa's user>",
    				"message" => $pushover_msg,
    				"priority" => $parm3,
    				"retry" => "30",
    				"expire" => "300",
//    				"sound" => "echo",
					"sound" => $tmp_sound,
    				"device" => $device,
    				//"title" => "tester"
  				),
			)
		);

	//==================================
	// If you got a successful handle
	//  ==> Fire the Pushover message
	// Else
	//  ==> log an error
	//==================================
		if($ch != 0)
		{
			curl_exec($ch);
			curl_close($ch);
		}
		else
		{
		   IPS_LogMessage ("PushOver Transmitter", "Script-ID: 38365: PushOver Message kann nicht gesendet werden..., CURL handle = ".strval($ch));
			exit ("Script-ID: 38365: PushOver Message kann nicht gesendet werden..., CURL handle = ".strval($ch));
		}
?>

Beliebt (bei mir) sind auch weitere Zeichen hinter ?>

Nimm am besten ?> ganz weg. Das braucht man nicht mehr und wird auch irgendwann „verboten“.

Aber in deinem Fall ist es das Exit mit Stringausgabe.

ok… bin den brotkrumen gefolgt und habe >> ?> << am Ende des Scripts entfernt…

… leider ohne den gewünschten Erfolg… die Warning bleibt mir treu

Hallo
Bau mal folgendes in dein Script ein :

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

>>1007<<

die CURLOPT_RETURNTRANSFER war der richtige Tip. Eingebaut und das Elend hat ein Ende.

Vielen Dank!

homa