@DeejayT:
Wenn du willst, dass die Skripte bei abgeschalteter Box keine Fehlermeldung ausspucken, dann bau doch eine simple Abfrage über Ping ein!? Also wenn kein Ping, dann keine weitere Skriptausführung. Könnte auch noch erweitert werden um eine Status-Anzeige und ein „gesperrt-Flag“, welches wiederum in anderen Skripten ausgewertet und verarbeitet werden könnte…
Beispiel:
$receiverIP = 192.168.1.60
$receiverStatus = 12345 // ID einer Bool-Variable für den Status
$ping = Sys_Ping($receiverIP, 1000);
if ($ping == true){
SetValue($receiverStatus, true);
}
else {
SetValue($receiverStatus, false);
}
if (GetValue($receiverStatus) == false) {
// mach nichts
}
else {
// schalte um, mache dies, mache jenes
}
Ich würde gerne Aufnahmen aus der Aufnahmeliste löschen.
Ich bekomme aber leider die Fehlermeldung:
Warning: file_get_contents(http://192.168.55.37:80/web/moviedelete?sRef=1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3A/hdd/movie/20130806 1845 - RTL Television - RTL Aktuell.ts): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
in D:\IP-Symcon\scripts\f_Enigma_2.ips.php on line 1242
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in D:\IP-Symcon\scripts\f_Enigma_2.ips.php:1242
Stack trace:
#0 D:\IP-Symcon\scripts\f_Enigma_2.ips.php(1242): SimpleXMLElement->__construct('')
#1 D:\IP-Symcon\scripts\38405.ips.php(4): ENIGMA2_MovieDelete('192.168.55.37:8...', '1%3A0%3A0%3A0%3...')
#2 {main}
thrown in D:\IP-Symcon\scripts\f_Enigma_2.ips.php on line 1242
Abort Processing during Fatal-Error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in D:\IP-Symcon\scripts\f_Enigma_2.ips.php:1242
Stack trace:
#0 D:\IP-Symcon\scripts\f_Enigma_2.ips.php(1242): SimpleXMLElement->__construct('')
#1 D:\IP-Symcon\scripts\38405.ips.php(4): ENIGMA2_MovieDelete('192.168.55.37:8...', '1%3A0%3A0%3A0%3...')
#2 {main}
thrown
Error in Script D:\IP-Symcon\scripts\f_Enigma_2.ips.php on Line 1242
Die Zeile auf die sich die Fehlermeldung bezieht sind so aus:
$xmlResult = new SimpleXMLElement(file_get_contents('http://'.$ipadr.'/web/moviedelete?sRef='.$sref));
Wenn ich die URL Zeile so in einen Browser kopiere und dann absende dann wird die Aufnahme gelöscht. Hat jemand von Euch eine Idee wie man das zum Laufen bekommt?
Das ist nicht der Stream sondern nur die Bezeichnung der Aufnahme die ich zum Löschen übergeben muss.
Ich habe mal probiert „file_get_contents“ durch „SYS_GetURLContent“ auszutauschen, da bekomme ich folgende Fehlermeldung:
Warning: Socket Error # 11001
Host not found. in D:\IP-Symcon\scripts\f_Enigma_2.ips.php on line 1243
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in D:\IP-Symcon\scripts\f_Enigma_2.ips.php:1243
Stack trace:
#0 D:\IP-Symcon\scripts\f_Enigma_2.ips.php(1243): SimpleXMLElement->__construct('')
#1 D:\IP-Symcon\scripts\38405.ips.php(4): ENIGMA2_MovieDelete('192.168.55.37:8...', '1%3A0%3A0%3A0%3...')
#2 {main}
thrown in D:\IP-Symcon\scripts\f_Enigma_2.ips.php on line 1243
Abort Processing during Fatal-Error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in D:\IP-Symcon\scripts\f_Enigma_2.ips.php:1243
Stack trace:
#0 D:\IP-Symcon\scripts\f_Enigma_2.ips.php(1243): SimpleXMLElement->__construct('')
#1 D:\IP-Symcon\scripts\38405.ips.php(4): ENIGMA2_MovieDelete('192.168.55.37:8...', '1%3A0%3A0%3A0%3...')
#2 {main}
thrown
Error in Script D:\IP-Symcon\scripts\f_Enigma_2.ips.php on Line 1243
Zum Besseren Verständis:
Ich möchte mir eine Liste der Aufnahmen ausgeben lassen und in der Liste die Möglichkeit haben einzelne Aufnahmen zu löschen.
Grundsätzlich lässt sich so auch die Aufnahme löschen. Mein Problem ist nur wenn ich auf delete drücke löscht er die Aufnahme und wechselt auf die Webseite der Dreambox mit dem Response also aus dem Webfront raus. Ich suche nun eine Möglichkeit wie ich den Befehl zum Löschen absetzten kann ohne das ich aus der Ansicht des Webfront rauskomme sondern eben nur eine kurze Mitteilung bekomme das das Löschen erfolgreich war.
Daher wollte ich ausprobieren mit einem Formularbutton eine Funktion aufzurufen die mir dann die Aufnahme löscht. beim Aufrufen der Funktion erscheint dann aber leider der oben genannte Fehler.
Wenn also jemand eine Idee hat wie ich in einer HTML Box einen Befehl absetzten kann ohne die HTMLBox bzw. das Webfront zu verlassen wäre ich dankbar.
Die Funktion die ich aufrufe ist einfach nur:
/*
* Löscht eine Aufnahme auf der Festplatte
*/
function ENIGMA2_MovieDelete($ipadr, $sref)
{
$xmlResult = new SimpleXMLElement(SYS_GetURLContent("http://'.$ipadr.'/web/moviedelete?sRef='.$sref"));
//$xmlResult = new SimpleXMLElement(file_get_contents('http://'.$ipadr.'/web/moviedelete?sRef='.$sref));
return $xmlResult;
}
Spontan ohne groß drüber nachzudenken würde ich sagen > pack das Löschen in ein anderes IPS-Skript und ruf das, aus der HTML Box, mit einem Button, über die IPS-API, auf. Mit Übergabe von IP und „sref“. IPS Funktionen in einer HTMLBox nutzen
Das mit dem Senden und Aufrufen von einem Script bzw. Funktion habe ich ja schon probiert. Ich habe dafür einfach JSON benutzt wie hier beschrieben
Datenaustausch — IP-Symcon :: Automatisierungssoftware
Das Problem bleibt aber leider trotzdem bestehen da ich ja die besagte Fehlermeldung s.o. bekomme wenn ich die Funktion aufrufen will. Ich müsste also die Funktion anpassen damit diese keinen Fehler auswirft. Hast Du dazu noch eine Idee?
Fehler-Ausgabe unterdrücken kann man mit einem „@“
/*
* Löscht eine Aufnahme auf der Festplatte
*/
function ENIGMA2_MovieDelete($ipadr, $sref)
{
$xmlResult = new SimpleXMLElement(@SYS_GetURLContent("http://'.$ipadr.'/web/moviedelete?sRef='.$sref"));
//$xmlResult = new SimpleXMLElement(@file_get_contents('http://'.$ipadr.'/web/moviedelete?sRef='.$sref));
return $xmlResult;
}
Aber statt nur zu unterdrücken, sollte man eher dem Fehler auf die Schliche kommen… Außer es funktioniert alles und es ist nur ein doofes Fehler der unwichtig ist
2 Meldungen sind ja „speziell“ bei dir:
>> Host not found
>> String could not be parsed as XML
Wobei der 2. Fehler vmtl. ein Folgefehler zum 1. Fehler ist.
Hab mir grad mal das Dreambox „Projekt“ eingebaut, welches du vermutlich im Einsatz hast. Und beim Skript „Sender Anzeigen“ kommt bei mir der gleiche Fehler - WENN ich gerade eine Aufnahme anschaue.
Aber so allgemein…bei dem Projekt, welches über den Installer von Raketenschnecke installiert wird, ist VIIIIEL Arbeit reinzustecken, damit man da was von verwenden kann. So „out of the box“ funktioniert da bei mir kaum was.
Ich habe die Fehlerursache hoffentlich gefunden muss aber noch testen ob nicht doch noch irgendwelche Fehler auftreten. Ursache ist einerseits das die sref Leerzeichen enthält. Diese müssen bevor sref an die Funktion bzw. file_get_contents übergeben wird durch %20 ersetzt werden. Der zweite Fehler lag in der Schreibweise bei der Funktion.
/*
* Löscht eine Aufnahme auf der Festplatte
*/
function ENIGMA2_MovieDelete($ipadr, $sref)
{
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/moviedelete?sRef=$sref"));
return $xmlResult;
}
sollte jetzt wohl gehen. Wenn ich alles ausgiebig getestet habe poste ich es dann hier rein.
Da musst Du mal im Dreambox Forum fragen ob es z.B. möglich ist mit Bluepanel auf Gelb eine Aktion zu legen das ein http Request abgesetzt wird. Dann könntest Du den http Request der Dreambox entgegennehmen den eigentlichen Befehl für Gelb ausführen und das ausführen warum Du willst das IP-Symcon den Tastendruck mitbekommt.
wenn ich die gelbe taste drücke geht camfos auf der VU Solo 4k auf und zeigt meine Aussenkamera. hätte das auch gern auf IPS… was ich damit dann konkret machen möchte weiß ich ehrlich gesagt noch garnicht:-D
Wie kann ich einen Request von z.b. einem WLAN Modul abgreifen… dieser sendet an die VU einen Befehl das die gelbe taste gedrückt wird… Habe PRaktisch schon den Auslöser…wie kann ich diesen in IPS abgreifen… Bin leider kein IT PRofi aber hab nen kompetenteren Nachbarn der das dann sicherlich mit mir hinbekommt:-)
weiter frage ist: wenn ich den befehl z.b. sekündlich abfrage belaste ich mir doch das netz?!
Tatbestand ist folgender: gehe mit meinem Klingeltaster auf ein NodeMcu Lua CH340G ESP8266 . dieses sendet dann den befehl Gelbe taste an der Vu und das Bild erscheint auf dem TV. möchte dies aber evtl gern in IPS weiterverarbeiten… Danke für Tips:)
JA… das klingelsignal geht an das: NodeMcu Lua CH340G ESP8266
Dieses sendet per WLAN ein Signal an die VU…
Also müsste ich dieses Signal nur per IPS abfragen…