Fully Kiosk Browser für Android

Begonnen von aloz77, 06 Februar 2016, 20:27:54

Vorheriges Thema - Nächstes Thema

FhemPiUser

ich habe gerade erst von webviewcontrol auf fully 1.4.1 umgestellt, kann daher nichts zu früheren versionen sagen, aber mit webviewcontrol ging es. teste es heute abend auch mal mit älterer version

aloz77

#361
Also: Ich glaube, ihr sprecht von unterschiedlichen Issues:

(1) Der Reload der Seite bei ScreenOn funktioniert trotz eingeschalteter Option Auto Reload on Screen On nicht
(2) Die Daten aktualisieren sich in Tablet UI nach Bildschirm Aus/Ein nicht mehr.

Nr. 1 wäre ein klarer Bug, ich kann ihn leider in Android 4.4, 5.1 und 6.0 nicht reproduzieren. Wenn ich den Bildschirm mit Knöpfchen an der Tabletseite ausschalte und dann einschalte, lädt die StartURL immer neu. Bei eingeschaltetem Ladebalken sieht man das sofort. Wenn das Problem in einer besonderen Konstellation auftritt, bitte gebt mir genaue Schritte zum Reproduzieren.

Nr. 2 wäre ein komplexer Bug. Auch das kann ich bei mir nicht reproduzieren. Wir hatten in diesem Thread schon Meldungen, dass sich die FTUI-Daten nicht aktualisieren (das scheint generell eine FTUI-Krankheit zu sein, wenn man nach FTUI sucht), die sich dann aber nicht bestätigten. BItte gebt mir auch hier die genauen Anweisungen, wie ich das Problem reproduziren kann. Mit welcher Webseite sehe ich welche Events in HTML5 ankommen und welche nicht? Wie soll man genau vorgehen?

CoolTux

Guten Morgen Alexey

Was auch immer Du in Version 1.4 geändert hast, bitte so lassen. Mit FTUI hatte ich doch beim Homestatus Widget das Problem das beim Ausschalten des Tablets und wieder einschalten das Widget verschwand. Dann musste ich die Seite immer neu laden. Das Problem ist nun weg. As Widget bleibt nun sichtbar.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

aloz77

Zitat von: CoolTux am 16 August 2016, 08:13:54
Was auch immer Du in Version 1.4 geändert hast, bitte so lassen. Mit FTUI hatte ich doch beim Homestatus Widget das Problem das beim Ausschalten des Tablets und wieder einschalten das Widget verschwand...

Hmm... Ich tippe hier eher auf das letzte Update des Android Webview. Es gab vor ein paar Tagen eins.

FhemPiUser

#364
das Problem mit den fehlendem online event nach hibernate, welches ich oben beschrieben habe, besteht bei mir auch in Version 1.3.2.

Gibt es die Möglichkeit für einen Debugmodus von fully, ähnlich wie bei Webviewcontrol, wo man alle console-debug-messages angezeigt bekommt?

aloz77

Zitat von: FhemPiUser am 18 August 2016, 20:44:50
Gibt es die Möglichkeit für einen Debugmodus von fully, ähnlich wie bei Webviewcontrol, wo man alle console-debug-messages angezeigt bekommt?

Dafür kann ADB genutzt werden. Wenn du Lust auf viele Log-Ausgaben hast, kann ich dir eine Debug-Version von Fully schicken, die unterwegs so einiges kommentiert. Das hilft jedoch m.E. wenig, da wir nicht wissen, wonach wir suchen müssen. Wenn du mir sagst, wie ich das Problem Schritt für Schritt reproduzieren kann, kann ich das übernehmen.

https://developer.android.com/studio/command-line/adb.html

FhemPiUser

#366
In der ftui Version eval2.2 werden verschiedene html events abgefangen, u.a. das online event, das erkennt, dass der Browser wieder online ist:

// event "page is loaded" -> start FTUI
$(document).on('ready', function() {
    ftui.init();
});

$('.menu').on('click', function() {
    $('.menu').toggleClass('show');
});

