WebViewControl: Unterschied zwischen den Versionen

Aus FHEMWiki
(kat)
 
(18 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= Fullscreen Browser APP für Android - WebViewControl =
{{Infobox Modul
[[File:WebViewControl_Icon.png]]
|ModPurpose=Android APP für einen Fullscreen-Browser
|ModType=contrib
|ModFTopic=10628
|ModCmdRef=ContribModul
|ModForumArea=Mobile Devices
|ModTechName=95_WebViewControl.pm
|ModOwner=Dirk ({{Link2FU|42|Forum}}/[[Benutzer Diskussion:Dirk|Wiki]])
}}


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.
[[File:WebViewControl_Icon.png|mini|rechts|WebViewControl]]
'''WebViewControl''' ist eine APP, die auf Phonegap basiert und per WebView einen Fullscreen-Browser zur Verfügung stellt. Dieser kommuniziert zusätzlich per Javascript mit dem Android-Gerät und stellt so einige Geräteeigenschaften zur Verfügung.


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


Im FHEM-Forum in [http://forum.fhem.de/index.php/topic,10628.msg63572.html#msg63572 diesem Beitrag] 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 zusammenarbeiten kann. Dafür sind folgende Anforderungen zu erfüllen:
=== Anforderungen ===
* Ein laufendes FHEM.
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 Anforderungen zu erfüllen:
* Ein laufender FHEM.
* aktiviertes Longpoll (Die Kommunikation zwischen FHEM zur APP erfordert aktiviertes Longpoll).  
* aktiviertes Longpoll (Die Kommunikation zwischen FHEM zur APP erfordert aktiviertes Longpoll).  
* Android ab Verion 2.3.3 besser jedoch Android ab Version 4  
* Android ab Verion 2.3.3 besser jedoch Android ab Version 4  
=== Screenshots ===


== Screenshots ==
<gallery>
<gallery>
File:WebViewControl_screenshot_01.png|Aktive Spracherkennung
File:WebViewControl_screenshot_01.png|Aktive Spracherkennung
Zeile 21: Zeile 27:
</gallery>
</gallery>


=== Folgende Möglichkeiten hat die APP derzeit ===
== Verfügbare Funktionen ==
==== Fullscreen Browser ====
=== Fullscreen Browser ===
Der Fullscreen-Mode wird allerdings nicht von allen Geräten Unterstützt.
{{Randnotiz|RNText=Der Fullscreen-Mode wird 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 sei 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.
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 sei denn, das ROM des Gerätes unterstützt das. Das geht zwar auch mit einem gerooteten Gerät, das wollte ich hier aber nicht vorraussetzen. Beim "Archos 10D G3" wird das Ausblenden der "System-Bar" z.B. unterstützt.
Beim "Archos 10D G3" wird das Ausblenden der "System-Bar" z.B. unterstützt.


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


==== Autostart ====
Nach dem Ändern der APP-ID muss die App neu gestartet werden.
 
=== Autostart ===
Im Menü kann eingestellt werden, ob die APP nach einem Booten des Gerätes automatisch startet.
Im Menü kann eingestellt werden, ob die APP nach einem Booten des Gerätes automatisch startet.


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


==== Ändern der Bildschirmhelligkeit ====
=== Ändern der Bildschirmhelligkeit ===
Die Bildschirmhelligkeit kann per Javascript und über FHEM eingestellt werden.
Die Bildschirmhelligkeit kann per Javascript und über FHEM eingestellt werden.


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


==== Netzwerk- und Batteriestatus ====
=== 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.)
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 ====
=== Abspielen von Audio Dateien ===
Es können Audiodateien vom Netzwerk oder internen Speicher / von SD-Karte abgespielt werden.
Es können Audiodateien vom Netzwerk oder internen Speicher / von SD-Karte abgespielt werden.


==== TTS (Text To Speach) ====
=== 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.
Es können Sprachausgaben per Javascript bzw. von FHEM aus ausgelöst werden. Damit können z.B. Statusinformation per Sprache ausgegeben werden.


==== Spracherkennung ====
=== Spracherkennung ===
Nutzung der Spracherkennungs-API. Somit ist es möglich, die angezeigte Website und auch FHEM per Sprache zu steuern.
Nutzung der Spracherkennungs-API. Somit ist es möglich, die angezeigte Webseite und auch FHEM per Sprache zu steuern. Es kann dann ein Wort bzw. eine Wortgruppe gesprochen werden (z.B. "Wohnzimmer Licht an"), das 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.
Es kann dann ein Wort bzw. eine Wortgruppe gesprochen werden (z.B. "Wohnzimmer Licht 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.
Zusätzlich kann die Erkennung durch FHEM gestartet werden.


 
== Installation ==
=== Installation ===
Im Contrib-Verzeichnis befinden sich folgende Dateien:
Im Zip befinden sich folgende Dateien:
* 95_WebViewControl.pm - kommt in den Ordner FHEM (als Kopie oder als Symlink)
* 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.css und webviewcontrol.js : kommen in den Ordner /www/pgm2
* WebViewControl.apk - das ist die APP und muss auf dem Android Gerät installiert werden.
* 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.
* 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.
* 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 Sicherheit die Einstellung "Unbekannte Quellen" aktiviert sein. Das kann nach der Installation wieder deaktiviert werden.
Da die APP noch nicht aus dem Playstore kommt und auch keine qualifizierte Signatur hat, muss zum Installieren der APP in den Einstellungen des Android Gerätes im Punkt Sicherheit die Einstellung "Unbekannte Quellen" aktiviert sein. Das kann nach der Installation wieder deaktiviert werden.


== Angeforderte Berechtigungen ==
Die App verlangt bei der Installation die folgenden Berechtigungen
* Netzkommunikation (sonst könnte die App keine Webseiten öffnen)
* System-Tools (für das Deaktivieren des Standby-Modus)
* Netzwerkkommunikation (zum Abfragen des Netzwerkstatus)
* System-Tools (für den Autostart nach dem Booten)


=== angeforderte Berechtigungen ===
== Konfiguration der APP ==
Die App verlangt bei der Installation einige Berechtigungen:
* Netzkommunikation: Klar, sonst könnte die App keine Webseiten öffnen
* System-Tools: Für das Deaktivieren des Standby-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.
Beim ersten Start der APP muss diese an einigen Punkten konfiguriert werden.
* Start URL
* Start-URL (die komplette URL, unter der die FHEM-Weboberfläche erreichbar ist)
Hier kommt die komplette URL rein unter der z.B. eure FHEM-Weboberfläche erreichbar ist.
{{Randnotiz|RNTyp=y|RNText=Die Start-URL muss derzeit komplett mit Protokoll eingegeben werden, also beispielsweise als '''http://'''192.168.1.1:8083/fhem}}
* APP-ID
* APP-ID (die APP-ID unter der FHEM die APP finden kann; Standard=12345)
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)
* Username / Password
* Autostart (falls dieser Punkt aktiviert ist, startet die APP nach dem Booten von Android automatisch)
Falls die FHEM-Weboberfläche passwortgeschützt ist, muss das hier entsprechend eingegeben werden.
* Bildschirm eingeschaltet lassen (der Bildschirm bleib an, wenn die externe Stromversorgung angeschlossen ist)
* Autostart
* Cache löschen (die Webview der App hat einen internen Cache. Wenn dieser Punkt aktiv ist wird der Cache beim Starten der APP und beim Neuladen gelöscht)
Falls dieser Punkt aktiviert ist, startet die APP nach dem Booten von Android automatisch.
* URL Timeout (hier kann (in Millisekunden) eingestellt werden, wie lange die APP beim Laden einer URL wartet, bevor eine Fehlermeldung angezeigt wird)
* Bildschirm eingeschaltet lassen
* Entwickler-Optionen im Hauptmenü (wenn diese Option aktiv ist, werden einige zusätzliche Menüpunkte im Hauptmenü eingeblendet (Cache löschen / Display Helligkeit testen))
Der Bildschirm bleib an, wenn die externe Stromversorgung angeschlossen ist.
* Cache löschen
Die Webview der App hat einen internen Cache. Wenn dieser Punkt aktiv ist 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>


== Konfiguration in FHEM ==
Die folgenden Definitionen sind in der FHEM [[Konfiguration]] vorzunehmen:
:<code>define <name> WebViewControl <app-id></code>


Beispiel
Beispiel
define androidTablet WebViewControl 12345
:<code>define androidTablet WebViewControl 12345</code>
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.
Die app-id (hier 12345) ist dieselbe Zeichenfolge, die 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.
Standardmässig ist als APP-ID in der APP 12345 eingestellt.


=== Steuerungsmöglichkeiten per FHEM (set) ===
== Steuerungsmöglichkeiten per FHEM (set) ==
Bildschirm bei aktiver APP eingeschaltet lassen:
Bildschirm bei aktiver APP eingeschaltet lassen:
set androidTablet keepScreenOn [on|off]
:<code>set androidTablet keepScreenOn [on|off]</code>
 


Aktuelle Seite im der Weboberfläche neu laden. Kann während der Entwicklung ganz nützlich sein:
Aktuelle Seite im der Weboberfläche neu laden. Kann während der Entwicklung ganz nützlich sein:
set androidTablet reload
:<code>set androidTablet reload</code>


Bildschirmhelligkeit ändern:
:<code>set androidTablet screenBrightness [WERT]</code>
Der Wert kann mit 1-255 eingegeben werden. Allerdings ist es geräteabhängig, was z.B. als Maximalhelligkeit angesehen wird. Hier muss ggf. experimentiert werden. Üblich sind Werte von 1 bis 100 oder auch 1 bis 255. Sollte die Helligkeit nach 100 z.B. wieder abnehmen, dann wäre 100 der Maximalwert.


Bildschirmhelligkeit ändern:
Kurze Nachrichten auf dem Gerät anzeigen:
set androidTablet screenBrightness [WERT]
:<code>set androidTablet toastMessage [NACHRICHT]</code>
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 von 1 bis 100 oder auch 1 bis 255. Sollte die Helligkeit nach 100 z.B. wieder abnehmen, dann wäre 100 der Maximalwert.


URL der angezeigten Seite wechseln:
:<code>set <webViewControl_Name> newUrl <url></code>


Kurze Nachrichten auf dem Gerät anzeigen:
Die URL muss auch hier komplett angegeben werden. Also http://...
set androidTablet toastMessage [NACHRICHT]
Man kann hier übrigens JEDE URL angeben. Auch z.b. die von Google.
Dabei verlässt man dann aber den "Einflussbereich" von FHEM. Somit ist anschließend keine weitere Kommunikation möglich.
Daher ist es Sinnvoll hier NUR FHEM URLs anzugeben.


Da man hier beliebige URLs an die APP übergeben kann, auch so was hier:
:<code>set <webViewControl_Name> newUrl javascript:alert('Huhu!')</code>
Hiermit könnte man hier natürlich auch "bösartigen" JS-Code einschleusen.
Natürlich kann man über diesen Weg auch einfach Benutzer definierten Javascript-Code ausführen.
Hier können wir noch mal diskutieren ob ich die Eingaben hier noch entsprechend filtern soll.


Spracherkennung per FHEM starten:
Spracherkennung per FHEM starten:
set androidTablet voiceRec start
:<code>set androidTablet voiceRec start</code>
Nach dem die Erkennung gestartet wurde, gibt es ein Tonsignal und ein Overlay. Siehe Screenshot.
Nachdem die Erkennung gestartet wurde, gibt es ein Tonsignal und ein Overlay (siehe Screenshot oben). 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 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, es ist also keine Benutzerinteraktion notwendig.
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
Beispiel für den Notify für die Spracherkennung
# Licht im Wohnzimmer einschalten
:<code># Licht im Wohnzimmer einschalten</code>
define speechRecognizer_wzLich_ein notify .*voiceRecognitionLastResult.*licht.*wohnzimmer.*(ein|an).* set wzLicht on;; set @ ttsSay Licht im Wohnzimmer eingeschaltet
:<code>define speechRecognizer_wzLich_ein notify .*voiceRecognitionLastResult.*licht.*wohnzimmer.*(ein|an).* set wzLicht on;; set $NAME ttsSay Licht im Wohnzimmer eingeschaltet</code>


# Licht im Wohnzimmer ausschalten
:<code># Licht im Wohnzimmer ausschalten</code>
define speechRecognizer_wzLich_aus notify .*voiceRecognitionLastResult.*licht.*wohnzimmer.*aus.* set wzLicht off;; set @ ttsSay Licht im Wohnzimmer ausgeschaltet
:<code>define speechRecognizer_wzLich_aus notify .*voiceRecognitionLastResult.*licht.*wohnzimmer.*aus.* set wzLicht off;; set $NAME ttsSay Licht im Wohnzimmer ausgeschaltet</code>


# Einfaches echo
:<code># Einfaches echo</code>
define speechRecognizer_echo notify .*voiceRecognitionLastResult.* {my @@a=split(": ","%");; fhem "set @ ttsSay $a[1]"}
:<code>define speechRecognizer_echo notify .*voiceRecognitionLastResult.* {my @a=split(": ","$EVENT");; fhem "set $NAME ttsSay $a[1]"}</code>


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.
Beide Beispiele zusammen funktionieren anscheinend 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 experimentell:
Die Spracherkennung ist übrigens noch experimentell:
Zeile 146: Zeile 147:
* Vermutlich gibt es noch einige Bugs
* Vermutlich gibt es noch einige Bugs


 
== Informationen per FHEM abrufen (get) ==  
=== Informationen per FHEM abrufen (get) ===
Akku-Ladestand abrufen:
Akku-Ladestand abrufen:
get androidTablet powerLevel
:<code>get androidTablet powerLevel</code>
Einige Geräte, hier speziell das "Archos 10D G3" haben hier allerdings Probleme. Der "echte" Akkuzustand wird hier nur angezeigt, wenn keine externe Stromversorgung angeschlossen ist. Mit externer Versorgung zeigt das Teil immer 100 % an.


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


Energie-Status abrufen:
Energie-Status abrufen:
get androidTablet powerPlugged
:<code>get androidTablet powerPlugged</code>
Zeigt an ob das Gerät an einer externen Energieversorgung angeschlossen ist.
Zeigt an ob das Gerät an einer externen Energieversorgung angeschlossen ist.


== Links ==
== Links ==
[http://forum.fhem.de/index.php?action=dlattach;topic=10628.0;attach=1688 aktuelle Version 0.4 der APP]
* [http://forum.fhem.de/index.php/topic,10628 Thread] im FHEM-Forum zu dieser Applikation
 


[[Kategorie:Glossary]]
[[Kategorie:FHEM Frontends]]
[[Kategorie:FHEM Frontends]]
[[Kategorie:Akustische Ausgabe]]

Aktuelle Version vom 14. November 2018, 12:37 Uhr

ContribModul
Zweck / Funktion
Android APP für einen Fullscreen-Browser
Allgemein
Typ Contrib
Details
Dokumentation Thema
Support (Forum) Mobile Devices
Modulname 95_WebViewControl.pm
Ersteller Dirk (Forum /Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


WebViewControl

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

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

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 zusammenarbeiten kann. Dafür sind folgende Anforderungen zu erfüllen:

  • Ein laufendes 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

Verfügbare Funktionen

Fullscreen Browser

Info green.pngDer Fullscreen-Mode wird 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 sei denn, das ROM des Gerätes unterstützt das. Das geht zwar auch mit einem gerooteten 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 mehrere APPs direkt adressiert werden.

Nach dem Ändern der APP-ID muss die App neu gestartet 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 eingeschaltet bleibt.

Ändern der Bildschirmhelligkeit

Die Bildschirmhelligkeit kann per Javascript und über FHEM eingestellt werden.

Toast Nachrichten

Kurze, sogenannte 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 internen Speicher / von 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 Webseite und auch FHEM per Sprache zu steuern. Es kann dann ein Wort bzw. eine Wortgruppe gesprochen werden (z.B. "Wohnzimmer Licht an"), das 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 Contrib-Verzeichnis 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 muss auf dem Android Gerät installiert werden.
  • 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 des Android Gerätes im Punkt Sicherheit die Einstellung "Unbekannte Quellen" aktiviert sein. Das kann nach der Installation wieder deaktiviert werden.

Angeforderte Berechtigungen

Die App verlangt bei der Installation die folgenden Berechtigungen

  • Netzkommunikation (sonst könnte die App keine Webseiten öffnen)
  • System-Tools (für das Deaktivieren des Standby-Modus)
  • 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 (die komplette URL, unter der die FHEM-Weboberfläche erreichbar ist)
Emblem-question-yellow.svgDie Start-URL muss derzeit komplett mit Protokoll eingegeben werden, also beispielsweise als http://192.168.1.1:8083/fhem
  • 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 angeschlossen ist)
  • Cache löschen (die Webview der App hat einen internen Cache. Wenn dieser Punkt aktiv ist wird der Cache beim Starten der APP und beim Neuladen gelöscht)
  • URL Timeout (hier kann (in Millisekunden) eingestellt werden, wie lange die APP beim Laden einer URL wartet, 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

Die folgenden Definitionen sind in der FHEM Konfiguration vorzunehmen:

define <name> WebViewControl <app-id>

Beispiel

define androidTablet WebViewControl 12345

Die app-id (hier 12345) ist dieselbe Zeichenfolge, die 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 es geräteabhängig, was z.B. als Maximalhelligkeit angesehen wird. Hier muss ggf. experimentiert werden. Üblich sind Werte von 1 bis 100 oder auch 1 bis 255. Sollte die Helligkeit nach 100 z.B. wieder abnehmen, dann wäre 100 der Maximalwert.

Kurze Nachrichten auf dem Gerät anzeigen:

set androidTablet toastMessage [NACHRICHT]

URL der angezeigten Seite wechseln:

set <webViewControl_Name> newUrl <url>

Die URL muss auch hier komplett angegeben werden. Also http://... Man kann hier übrigens JEDE URL angeben. Auch z.b. die von Google. Dabei verlässt man dann aber den "Einflussbereich" von FHEM. Somit ist anschließend keine weitere Kommunikation möglich. Daher ist es Sinnvoll hier NUR FHEM URLs anzugeben.

Da man hier beliebige URLs an die APP übergeben kann, auch so was hier:

set <webViewControl_Name> newUrl javascript:alert('Huhu!')

Hiermit könnte man hier natürlich auch "bösartigen" JS-Code einschleusen. Natürlich kann man über diesen Weg auch einfach Benutzer definierten Javascript-Code ausführen. Hier können wir noch mal diskutieren ob ich die Eingaben hier noch entsprechend filtern soll.

Spracherkennung per FHEM starten:

set androidTablet voiceRec start

Nachdem die Erkennung gestartet wurde, gibt es ein Tonsignal und ein Overlay (siehe Screenshot oben). 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 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, es ist also keine Benutzerinteraktion notwendig.

Beispiel für den Notify für die Spracherkennung

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

Beide Beispiele zusammen funktionieren anscheinend 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 experimentell:

  • 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, speziell das "Archos 10D G3" haben hier allerdings Probleme. Der "echte" Akkuzustand wird hier nur angezeigt, wenn keine externe Stromversorgung angeschlossen ist. Mit externer Versorgung zeigt das Gerät immer 100% an.

Energie-Status abrufen:

get androidTablet powerPlugged

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

Links

  • Thread im FHEM-Forum zu dieser Applikation