Ich habe seit einiger Zeit Fehlermeldungen beim Auslesen von INFO des Fully Kiosk Browser.
17.11.2019, 12:21:01 | ScriptEngine | Result for Event 13368
<br />
<b>Notice</b>: Undefined offset: 1 in <b>C:\IP-Symcon\scripts\25345.ips.php</b> on line <b>25</b><br />
<br />
<b>Notice</b>: Undefined offset: 1 in <b>C:\IP-Symcon\scripts\25345.ips.php</b> on line <b>25</b><br />
<br />
…ca. 3 dutzend mal…
<b>Notice</b>: Undefined offset: 1 in <b>C:\IP-Symcon\scripts\25345.ips.php</b> on line <b>25</b><br />
<br />
<b>Notice</b>: Undefined index: Battery level in <b>C:\IP-Symcon\scripts\25345.ips.php</b> on line <b>41</b><br />
<br />
<b>Notice</b>: Undefined offset: 1 in <b>C:\IP-Symcon\scripts\25345.ips.php</b> on line <b>44</b><br />
<br />
<b>Warning</b>: Cannot auto-convert value for parameter VariableValue in <b>C:\IP-Symcon\scripts\25345.ips.php</b> on line <b>49</b><br />
Das Scribt:
<?
//Fully Kiosk Browser INFO auslesen
$IP="xxx"; //IP-Adresse
$PW="xxx"; //Passwort fully
$homepage = file_get_contents('http://'.$IP.':2323/?password='.$PW); // Fully Device Info Page als HTML einlesen
$Inhalt=explode("<h1>Fully Info</h1>", $homepage); //HTML-Code bei "Fully Info" unterteilen
$Inhalt=$Inhalt[1]; //mit Fully Info-Daten weiter
$Inhalt = explode("
", $Inhalt); //Daten zeilenweise aufteilen
$data=array(); //Daten-Array definieren
foreach($Inhalt as $Zeile) //Zeilenweise abarbeiten
{
if ($Zeile!=="") //leere Zeilen ignorieren
{
$Zeile=str_replace('<tr class="table-row"><td class="table-cell">', '', $Zeile); //bestimmten HTML-Tag löschen
$Zeile=str_replace('</td><td class="table-cell">', '=>', $Zeile); //bestimmen HTML-Tag löschen/ersetzen
$Zeile=str_replace('</td></tr>', '', $Zeile); //HTML-Tag löschen
$Zeile=strip_tags($Zeile); // restlich HTML-Tag löschen
if ($Zeile!="" and $Zeile!="Device Info") //Daten in Array schreiben
{
$Zeile=explode("=>",$Zeile); // Key und Value erzeugen
$data=array_merge($data, array($Zeile[0] => $Zeile[1])); //neuen Array an Data-Array anhängen !!!ZEILE 25!!!
}
}
}
$data2=json_encode($data); //Daten ins JSON-Format konvertieren
SetValue(16661 /*[Kategorielos\Webfront Tablet ansteuern\P9702_Fully Info\JSON]*/, $data2); //Daten in eine Variable schreiben
//===========================================================================================================================
//z.B. AKKUSTAND:
$data=GetValue(16661 /*[Kategorielos\Webfront Tablet ansteuern\P9702_Fully Info\JSON]*/);
$data=json_decode($data, true);
//print_r ($data);
//var_dump($data);
$akku=$data['Battery level'];
$akku=explode("%", $akku);
$power = trim ($akku[1]," ()"); // !!!ZEILE44!!!
echo $power;
$akku=$akku[0];
SetValue(23112 /*[Kategorielos\Webfront Tablet ansteuern\P9702_Fully Info\Akku]*/, $akku);
SetValueString(44793 /*[Kategorielos\Webfront Tablet ansteuern\P9702_Fully Info\Plug]*/, $power);
?>
Kenn ich, hier mußt Du das Array anzeigen lassen und dann den Eintrag wie im einfachem Beispiel hier (in die Variable (~HTML)) schreiben.
IP, PortNr und Passwort anpassen
Gruß Helmut
Warum das Script jetzt Fehler wirft, muß Dir jemand aus der PHP Ecke erklären, davon habe ich zu wenig, bis keine Ahnung.
Ich war froh, dass ich mir damit geholfen hatte.
Gruß Helmut
OK die Fehler (Zeile25 und das dutzende mal) werden dann nicht mehr gemeldet. Aber die Weiteren schon (Zeile 41,44,49). Es wäre Blödsinn nun alles mit @ zu unterdrücken. Es scheint sich was im Befehl oder bei den Fully Info Daten geändert zu haben.
Gruß Helmut
PS: Das wäre ein gutes Objekt um die Möglichkeiten der App Fully Kiosk in ein Modul zu packen, leider reicht mein IQ für sowas nicht ;-( , spende aber gerne eine Plus-License für Modul-Macher.
Rest Api Erklärung ist für mich aber schon eine Quelle um mit IP-symcon schicke Sachen zumachen.
In $homepage steht alles mögliche. Daraus wird das Array $Inhalt gebildet (hat Helmut schon gezeigt.)
$data müsste jetzt das Array nochmal aufteilen. Z.B. [28] => Screen brightness117 in [Screen brightness] => 117
Und da muss sich was geändert haben.
wenn das im Array das aktuelle Format ist, dann kann das Skript oben nicht mehr funktionieren. Im Skript wird nach „=>“ als Trennzeichen gesucht. Das gibt es aber nicht. Auch sonst ist kein gemeinsames Trennzeichen mehr zu erkennen, so dass es nur mit ein bisschen Gefrickel funktioniert. Wie lange so ein Gefrickel dann Bestand hat, ist fraglich.
Ggf. schickt Ihr mir mal den Inhalt von $homepage per PN und dazu eine Liste der Daten, die Ihr braucht. Dann gucke ich mal, was ich machen kann.
Hallo Jürgen, wenn Du ein Android Tablet hast, lade Dir die Fully Kios App mal runter und nutze einfach mein Script von #2 , nur die IP anpassen müßte reichen, das Standart Passwort ist 1234.
Per PN was schicken ist zu lang, wird angemeckert, meine MailADR ist in meinem WWW wenn Du 's brauchst.
Gruß Helmut
Ich wusste auch nicht wie man den Inhalt von $homepage am besten versendet.
Aber ich habe den Fehler gefunden. Fully (oder PHP?) hat einige " in ’ geändert. Also zB „table-row“ in ‚table-row‘
In Helmut’s Beispielscript fehlt noch einiges. Da kann man zB. den Batterylevel nicht so ohne weiteres in eine Variable schreiben. Daher hier noch mal alles lauffähig:
<?php
//Fully Kiosk Browser INFO auslesen
$IP="xxx"; //IP-Adresse
$PW="xxx"; //Passwort fully
$homepage = file_get_contents('http://'.$IP.':2323/?password='.$PW); // Fully Device Info Page als HTML einlesen
$Inhalt=explode("<h1>Fully Info</h1>", $homepage); //HTML-Code bei "Fully Info" unterteilen
$Inhalt=$Inhalt[1]; //mit Fully Info-Daten weiter
$Inhalt = explode("
", $Inhalt); //Daten zeilenweise aufteilen
//print_r($Inhalt);
$data=array(); //Daten-Array definieren
foreach($Inhalt as $Zeile) //Zeilenweise abarbeiten
{
if ($Zeile!=="") //leere Zeilen ignorieren
{
$Zeile=str_replace("<tr class='table-row'><td class='table-cell'>", '', $Zeile); //bestimmten HTML-Tag löschen
$Zeile=str_replace("</td><td class='table-cell'>", '=>', $Zeile); //bestimmen HTML-Tag löschen/ersetzen
$Zeile=str_replace('</td></tr>', '', $Zeile); //HTML-Tag löschen
$Zeile=strip_tags($Zeile); // restlich HTML-Tag löschen
if ($Zeile!="" and $Zeile!="Device Info") //Daten in Array schreiben
{
$Zeile=explode("=>",$Zeile); // Key und Value erzeugen
$data=array_merge($data, array($Zeile[0] => $Zeile[1])); //neuen Array an Data-Array anhängen
}
}
}
$data2=json_encode($data); //Daten ins JSON-Format konvertieren
SetValue(16661 /*[Kategorielos\Webfront Tablet ansteuern\P9702_Fully Info\JSON]*/, $data2); //Daten in eine Variable schreiben
//===========================================================================================================================
//z.B. AKKUSTAND:
$data=GetValue(16661 /*[Kategorielos\Webfront Tablet ansteuern\P9702_Fully Info\JSON]*/);
$data=json_decode($data, true);
//print_r ($data);
//var_dump($data);
$akku=$data['Battery level'];
$akku=explode("%", $akku);
$power = trim ($akku[1]," ()");
echo $power;
$akku=$akku[0];
SetValue(23112 /*[Kategorielos\Webfront Tablet ansteuern\P9702_Fully Info\Akku]*/, $akku);
SetValueString(44793 /*[Kategorielos\Webfront Tablet ansteuern\P9702_Fully Info\Plug]*/, $power);
PS: ob „xx“ oder ‚xx‘ da komme ich immer durcheinander. Gibt es dazu eigentlich eine Regel?
Leider wirft das Skript wieder einige Fehler. Bei Fully wurde vor einiger Zeit wohl wieder etwas geändert. Wie ich das bisher sehe gibt es schon die Sequenz Fully Info nicht.
Hat schon jemand heraus gefunden was geändert werden muss?