WebViewControl

Aus FHEMWiki

Fullscreen Browser APP für Android - WebViewControl

WebViewControl Icon.png

WebViewControl ist eine APP welche auf Phonegap bassiert und per WebView einen Fullscreen-Browser zur Verfügung stellt, welcher zusätzlich per Javascript mit dem Android-Gerät kommuniziert und so einige Geräteeigenschaften zur Verfügung stellt.

Darüber können dann einige Funktionen wie z.B. die Bildschirmhelligkeit und Batteriestatus per FHEM-Modul zur Verfügung gestellt, ausgewertet und auch gesteuert werden.

ist die aktuelle Version 0.4 zu finden

Anforderungen

Grundsätzlich kann die APP mit jeder Website zusammen benutzt werden. Für FHEM ist jedoch ein Modul verfügbar, damit FHEM einfach mit der APP zusammen arbeiten kann. Dafür sind folgende Anfordrderungen zu erfüllen:

  • Ein laufender FHEM.
  • aktiviertes Longpoll (Die kommunikation zwischen FHEM zur APP erfordert aktiviertes Longpoll.
  • Android ab Verion 2.3.3 besser jedoch Android ab Version 4

Screenshots

Folgende Möglichkeiten hat die APP derzeit

Fullscreen Browser

Der Fullscreen-Mode wird allerdings nicht von allen Geräten Unterstützt. Ab Android 4 Ice Cream Sandwich (ICS) (oder auch schon seit Version 3?) ist auf den meisten Geräten die "System-Bar" am unteren Rand nicht ausblendbar. Es sein denn das ROM des Gerätes unterstützt das. Das geht zwar auch mit einem gerootetem Gerät, das wollte ich hier aber nicht vorraussetzen. Beim "Archos 10D G3" wird das Ausblenden der "System-Bar" z.B. unterstützt.

eigene APP-ID

Jeder APP kann eine eigene APP-ID zugewiesen werden. So können im Netzwerk mehrer APPs direkt adressiert werden

Autostart

Im Menü kann eingestellt werden, ob die APP nach einem Booten des Gerätes automatisch startet.

Bildschirm eingeschaltet lassen

Per Menüeinstellung, per Javascript bzw. per FHEM kann eingestellt werden ob der Bildschirm bei laufender App eingescheltet bleibt

Ändern der Bildschirmhelligkeit

Die Bildschirmhelligkeit kann per Javascript und über FHEM eingestellt werden

Toast Nachrichten

Kurze so genannte Toast-Nachrichten können an das Gerät per Javascript und per FHEM gesendet werden.

Netzwerk- und Batteriestatus

Der Batterie- und Netzwerkstatus kann vom Gerät per Javascript abgefragt werden. mit diesen Informationen wird z.B. in der rechten unteren Ecke der FHEM-Weboberfläche ein entsprechendes Icon angezeigt. (Netzwerk wird derzeit nur grün, wenn eine WIFI oder Ethernet Verbindung aktiv ist.)

Abspielen von Audio Dateien

Es können Audiodateien vom Netzwerk oder von internen Speicher / SD-Karte abgespielt werden.

TTS (Text To Speach)

Es können Sprachausgaben per Javascript bzw. von FHEM aus ausgelöst werden. Damit können z.B. Statusinformation per Sprache ausgegeben werden.

Spracherkennung

Nutzung der Spracherkennungs-API. Somit ist es möglich die angezeigte Website und auch FHEm per sprache zu steuern. Es kann dann ein Wort, bzw. eine Wortgruppe gesprochen werden (z.B. "Wohnzimmer Lich an") welche dann direkt per Notify in FHEM ausgewertet werden kann. Per FHEM und per Tap auf das Batterie-Icon wird am Gerät die Spracherkennung gestartet. Der "Tap" auf das Batteriesymbol ist derzeit eine "Notlösung" weil es noch keine bessere Idee gab. Zusätzlich kann die Erkennung durch FHEM gestartet werden


Installation

Im Zip befinden sich folgende Dateien:

  • 95_WebViewControl.pm : Kommt in den Ordner FHEM (als Kopie oder als Symlink)
  • webviewcontrol.css und webviewcontrol.js : kommen in den Ordner /www/pgm2
  • WebViewControl.apk : Das ist die APP und kommt auf euer Android Gerät.
  • Die Phonegap JS-Library wurden von der WebViewControl-JS-Datei entkoppelt. Daher muss cordova-2.3.0.js in www/pgm2.
  • mic_sprite.png muss in den Images-Ordner.

Da die APP noch nicht aus dem Playstore kommt und auch keine Qualifizierte Signatur hat, muss zum Installieren der APP in den Einstellungen eures Gerätes im Punkt Sicherkeit die Einstellung "Unbekannte Quellen" aktiviert sein. Das kann Nach der Installation wieder deaktiviert werden.


angeforderte Berechtigungen

Die App verlangt bei der Installation einige Berechtigungen:

  • Netzkommunikation: Klar, sonst könnte die keine Webseiten öffnen
  • System-Tools: Für das deaktivieren des Sytandby-Modes
  • Netzwerkkommunikation: zum Abfragen des Netzwerkstatus
  • System-Tools: Für den Autostart nach dem Booten


Konfiguration der APP

Beim ersten Start der APP muss diese an einigen Punkten konfiguriert werden.

  • Start URL

Hier kommt die komplette URL rein unter der z.B. eure FHEM-Weboberfläche erreichbar ist.

  • APP-ID

Die APP-ID unter der FHEM die APP finden kann. (Standard=12345)

  • Username / Password

Falls die FHEM-Weboberfläche Passwortgeschützt ist, muss das hier entsprechend eingegeben werden.

  • Autostart

Falls dieser Punkt aktiviert ist, startet die APP nach dem Booten von Android automatisch.

  • Bildschirm eingeschaltet lassen

Der Bildschirm bleib an, wenn die externe Stromversorgung angeslossen ist.

  • Cache löschen

Die Webview der App hat einen internen Cache. Wenn dieser Punkt aktiv ist, dann wird der Cache beim Starten der APP und beim Neuladen gelöscht.

  • URL Timeout

Hier kann die Anzahl der Millisekunden eingestellt werden die die APP wartet um eine URL zu laden bevor eine Fehlermeldung angezeigt wird.

  • Entwickler-Optionen im Hauptmenü

Wenn diese Option aktiv ist, werden einige zusätzliche Menüpunkte im Hauptmenü eingeblendet. (Cache löschen / Display Helligkeit testen)

Konfiguration in FHEM

# Android web view control
define <name> WEBVIEWCONTROL <app-id>


Beispiel

define androidTablet WEBVIEWCONTROL 12345

Die app-id (hier 12345) ist die selbe Zeichenfolge welche auch in der APP eingestellt wird. So können unterschiedliche APPs mit FHEM adressiert werden. Standardmässig ist als APP-ID in der APP 12345 eingestellt.


Steuerungsmöglichkeiten per FHEM (set)

Bildschirm bei aktiver APP eingeschaltet lassen:

set androidTablet keepScreenOn [on|off]


Aktuelle Seite im der Weboberfläche neu laden. Kann während der Entwicklung ganz nützlich sein:

set androidTablet reload


Bildschirmhelligkeit ändern:

set androidTablet screenBrightness [WERT]

Der Wert kann mit 1-255 eingegeben werden. Allerdings ist das geräteabhängig was z.B. als Maximalhelligkeit angesehen wird. Hier muss man ggf. Experimentieren. Üblich sind Werte 1-100 oder auch 1-255. Sollte die Helligkeit nach 100 z.B. wieder abnehmen, dann währ 100 der Maximalwert.


kurze Nachrichten auf dem Gerät anzeigen:

set androidTablet toastMessage [NACHRICHT]


Spracherkennung per FHEM starten:

set androidTablet voiceRec start

Nach dem die Erkennung gestartet wurde gibt es ein Tonsignal und ein Overlay. Siehe Screenshot. Wenn die Erkennung erfolgreich war, also was erkannt wurde, gibt es ein anderes Tonsignal und kurz eine entsprechende Grafik im Overlay. Bei einem Fehler gibt es auch einen Ton und eine entsprechende Grafik mit einem Fehlertext. Der Fehlertext wird genau so wie das erkannte Wort/Wortgruppe an FHEM gemeldet und kann dort z.B. mit einem Notify ausgewertet werden. Nach einer erfolgreichen Erkennung bzw. einem Fehler wird das Overlay automatisch wieder geschlossen. Da ist dann also keine Benutzerinteraktion notwendig.

Beispiel für den Notify für die Spracherkennung

# Licht im Wohnzimmer einschaltn
define speechRecognizer_wzLich_ein notify .*voiceRecognitionLastResult.*licht.*wohnzimmer.*(ein|an).* set wzLicht on;; set @ ttsSay Licht im Wohnzimmer eingeschaltet
# Licht im Wohnzimmer ausschalten
define speechRecognizer_wzLich_aus notify .*voiceRecognitionLastResult.*licht.*wohnzimmer.*aus.* set wzLicht off;; set @ ttsSay Licht im Wohnzimmer ausgeschaltet
  1. Einfaches echo
define speechRecognizer_echo notify .*voiceRecognitionLastResult.* {my @@a=split(": ","%");; fhem "set @ ttsSay $a[1]"}

Beide Beispiele zusammen funktionieren scheinbar nicht. Das echo-Notify "drängelt" sich immer vor, die anderen werden dann nicht mehr ausgeführt. Vielleicht hat ja jemand eine Idee.

Die Spracherkennung ist übrigens noch experimental:

  • Ein Abschalten einer laufenden Erkennung ist noch nicht implementiert. Die Erkennung stoppt aber wenn keiner mehr was sagt.
  • Vermutlich gibt es noch einige Bugs


Informationen per FHEM abrufen (get)

Akku-Ladestand abrufen:

get androidTablet powerLevel

Einige Geräte, hier speziell das "Archos 10D G3" hat hier allerdings Probleme. Der "echte" Akkuzustand wird hier nur angzeigt, wenn keine externe Stromversorgung angeschlossen ist. Mit externer Versorgung zeigt das Teil immer 100% an.


Energie-Status abrufen:

get androidTablet powerPlugged

Zeigt an ob das Gerät an einer externen Energieversorgung angeschlossen ist.