$(window).on('beforeunload', function(){
    ftui.log(5,'beforeunload');
    ftui.setOffline();
});

$(window).on('online offline', function() {
    ftui.log(5,'online offline');
    if (navigator.onLine)
        ftui.setOnline();
    else
        ftui.setOffline();
});


Wenn ein online event kommt, wird ein shortpoll ausgeführt, damit die fhem readings in ftui alle aktualisiert werden ohne ein reload der Seite durchführen zu müssen.

    setOnline: function(){
        var ltime = new Date().getTime() / 1000;
        if ((ltime - ftui.states.lastSetOnline) > 60){
            if (ftui.config.DEBUG) ftui.toast("Network connected");
            ftui.states.lastSetOnline = ltime;
            // force shortpoll
            ftui.states.lastShortpoll = 0;
            ftui.startShortPollInterval(100);
            if (!ftui.config.doLongPoll){
                ftui.config.doLongPoll  = ($("meta[name='longpoll']").attr("content") == '1');
                if ( ftui.config.doLongPoll )
                    ftui.startLongPollInterval(100);
            }
            ftui.log(1,'FTUI is online');
        }
    },



Leider klappt das bei mir nicht nach einem Hibernate/Ruhezustand des Tablets mit fully und ftui Version eval2.2

Bei mir wird das Tablet per Bewegungsmelder angeschaltet, ansonsten ist es immer im Hibernate/Ruhezustand ohne wifi-Verbindung. Wenn es eingeschaltet wird, soll es ohne reload der Seite alle fhem readings aktualisieren per shortpoll. Bei ftui Version 2.0beta und Webviewcontrol hat das so funktioniert. Seit dem Umstieg auf ftui Version 2.2eval und Webviewcontrol geht das nicht mehr....

Ich weiss nicht, ob es an fully oder an ftui Version 2.2eval liegt, da diese ftui Version mit Webviewcontrol nicht läuft (gibt immer blauen Bildschirm mit Timeout).

Bin allerdings aber auch gerade am überlegen, ob man die Rückkehr aus dem hibernate nicht anders erkennen könnte als mit online events, z.B. mit jquery.wakeup plugin. Das könnte evtl auch das Problem lösen, muss ich mal testen.

Vielen Dank schon einmal! 

aloz77

Danke, aber das ist einfach zu viel Info für mich. Ich werde mich nicht ausführlich selbst mit der Eval-Version von FTUI beschäftigen können, um rauszufinden, was ihr wirklich fehlt.

Ich bräuchte eher konkrete Schritte zum Reproduzieren:

1. Das machen: A, B, C
2. Das erwartet: X (weil es z.B. in Chrome auf Android so ist)
3. Das bekommen: Y

FhemPiUser

ja, verstehe ich. Ich glaube ich habe auch gerade eine Lösung gefunden, zumindest sind die ersten Tests der Erweiterung von ftui mit der JQuery.wakeup plugin erfolgreich.

Vielen Dank trotzdem!

SvenJust

Hallo,

ich verwende die aktuelle und lizenzierte Version des Fully Kiosk Browsers zum Anzeigen meiner FTUI-Seiten und ich finde, es ist ein tolles Stück Software.

Ich stehe jetzt an einer Stelle, für die ich keine Lösung gefunden habe. Ich möchte das Video einer Kamera (Hikvision) per rtsp anzeigen. Dazu sende ich die Url per AMAD2 an Fully. Der Aufruf und die Anzeige des Video funktionieren. Das Video wird angezeigt.

Für die Anzeige rufe ich die folgende html-Seite auf:

<html>
<head>
<META HTTP-EQUIV=Refresh CONTENT="0; URL=rtsp://user:password@192.168.20.230:554/Streaming/Channels/2">
<title>Cam 0</title>
</head>
<body>
You are automatically redirected
</body>
</html>


Wenn ich dann wieder auf eine andere html-Seite wechseln möchte, sehe ich die html-Seite im Hintergrund, im Vordergrund steht "Buffering video" und der Kreis dreht sich. Ich lege ein Bild der Anzeige bei. Lasse ich die gleichen Schritte per AMAD2 mit dem Chrome Browser ausführen, wird das Video korrekt geschlossen und die html-Seite wird angezeigt.

Danke für einen Schubs in die richtige Richtung.
Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

aloz77

Hi Sven, welches Gerät und welche Android-Version nutzt du? Wozu nutzt du die Redirect-Seite? Funktioniert es nicht, wenn  du direkt die rtsp-URL an Fully schickst?

SvenJust

Hallo Alexey!

Zitatwelches Gerät und welche Android-Version nutzt du?
Acer Iconia One 10 (B3-A20)
5.1 Lollipop MR1


ZitatWozu nutzt du die Redirect-Seite?
Die Redirect-Seite nutze ich, um ohne Interaktion des Nutzers den rtsp-Stream anzeigen zu können. Wenn ich die rtsp-URL direkt, ohne Redirect, per AMAD2 an das Tablet schicke, wird der Stream nicht geöffnet, sondern die aktuelle Seite wird weiterhin angezeigt.

Das Öffnen des rtsp-Stream funktioniert, wenn ich auf einen Link klicke. Das Schließen des Streams funktioniert auch hier nicht, wenn eine neue Url an das Tablet geschickt wird, es bleibt wieder im Vordergrund im "Buffering video" stehen. Den html-Code mit Link zum Öffnen des Streams lege ich unten bei, es ist aber nichts besonderes gemacht.

Wie vorher geschrieben wird das Video korrekt geschlossen, wenn ich Chrome als Browser teste.

Mein Ziel ist es, einen rtsp-Stream für 30 Sekunden anzuzeigen, wenn jemand an der Haustür klingelt. Dafür schicke ich die Url der Redirect-Seite an das Tablet. Nach 30 Sekunden schicke ich dann wieder die Url der Startseite. Das Senden der Urls mache ich mit AMAD2.

Danke
Sven


<!DOCTYPE html>
<html>
<head>
    <!--
     /* FHEM tablet ui */
     /*
     * UI builder framework for FHEM
     *
     * Version: 2.2.3
     * URL: https://github.com/knowthelist/fhem-tablet-ui
     *
     * Copyright (c) 2015-2016 Mario Stephan <mstephan@shared-files.de>
     * Under MIT License (http://www.opensource.org/licenses/mit-license.php)
     *
     * !!!! Evaluation version - run only in a staging enviroment !!!!
     *
     * - create a new folder named 'tablet_eval' in /<fhem-path>/www
     * - copy all files incl. sub folders into /<fhem-path>/www/tablet_eval
     * - add 'define TABLETUIEVAL HTTPSRV ftui_eval ./www/tablet_eval Tablet-EVAL' in fhem.cfg
     * - Tadaaa! A new fhem ui in http://<fhem-url>:8083/fhem/tablet_eval/
     */
    -->
    <title>FHEM-Tablet-UI</title>
       
    <meta name="viewport" content="width=device-width, initial-scale=1.35, maximum-scale=1.35, user-scalable=no" />
<meta name="widget_base_width" content="107">
<meta name="widget_base_height" content="141">
    <meta name="widget_min_cols" content="5">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="gridster_disable" content="1">
    <meta name="widget_margin" content="4">
    <meta name="longpoll" content="1">
    <meta name="debug" content="2">

    <link rel="stylesheet" href="lib/jquery.gridster.min.css" />
    <link rel="stylesheet" href="css/fhem-tablet-ui.css" />
    <link rel="stylesheet" href="lib/font-awesome.min.css" />
    <link rel="stylesheet" href="lib/material-icons.min.css" />
    <link rel="stylesheet" href="lib/jquery.toast.min.css" />

    <!-- define your personal style here, it wont be overwritten  -->
    <!-- link rel="stylesheet" href="css/fhem-green-ui.css" / -->
    <!-- link rel="stylesheet" href="css/fhem-tablet-ui-user.css" / -->
    <link rel="stylesheet" href="lib/openautomation.css" />

    <script src="../pgm2/jquery.min.js"></script>
    <script src="lib/jquery.toast.min.js"></script>
    <script src="lib/jquery.gridster.min.js"></script>
    <script src="js/fhem-tablet-ui.js" defer></script>
   
<link rel="stylesheet" href="/fhem/tablet/css/mystyle.css" />

</head>
<body>

<!-- available class: container,left,right,cell,narrow,darker,big,bigger,small,thin,large,wider -->
<!-- available data-type: symbol,dimmer,homestatus,label,push,slider,switch,thermostat,volume,weather -->

<div class="gridster">
<ul>
<!-- --------- Jede Seite beginnt in der ersten Zeile mit der Alarmanzeige --------------- -->
<li data-row="1" data-col="1" data-sizex="5" data-sizey="1" data-template="inc_alarm.html"></li>

<!-- ---------------------------- Im folgenden sind 4 Rows je Seite änderbar --------------------- -->
<li data-row="2" data-col="1" data-sizex="5" data-sizey="4">
<header>IPCAMs - Für das Livebild auf das Bild klicken</header>
<table border="0px" width="100%">       
<tr>
<td>
<br>Haustür<br>
                        <a href="rtsp://user:password@192.168.20.230:554/Streaming/Channels/2" target="_blank">
                            <div data-type="image"
                                data-size="55%"
                                data-url="http://192.168.20.240:8083/fhem/www/ipcam/ipcam0.jpg"
                                data-refresh="5"
                                class="nocache">
                            </div>
                        </a>

</td>
<td>
<br>Terrasse<br>
                        <a href="rtsp://user:password@192.168.20.231:554/Streaming/Channels/2" target="_blank">
                            <div data-type="image"
                                data-size="99%"
                                data-url="http://192.168.20.240:8083/fhem/www/ipcam/ipcam1.jpg"
                                data-refresh="1"
                                class="nocache">
                            </div>
                        </a>
</td>
</tr>
<tr>
<td>
<br>Giebelseite<br>
                        <a href="rtsp://user:password@192.168.20.232:554/Streaming/Channels/2 target="_blank"">
                            <div data-type="image"
                                data-size="99%"
                                data-url="http://192.168.20.240:8083/fhem/www/ipcam/ipcam2.jpg"
                                data-refresh="5"
                                class="nocache">
                            </div>
                        </a>
</td>
<td>
<br>Stellplatz<br>
                        <a href="rtsp://user:password@192.168.20.233:554/Streaming/Channels/2 target="_blank"">
                            <div data-type="image"
                                data-size="99%"
                                data-url="http://192.168.20.240:8083/fhem/www/ipcam/ipcam3.jpg"
                                data-refresh="5"
                                class="nocache">
                            </div>
                        </a>
</td>
</tr>
</table>
        </li>

<!-- ----------------------------------- Ändern Ende ------------------------------- -->

<!-- ------------------------------------ MENÜ START ------------------------------- -->
<li data-row="9" data-col="1" data-sizex="1" data-sizey="1" data-template="menu_b_1.html"></li>
<li data-row="9" data-col="2" data-sizex="1" data-sizey="1" data-template="menu_b_2.html"></li>
<li data-row="9" data-col="3" data-sizex="1" data-sizey="1" data-template="menu_b_3.html"></li>
<li data-row="9" data-col="4" data-sizex="1" data-sizey="1" data-template="menu_b_4.html"></li>
<li data-row="9" data-col="5" data-sizex="1" data-sizey="1" data-template="menu_b_5.html"></li>
<!-- ------------------------------------ MENÜ ENDE --------------------------------- -->
</ul>
</div>
</body>
</html>

FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

aloz77

Klingt sehr interessant. Ich muss das mal reproduzieren. Wie genau schickst du eine URL an Fully? Machst du ein Intent gezielt an die Fully-App mit der URL im Data-Feld oder hast du Fully als Standard-Browser eingerichtet (was zur Zeit nur für http/https-Links geht) und rufst quasi nur die URL auf?

CoolTux

Ich könnte mir vorstellen das er den openURL Befehl verwendet.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

SvenJust

Zitat von: CoolTux am 23 August 2016, 11:14:33
Ich könnte mir vorstellen das er den openURL Befehl verwendet.
ja, ich nutze openURL von AMAD2 um Seiten von Fully öffnen zu lassen. AMAD2 nutze ich zum Steuern und Abfragen der Tablet Werte (Batterie).

Ein list <AMAD2-Device> liefert:
Internals:
   APSSID     Familie-Just
   DEF        192.168.20.45 Familie-Just
   HOST       192.168.20.45
   NAME       WandTabletFlur
   NR         1180
   PORT       8090
   STATE      active
   TYPE       AMAD
   VERSIONFLOWSET 2.6.1
   VERSIONMODUL 2.6.1
   Readings:
     2016-08-22 21:00:08   airplanemode    off
     2016-08-22 21:00:04   androidVersion  5.1 Lollipop MR1
     2016-08-22 21:00:08   automagicState  Automagic Premium
     2016-08-23 11:17:38   batteryHealth   2
     2016-08-23 11:17:38   batteryTemperature 33.0
     2016-08-22 21:00:08   bluetooth       off
     2016-08-23 11:20:23   checkActiveTask 1
     2016-08-22 21:00:08   connectedBTdevices none
     2016-08-22 21:00:08   connectedBTdevicesMAC none
     2016-08-22 21:00:08   currentMusicAlbum no player active
     2016-08-22 21:00:08   currentMusicApp no player active
     2016-08-22 21:00:08   currentMusicArtist no player active
     2016-08-22 21:00:08   currentMusicIcon no player active
     2016-08-22 21:00:08   currentMusicState
     2016-08-22 21:00:08   currentMusicTrack no player active
     2016-08-23 11:20:23   deviceState     online
     2016-08-22 21:00:08   doNotDisturb    always
     2016-08-22 21:00:04   dockingState    undocked
     2016-08-23 11:20:23   flow_SetCommands aktiv
     2016-08-23 11:20:53   flow_informations aktiv
     2016-08-23 11:20:53   flowsetVersionAtDevice 2.6.1
     2016-08-18 19:42:14   keyguardSet     0
     2016-04-12 21:14:01   lastSetCommandError
     2016-08-23 05:50:02   lastSetCommandState setCmd_done
     2016-08-23 11:20:53   lastStatusRequestState statusRequest_done
     2016-08-22 21:00:08   nextAlarmDay    off
     2016-08-22 21:00:08   nextAlarmState
     2016-08-22 21:00:08   nextAlarmTime   off
     2016-08-23 11:17:38   powerLevel      29
     2016-08-23 11:17:38   powerPlugged    1
     2016-08-22 21:50:36   screen          on locked
     2016-08-22 21:00:08   screenBrightness 255
     2016-08-22 21:50:53   screenOrientation portrait
     2016-08-22 21:50:53   screenOrientationMode auto
     2016-08-23 11:20:53   state           active
     2016-08-22 21:00:08   volume          4
     2016-08-22 21:31:47   volumeNotification 1
   Helper:
     deviceStateErrorCounter 0
     infoErrorCounter 0
     setCmdErrorCounter 0
Attributes:
   checkActiveTask de.ozerov.fully
   event-min-interval powerLevel:600,powerPlugged:600,screenBrightness:600
   room       AMAD,Wohnbereich
   setOpenApp de.ozerov.fully,com.android.vending
   setOpenUrlBrowser de.ozerov.fully|de.ozerov.fully.MainActivity


Ein list AMADCommBridge liefert:
Internals:
   BRIDGE     1
   CONNECTS   10941
   FD         51
   NAME       AMADCommBridge
   NR         1181
   PORT       8090
   STATE      opened
   TYPE       AMAD
   VERSIONFLOWSET 2.6.1
   VERSIONMODUL 2.6.1
   Readings:
     2016-04-09 05:55:54   fhemServerIP    192.168.20.240
     2016-08-20 13:15:40   receiveVoiceCommand ausschalten
     2016-08-20 13:15:40   receiveVoiceDevice WandTabletFlur
     2016-08-22 12:13:35   state           opened
Attributes:
   room       AMAD
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)