Suche Doku zur Webauslese

Hallo Zusammen,
auch auf die Gefahr hin mich lächerlich zu machen, aber ich steh voll auf dem Schlauch. Bitte ggf, auch nur einen Link zur richtigen Suche posten. :confused:

Folgende Aufgabe:
Per WWW-Reader frage ich den IO-Port einer Axis M1054 Webcam ab:
http://172.26.57.110/axis-cgi/io/output.cgi?checkactive=1
Die Antwort ist:
output1=inactive oder
output1=active
Per TextParser versuche ich die Antwort in eine Variable zu bekommen, zuerst schneide ich alles bis zum ‚=‘ ab:
‚ID 1 Vorher Abschneiden bis =‘ danach versuche ich mittels
‚ID 2 Hole Text 1‘ das ganze in eine Variable zu bekommen?
Das geht irgendwie nicht…
Mein Ziel ist es die Antwort ‚inactive‘ bzw ‚active‘ in eine boolean Variable mit ‚true‘ bzw. ‚false‘ zu bekommen.

Mit der Bitte um einen heißen Tip und schöne Grüße aus OBC

Kea

Mein Ziel ist es die Antwort ‚inactive‘ bzw ‚active‘ in eine boolean Variable mit ‚true‘ bzw. ‚false‘ zu bekommen.

schreibst du es zuerst in eine String-Variable?

Hi,

schreibst du es zuerst in eine String-Variable?

…das habe ich bis jetzt noch nicht geschafft.
Alle meine Versuche den ausgelesenen Wert in eine Varibale zu schreiben hat leider nicht funktioniert…
Viele Grüße

Kea

Hallo Kea,

das mit dem „ID 2 Hole Text 1“ klappt so nicht. Du müsstest nach dem Abschneiden mit der ID 1, den Text in einem Script nachbearbeiten.

Als Alternative ohne WWWReader könntest Du auch das folgende Script testen:

 	echo getOutput("http://DEINE-URL");
 	
 	function getOutput ($url) {
 	   $result = file_get_contents($url);
 	   if (strpos($result,"inactive")) return false;
		                           else return true;
 	}

Schöne Grüße
Roland

Hi,

vielen Dank, das Script läuft ohne Fehler durch (habe mal eine andere url eingetragen, dann beschwert es sich).
Jedoch scheint das Script nicht zu greifen, auf der IP-Symcon Homepage (meines Servers) steht immer false, auch wen der Wert „true“ sein sollte.
Auch habe ich noch die Frage, wie aus der Antwort des Scriptes eine Variable wird. In der Spalte „Wert“ steht „40772.ips.php“?

Viele Grüße
Kea

In dem Du das „return false bzw. true“ durch den entsprechenden Befehl ersetzt. Vorher die gewünschte Variable erzeugen, falls nicht schon geschehen.

SetValueBoolean: IP-Symcon :: Automatisierungssoftware

Gruß
Bruno

Hallo Kea,

in der IF-Abfrage war ein Fehler. Versuch es mal damit:

     
if (getOutput("http://DEINE-URL")) echo "true"; else echo "false";

function getOutput ($url) {
  $result = file_get_contents($url);
  if (strpos($result,"inactive") === false) {
    return true;
  } else {
    return false;
  }
}

Der Teil ist sehr rudimentär. Hier mal eine Möglichkeit wie es später aussehen könnte:

	echo getOutput("DEINE-URL","Output1");  //URL,Variablenname für Aktualisierung

	function getOutput ($url,$varname) {
		global $IPS_SELF;
		$result = file_get_contents($url);
		if ($result) {
			if (strpos($result,"inactive") === false) {
            SetValueBoolean(CreateVariableByName($varname,IPS_GetParent($IPS_SELF)),true);
			} else {
				SetValueBoolean(CreateVariableByName($varname,IPS_GetParent($IPS_SELF)),false);
			}
			return true;
		} else return false;
	}
     
  	function CreateVariableByName($name,$parentID)
  	{
    	global $IPS_SELF;
    	$vid = @IPS_GetVariableIDByName($name, $parentID);
    	if($vid === false)
      	{
        		$vid = IPS_CreateVariable(0);
        		IPS_SetParent($vid, $parentID);
        		IPS_SetName($vid, $name);
      	}
    	return $vid;
 	}

Für eine zyklische Aktualisierung der Variable musst Du das Script noch mit einem Ereignis triggern.

Schöne Grüße
Roland

Hallo Roland,

vielen Dank für das Script.
Es funktioniert genau wie es soll,
jetzt werde ich es mal „zerlegen“ um es genau (bzw. so gut es geht) zu verstehen.

Das sind meine ersten Schritte mit IPS, die Variablen sind noch nicht ganz meine Freunde.

Schönen Abend und Dank auch die anderen Helfer.

Kea

file_get_contents sollte gegen Sys_GetURLContent getauscht werden, damit gab es in der Vergangenheit oft Probleme und ab PHP 5.4 auch Funktionalitätseinschränkungen.