ich habe ein Vellmann Experimentierboard und möchte vom Digitaleingang ein
CGI-Script ausführen. Also, wenn der Kontakt geschlossen wird soll das
Sript ausgeführt werden. Wie könnte das Execute-Script in diesem Fall aussehen?
Http Befehl zur Kamerasteuerung, der ausgeführt werden soll:
Eine andere Möglichkeit (wenn die fopen wrapper aus Sicherheitsgründen deaktiviert worden sind) wäre die Nutzung des WWWReader-Moduls, um die URL aufzurufen, ein system(„wget xxxx“) oder auch die Nutzungvon sockets im php.
Du bist Genial :
mach ne www-reader mit der sein URL das cgi-script.
in das IPS-script : WWWReader_UpdatePage(wwwIid);
jetzt das IPS-script triggern lassen uber den Digitaler Eingang von die USB-platine
und fertig
Leider funktioniert das mit dem wwwreader imho nur, wenn sich die Parameter in der URL nicht ändern. Zumindestens wüßte ich auf Anhieb nicht, wie ich vom Script die URL ändern kann. Deshalb auch die Alternativen mit wget und konsorten.
Vieleicht ist es eine gute Idee für die Wunsch-Liste: dem wwwreader eine funktion zum setzen der URL mitgeben.
@Tommi : ich dachte das der cgi-script immer die gleiche war. Schnappschot uber IP-camera… befehl bleibt dann gleich.
Tommi : Bitte mach ein Eintrag im wiki-ToDo (deine idee)
@Tommi:
Du kannst deinen Beispiel-Code noch etwas einfacher gestalten.
den Parameter ‚false‘ bei new IPS_XMLParser() weglassen (‚false‘ ist der default)
-> dann brauchst du auch bei SetArray() nicht die Root-Node „ID“ als Parameter übergeben
<?
require "web/includes/xmlparser.ips.php";
//Beispiel URL, diese muss vorher irgendwo zusammengebaut werden
$neue_url="http://wetter.tdressler.net";
//Setting in Array lesen, 31718 ist die InstanceID meines WWReaders
$xmldata=IPS_GetInstanceSettings(31718);
$xml = new IPS_XMLParser();
$array = $xml->GetArray( $xmldata );
$alte_URL=$array['ID']['Settings']['URL'];
echo "$alte_URL<br>";
//URL ändern und zurückspeichern
$array['ID']['Settings']['URL']=$neue_url;
$xmldata=$xml->SetArray( $array );
$result=IPS_SetInstanceSettings(31718,$xmldata);
//Test
$xmldata=IPS_GetInstanceSettings(31718);
$xml = new IPS_XMLParser();
$array = $xml->GetArray( $xmldata );
$URL=$array['ID']['Settings']['URL'];
echo "URL ist jetzt: $URL<br>";
?>
Ich habe mal die beiden verwendeten Funktionen IPS_GetInstanceSettings und IPS_SetInstanceSettings im Wiki nach meinem Wissen beschrieben. Da sind aber noch etliche „Löcher“, die noch der Ergänzung harren. Sicherlich sind da extrem nützliche Funktionen enthalten, die genutzt werden möchten.
Für die neuen Funktionen aus dem Webinterface /XML-Parser usw. sollte evtl. auch noch eine Dokumentation eingerichtet werden.
Also, wer sich damit auskennt(Torro,Olli,…), bitte auch daran denken.
ehrlich? bin ich im Moment zeitlich ueberfordert, da die neuen Funktionen fuers Webinterface zu komplex sind, dass da noch fuer andere Sachen Zeit vorhanden ist…nebenbei will ich auch mal mein IPS weiter konfigurieren
Nur wenn keiner mehr mitkommt, was Ihr tolles entwickelt habt, weil es nicht beschrieben ist und man nicht jedesmal einen Hilfeschrei im Forum loslassen möchte (den der nächste mit der gleichen Frage ohnehin nicht findet), ist es auch nicht so Klasse für Euch und für uns Nutzer.
Hmm, die Doku ist nicht ganz so einfach: IPS_GetInstanceSettings und IPS_SetInstanceSettings sind erst richtig brauchbar mit dem XMLParser und der ist eigentlich nicht Standardmässig in IPS vorhanden sondern erst mit dem Webinterface (und da muss man ggf. den Parser noch in das IPS-Skriptverzzeichnis kopieren falls man den XMLParser auch vom IPS aus benutzen möchte).
Gerade die Funktion IPS_SetInstanceSettings() kann dabei kritisch sein, da man sich die eigene settings.xml zerschiessen kann - man sollte ggf. mit zusätzlichen Backupdateien arbeiten.
Die drei Funktionen sind im Zusammenspiel ziemlich mächtig und da sind noch bei weitem nicht alle möglichen Test’s gemacht worden…
Ihr braucht Euch nicht auf den Schlips getreten fühlen, ich weiss, das es oft andere Prioritäten gibt.
Ich wollte nur dafür werben, dass neue Funktionen auch dokumentiert werden, wenn sie schon veröffentlicht werden. Sonst kommt keiner mehr mit, was nun nicht das Ziel Eurer Bemühungen sein kann.
Insofern: einmal den „Erklär-Bär“ machen und dann könnt Ihr immer auf die Doku verweisen:cool: