"fully kiosk browser" mjpeg.cgi video.cgi IP-Cam stream wird nicht angezeigt

Hallo Zusammen,

ich nutzte als Anzeige für IPS ein Android-Tablett und darauf die App „fully kiosk browser“. Das funktioniert hervorragend, bis auf eine Kleinigkeit: die Video-Streams meiner IP-Cams werden nicht angezeigt (URL ist z.B. http://<ip>/video.cgi). Der Firefox auf dem Tablett zeigt richtig an.

Welche Einstellung im „fully kiosk browser“ verhindert die Anzeige?

Ich nutze den gleichen Browser, zeige aber nur ein Standbild meiner jeweiligen Kamera an.
Externe Streams (z.b Autobahn Cam´s) werden ohne Probleme angezeigt.

Dafür habe ich ein anderes Problem. Nach einem Tag aktualisiert der Browser nicht mehr die Zustände wie Schalter ec…
Es geht dann erst wieder nach einem Neustart des „fully kiosk browsers“.

Bei Problemen kannst Du den Entwickler anschreiben, der ist sehr offen und unkompliziert.
Ich hatte auch schon Wünsche geäußert, diese wurden prompt erledigt. :slight_smile:

Der Fully Kiosk hat eine Remote Api, damit starte ich diesen einmal täglich neu.

<?
$IP=IPS_GetObject(IPS_GetObject(IPS_GetParent($_IPS['SELF']))['ParentID'])['ObjectInfo'];
//echo $IP;

if (Sys_Ping($IP, 1000)== true)
	{

		fopen("http://$IP:2323/?cmd=restartApp&password=passwort","r"); // Fully Kiosk Browser neu starten.
		
	}
?>

Über einen Bewegungsmelder neben dem Tablet steuere ich auch das Ein-/Ausschalten des Displays über den Fully Kiosk.

An:

<?
$IP=IPS_GetObject(IPS_GetParent($_IPS['SELF']))['ObjectInfo'];

if (Sys_Ping($IP, 1000)== true)
	{
//		fopen("http://$IP:50000/screenon","r"); // mediaplayer 24
		fopen("http://$IP:2323/?cmd=screenOn&password=passwort","r"); // Fully Kiosk Browser
		IPS_SetScriptTimer(15667 /*[Bornkamp 4\Geräte nach Standort\Küche\EDV\192.168.029.035 - XORO\Display aus]*/, 0);
		IPS_SetScriptTimer(15667 /*[Bornkamp 4\Geräte nach Standort\Küche\EDV\192.168.029.035 - XORO\Display aus]*/, 5*60);
	}
?>

Aus:

<?
$IP=IPS_GetObject(IPS_GetParent($_IPS['SELF']))['ObjectInfo'];

if (Sys_Ping($IP, 1000)== true)
	{
		// fopen("http://$IP:50000/screenoff","r");  // mediaplayer 24
		fopen("http://$IP:2323/?cmd=screenOff&password=passwort","r"); // Fully Kiosk Browser
		IPS_SetScriptTimer($_IPS['SELF'], 0);
	}
?>

Lördy

Danke für den Hinweis.
Ich hatte allerdings auch schon mehrfach mit dem Entwickler Kontakt. Er konnte nicht weiter helfen da es wohl nach seiner Aussage an Android selbst liegt,
Dein Tip mit dem täglichen Neustart ist ein guter Ansatz.

Ich arbeite mit der Bewegungserkennung in seiner Software. Funktioniert außer im Dunkeln sehr gut.

Hallo Zusammen,

wie bekommt man die Werte des Java-Script-Interface nach IPS?
http://www.ozerov.de/fully-kiosk-browser/de/#rest

Mich würde insbesondere der Batteriestatus interessieren.

Dieser Einschub in eine HTML-Box bringt ein POP-UP mit dem gewünschten Wert, aber das ist nicht ganz das was mir vorschwebt:

<script>
alert(fully.getBatteryLevel());
</script>

Ich habe auch ein Konstrukt mit

document.getElementById('Akku').innerHTML = fully.getBatteryLevel();

und

<p>Akkustand: <b/ id='Akku'>%</p>

versucht. Leider wird der Wert nicht übertragen.

Wo liegt das Problem?
versucht.

Zwei Lösungsansätze sind im folgenden Script enthalten (Ausgabe in eine HTML-Textbox / Ausgabe als Einschub (entity).


<HTML>

<HEAD>

    <TITLE>Fully Daten</TITLE>

<script language="JavaScript">

function FullyDaten() {

	var Inh=""; //Inhalt definieren
	Inh = "BatteryLevel: " + fully.getBatteryLevel() + "
";
	Inh = Inh + "CurrentLocale: " + fully.getCurrentLocale() + "
";
	Inh = Inh + "Ip4Address: " + fully.getIp4Address() + "
";
	Inh = Inh + "Ip6Address: " + fully.getIp6Address() + "
";
	Inh = Inh + "MacAddress: " + fully.getMacAddress() + "
";
	Inh = Inh + "WifiSsid: " + fully.getWifiSsid() + "
";
	Inh = Inh + "SerialNumber: " + fully.getSerialNumber() + "
";
	Inh = Inh + "DeviceId: " + fully.getDeviceId() + "
";
	Inh = Inh + "ScreenBrightness: " + fully.getScreenBrightness() + "
";
	Inh = Inh + "ScreenOn: " + fully.getScreenOn() + "
";
	Inh = Inh + "isPlugged: " + fully.isPlugged() + "
";
	
	document.myform.area.value=Inh; // Inhalt Textarea zuweisen

	}
	
window.onload = FullyDaten;
</script>

</HEAD>

<BODY BGCOLOR="#FFFFFF">

    <Form name=myform>
		<CENTER>
			<TEXTAREA NAME=area ROWS=11 COLS=50 WRAP=virtual></TEXTAREA>	
		</CENTER>
	</FORM>
<div id="AkkuStand"/>
<script>document.getElementById("AkkuStand").innerHTML = "Akkustand: " + fully.getBatteryLevel() + "%";</script>
</BODY>

</HTML> 

Frage an JavaScript-Profies: Warum kann der JS-Code nicht im „HEAD“ stehen, sondern muss nach dem HTML ID-Container stehen? Kann man das auch anders lösen?

Das Grundproblem bleibt: die Schnittstelle im Fully ist an dieser Stelle Java-Script-basiert. Wie bekommt man diese Daten nach PHP, bzw. nach IPS?

Sorry das sich hier zwei Themen zum Fully-Browser inzwischen mischen. Für die anfängliche Frage konnte ich einen Workaround zusammen mit dem hilfsbereiten Fully-Entwickler finden: den Stream in einen HTML <img> Container verpacken. Und das sieht so aus:


<?
$up="user:password@";
$up="";
$style='height="100%"';
SetValue(37944 /*[Zuhause\Hardware\Cams\MR-161-CAM]*/,'<img src="http://'.$up.'10.0.0.161/mjpeg.cgi" '.$style.' />');
SetValue(30476 /*[Zuhause\Hardware\Cams\MR-162-CAM]*/,'<img src="http://'.$up.'10.0.0.162/mjpeg.cgi" '.$style.' />');
SetValue(58350 /*[Zuhause\Hardware\Cams\MR-163-CAM]*/,'<img src="http://'.$up.'10.0.0.163/mjpeg.cgi" '.$style.' />');
SetValue(33731 /*[Zuhause\Hardware\Cams\MR-164-CAM]*/,'<img src="http://'.$up.'10.0.0.164/mjpeg.cgi" '.$style.' />');
SetValue(34281 /*[Zuhause\Hardware\Cams\MR-165-CAM]*/,'<img src="http://'.$up.'10.0.0.165/mjpeg.cgi" '.$style.' />');
SetValue(44941 /*[Zuhause\Hardware\Cams\MR-166-CAM]*/,'<img src="http://'.$up.'10.0.0.166/mjpeg.cgi" '.$style.' />');

$style='height="325"';
$value='
<center>
	<table>
		<tr>
			<th><img src="http://'.$up.'10.0.0.162/mjpeg.cgi" '.$style.'/></th>
			<th><img src="http://'.$up.'10.0.0.163/mjpeg.cgi" '.$style.'/></th>
			<th><img src="http://'.$up.'10.0.0.166/mjpeg.cgi" '.$style.'/></th>
		</tr>
		<tr>
			<th><img src="http://'.$up.'10.0.0.165/mjpeg.cgi" '.$style.'/></th>
			<th><img src="http://'.$up.'10.0.0.164/mjpeg.cgi" '.$style.'/></th>
			<th><img src="http://'.$up.'10.0.0.161/mjpeg.cgi" '.$style.'/></th>
		</tr>
	</table>
</center>';
SetValue(31577 /*[Zuhause\Hardware\Cams\AlleCams]*/, $value);
?>

Der Fully-Browser läuft bei mir auf Android 4.4.2 und Samsung GT-P5210. Die User:Password-Lösung funktioniert im Fully leider hier nicht. Laut Entwickler ist die WebEngine in Andriod 4.4 Ursache „meiner“ Probleme (soweit ich ermitteln konnte ist diese WebEngine nicht weiter update-bar).

Besonderheit zum Skript:
Da ich es in IPS bislang nicht geschafft habe mit dem Seitenteiler 6 Fenster zu erzeugen, habe ich meine 6 CAMs via HTML-Tabelle zusammengefasst.

Da ich über die REST-API nicht an Daten wie „Batterie Level“ komme, habe ich einen Parser für die Fully-Website geschrieben. Damit stehen nun alle Daten nach belieben zur Verfügung. Falls das jemand besser gelöst hat… bin ich ganz Ohr.


<?
$IP="192.168.168.22"; //IP-Adresse
$PW="2654"; //Passwort

$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
		}
	}
}
$data2=json_encode($data); //Daten ins JSON-Format konvertieren

SetValue(12883 /*[Zuhause\Hardware\Fully Kiosk Browser\Fully Kiosk Browser\JSON]*/, $data2); //Daten in eine Variable schreiben

?>

An den Akkustand kommt man dann beispielsweise so


<?
$data=GetValue(12883 /*[Zuhause\Hardware\Fully Kiosk Browser\Fully Kiosk Browser\JSON]*/);
$data=json_decode($data, true);

$akku=$data['Battery level'];
$akku=explode("%", $akku);
$akku=$akku[0];

SetValue(25060 /*[Zuhause\Hardware\Fully Kiosk Browser\Fully Kiosk Browser\Akku]*/, $akku)
?>

Kann jemand mal kurz beschreiben wie vorgehen muss um mit IPS zugriff auf den Fully Browser im Heimnetz zu bekommen?
Bedingungen in Fully, welche IP Adresse wo… muss man ein Passwort verwenden e.c.
Mir ist es noch nicht gelungen Zugriff zu bekommen.

Den habe ich auch gerade für mich entdeckt :wink:

Du mußt die Adresse Deines Tablet wissen, dann kannst zum Beispiel die oben aufgeführten Scripte nutzen
zuvor eine stringvariable erstellen wohin es geschrieben wird.

Wenn das Script ausgeführt werden soll muß die Full Kiosk app laufen


<? 
$IP="192.168.0.191"; //IP-Adresse 
$PW="xyz"; //Passwort 

$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 
        } 
    } 
} 
$data2=json_encode($data); //Daten ins JSON-Format konvertieren 

SetValue(28627 /*[Full Kiosk Tablett\String Variable Tablett]*/, $data2); //Daten in eine Variable schreiben 

?> 

Gruß Helmut

Laut seiner Webseite funktioniert der Remote Zugriff nur in der Plus Version.
Hast Du evtl. nur die freie?
Ich weiß gar nicht mehr wie es bei mir war, der läuft nun schon gut 2 Jahre bei mir völlig problemfrei.
Aufgrund der Funktionsvielfalt und dem guten Support des Entwicklers ist der aber seine 5€ wert.
( meine Meinung )

Lördy

Ich habe z.Zt. nur die freie. Aber laut Fully Homepage soll man 1 Monat alles nutzen können. Aber ich bekomme immer nur die Meldungen failed to open stream… Verbindungsaufbau abgelehnt.
Ich habe kein Passwort vergeben und daher

$PW=""; //Passwort 

Kann es daran liegen?

Edit: Ohne Passwort geht nicht und man muss noch unter Fully / Settings / Remot Administrations … einige Dinge freigeben. Dann läuft es. (Es erscheint ein Wasserzeichen auf dem Bildschirm Fullversion kaufen)

„Über einen Bewegungsmelder neben dem Tablet steuere ich auch das Ein-/Ausschalten des Displays über den Fully Kiosk.“

Hallo Lördy

ich versuche mich gerade an der Fkt. En/Ausschalten Display über Bewegungsmelder.
ich habe Deine Script so angelegt. Beide laufen ohne Fehler, aber es tut sich am Tablet nichts.
Das Akkuscript aus den Beitrag weiter funktioniert einwandfrei.

Muss man bei den Settings noch etwas einschalten?

Ich habe meinen Fehler gefunden, Wenn man nicht alles 1:1 überträgt. Es funktioniert alles. Danke

Thomas

Hast Du die Bewegungserkennung über die Kamera schon versucht, damit mache ich es und es funktioniert ganz gut.
Aber auch das Ein- oder Ausschalten überIP-Symcon geht, zB so:


<? 
$IP= "192.168.xx.yy";

if (Sys_Ping($IP, 1000)== true) 
    { 

fopen("http://$IP:2323/?cmd=screenOn&password=zzzz","r");

    } 

?> 

Das Off Script brauche ich nicht posten :wink:

Gruß Helmut

Hast Du den Aufruf mal mit einem Browser geprüft?
Einfach den Aufruf in der Adresszeile eintragen und Enter, da müsste dann eine Rückmeldung kommen.

Über die Kamera läuft bei mir nicht stabil. Und im Dunkeln fast gar nicht.
Wenn ich jetzt nachts zum Kühlschrank tapse fühle ich mich immer erwischt :–)

Lördy

Hallo,

Ein und Ausschalten funktioniert.
Über die Kamera habe ich auch keine positiven Erfahrungen sammeln können. Je nach Helligkeit geht es. Ein Bewegungsmelder arbeitet zuverlässiger.

Danke
Thomas:)

Fully gefällt mir.

Auslesen (Get device info) geht. Steuern über REST INTERFACE geht auch.
Wie steuere (Control device) ich aber z.B. die Displayhelligkeit? (void fully.setScreenBrightness(float level))

Soll über Javascript gehen, steht auf der Infoseite.
Gruß Helmut

Hast du vielleicht auch ein Codebeispiel wie man das mit IPS macht oder ein Suchstichwort?

:wink:
ich bin froh, wenn ich mir in PHP was zusammen bastel :wink:

Ruf mal die Seite IP-ADR /web/admin.html deines Tablett auf, Kiosk muß natürlich laufen und spiel da mal rum

Wenn Du diese Befehle dann mit einem Sniffer mitschneiden kannst, dann müßte man drauf kommen

Aber frag mal den Entwickler, der könnte ev helfen
Gruß Helmut