Neue Fullscreen Browser APP für Android (WebViewControl)

Begonnen von Dirk, 27 Januar 2013, 15:18:28

Vorheriges Thema - Nächstes Thema

Dirk

Hallo Zusammen,

Ich möchte hier einmal meine Android APP "WebViewControl" Vorstellen.

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.

Achtung:
Dieser Beitrag ist nicht mehr ganz aktuell.
Hier gibt es nun auch einen Eintrag im Wiki in der ich versuche alles zusammen zu fassen.
http://www.fhemwiki.de/wiki/WebViewControl
Ihr könnt hier aber gerne auch mit machen :)

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.

Folgende Möglichkeiten hat die APP derzeit:
- bei mir getestet mit Android 4.0.3 (Laufen sollte die APP ab Android 2.1, allerdings kann ich das hier nicht Testen.
  Der Android-Emulator hat wohl ein paar Bugs. Über entsprechendes Feedback würde ich mich aber freuen.

- Fullscreen Browser (Einschränkungen siehe unten)
- Jeder APP kann eine eigene APP-ID zugewiesen werden, so können im Netzwerk mehrer APPs z.B. per FHEM angesprochen werden.
- Automatischer Start beim Booten des Gerätes (konfigurierbar)
- Bildschirm eingeschaltet lassen (konfigurierbar bzw. steuerbar per Javascript und schaltbar per FHEM)
- Ändern der Bildschirmhelligkeit per FHEM (z.B. Abhängig eines externen Helligkeitssensors)
- kurze so genannte "Android-Toast-Nachrichten" können an das Gerät per FHEM gesendet werden.
- Anzeige Batterie- und Netzwerkstatus in der rechten unteren Ecke der FHEM-Weboberfläche (Netzwerk wird derzeit nur grün, wenn eine WIFI oder Ethernet Verbindung aktiv ist.)

evtl. Spätere Erweiterungen:
- Abspielen von Audio-Nachrichten auf dem Gerät
- Notifikation per Vibrate
- Auswertung von Accelerometer, Kompass usw.
- ggf. Interaktion mit der Gerätekamera
- und noch weitere Möglichkeiten die man sich ggf. noch ausdenken kann.

Hinweis / aktuelle Einschränungen:
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 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.

Ich habe hier ein "Archos 10D G3" bei dem wird das Ausblenden der "System-Bar" Unterstützt. Bei meinem Medion-Tablet mit ICS dagegen nicht. Bei Geräten mit Android < Version 3 gibt es keine "System-Bar". Daher gibt es hier mit dem Fullscreen-Mode auch keine Einschränkungen.

Dennoch empfehle ich Android 4 Ice Cream Sandwich (ICS) als Betriebssystem für euer Gerät. Bei älteren Versionen gibt es einige Probleme mit dem mitgelieferten Webbrowser und damit auch mit dem WebView welches hier als Grundlage dient.

Ich selber stufe "WebViewControl" derzeit wenigstens als Betaversion ein. Es gibt da vermutlich noch einiges zu Verbessern. Über Feedback freue ich mich.

Im Moment funktioniert die Kommunikation von FHEM zur APP noch nicht im FLOORPLAN, da der FLOORPLAN das Laden von globalen Javascript Dateien (noch) nicht unterstützt. Das Selbe gilt natürlich für externe Seite aus dem FHEM-Webinterface-Menü wie Howto, Wiki und auch Commandref.

Das Einstellen der Geräteeigenschaften per FHEM-Weboberfläche am Gerät selber funktioniert übrigens noch nicht. Das muss von einer FHEM-Weboberfläche von einem anderen Gerät aus gesteuert werden.

Eine Dokumentation fehlt auch noch, daher schreibe ich erstmal hier alles Wichtige rein.


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.

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.

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 in FHEM:# Android web view control
define <name> WEBVIEWCONTROL <app-id>

Beispiel
define androidTablet WEBVIEWCONTROL 12345

app-id 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]
Das hatte ich ursprünglich zu Testzwecken eingebaut. Wer weis, vielleicht möchte es jemand nutzen.


Informationen per FHEM abrufen (get):

Akku-Ladestand abrufen:
get androidTablet powerLevel
Speziell das "Archos 10D G3" hat hier allerdings Probleme. Der "echte" Akkuzustand zeigt zumindest mein Gerät nur an, wenn keine externe Stromversorgung angeschlossen ist. Mit externer Versorgung zeigt das Ding immer 100% an.

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



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

(siehe Anhang / see attachement)


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)


Ich hoffe ich hab auf die Schnelle nix vergessen. Ansonsten nehme ich gerne eure Fragen und Anregungen entgegen.

Gruß
Dirk

Update:
Aktualisierte Version mit geändertem Javascript

Dirk

#1
Und noch die Dateien.

Update:
Veraltete Version, Anhang gelöscht.

Dirk

#2
Ich muss hier ein neues Archiv hochladen. Bitte dieses Benutzen. Im vorherigen Zip fehlten die Bilder für die Batterie- und Netzwerkstatus-Anzeige.

Gruß
Dirk


Update:
Veraltete Version, Anhang gelöscht.

Dirk

Und hier noch 2 Screenshots, so wie es auf meinem Archos 10D G3 mit ICS aussieht.


(siehe Anhang / see attachement)


(siehe Anhang / see attachement)

Rohan

Hallo Dirk,

klingt gut ;)

Schade, dass das Wochenende gerade schon wieder vorbei ist :(

Trotzdem werde ich deine App in den nächsten Tagen antesten.

Kann man über die Screen-On Funktion den Bildschirm auch gezielt an-/abschalten (z.B. bei An- / Abwesenheit, wenn wichtige Meldungen sind => Es regnet, Markise einfahren usw.)? Dabei würde ich das Abspielen von Audio-Signalen durchaus begrüßen und seien es für den Anfang auch nur standardisierte Töne, einfach um auf "sich" aufmerksam zu machen.

Ich melde mich, ob positiv oder (konstruktiv) negativ ;)

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

Dirk

Hi Thomas,
ZitatKann man über die Screen-On Funktion den Bildschirm auch gezielt an-/abschalten
Mit "keepScreenOn" wird derzeit nur das Ausschalten nach dem eingestellten Timeout verhindert.
Nach set keepScreenOn off schalten dein Gerät dann also nach eingestelltem Timeout auf Standby.
Ich benutze das tatsächlich zum Abschalten. Dafür habe ich das Timeout in den Android Settings auf 15 Sek. gestellt.

Ein gezieltes Einschalten hab ich noch nicht eingebaut. Könnte mit auf die ToDo-Liste.

Das Abspielen von Audio-Nachrichten will ich als nächstes angehen. Geplant ist dass man beliebige Files aus dem Netzwerk abspielen können soll.
TTS finde ich auch ganz interessant. Das ist daher auch auf der ToDo-Liste.

Gruß
Dirk

Rohan

Hallo Dirk,

habe es mal kurz angetestet:

System: 10" Tablet EasyPad 970 mit Android 4.0.3

Installation und Konfiguration verlief problemlos.

Ich kann aber weder PowerLevel abfragen noch Brightness verändern.
Auch "Toasties" sind nicht möglich (und ich bin nicht im Floorplan, sondern im Raum Plots von FHEM). Sie erscheinen nicht auf dem Tablet.
Wobei gerade ein Fullscreen-Floorplan für eine selbst konfigurierbare Display-Anzeige im Wohnzimmer mir persönlich gefallen würde.

Im Event Monitor ist zu den Toasties nur die Meldung

Events:
2013-01-28 19:36:40 webViewControl androidTablet toastMessage 123


zu finden. Da das Device ja keine eigene Log-Datei hat, kann ich nicht mehr Daten liefern.

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

Dirk

Hi Thomas,

Einen Patch zum Floorplan will ich auf alle fälle noch machen. Mal sehen wie ich die Woche weiter komme.
Werde mich da mal mit Ulrich Maass in Verbindung setzen.

Köntest du das bitte mal mit dieser minimalen config testen.

attr global logfile -
attr global modpath .                  # where our FHEM directory is
attr global statefile ./log/fhem.save  # where to save the state of the devices
attr global verbose 5                  # "normal" verbosity (min 1, max 5)

attr global motd ...
define telnetPort telnet 7073 global

define WEB FHEMWEB 8093 global
attr WEB longpoll 1
attr WEB plotmode SVG
attr WEB plotsize 800,240

# Android web view control
define androidTablet WEBVIEWCONTROL 12345


Wenn die APP den Akkustand sendet sollte dann so was im Log von FHEM bzw. auf der Console mit obiger Config auftauchen:
/fhem/webviewcontrol?powerLevel=100&powerPlugged=false&id=androidTablet

Ist denn das Batteriesymbol rechts unten zu sehen?
Ändert das den Status wenn du eine externe Energieversorgung ansteckst?

Gruß
Dirk

Dirk

Achso, die Portangaben oben kannst du natürlich deinen Vorgabenanpassen.

Rohan

Hallo Dirk,

gut Ding will Weile haben ;)

Bin gerade angetan von SweetHome3D (und meine Frau hat da "unendliche" Wünsche geäußert ;) ).

Da ich kein Testsystem habe, wird das wohl nix mit Minimalkonfiguration. Mal schauen...

Ja, das Batterie-Symbol wird angezeigt (im Akkubetrieb mit plausiblem Wert).

Der Rest kommt evtl. Morgen.

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

Dirk

ZitatJa, das Batterie-Symbol wird angezeigt (im Akkubetrieb mit plausiblem Wert).
Das heist, das Javascript läuft schon mal.

Du kannst bei deinem System auch mal kurzzeitig den Global Verbose-Level hochsetzen und mal schauen ob du vom FHEMWEB einen Logeintrag mit webviewcontrol... findest.
Der sollte immer dann kommen wenn du eine Seite im Webinterface wechselst bzw. wenn sich der Akku-Status ändert.

Gruß
Dirk

Dirk

#11
Es gibt eine neue Version der App und vom FHEM-Modul mit einigen Erweiterungen:

- Abspielen und stoppen von Audio Dateien
- TextToSpeech
- Lautstärke einstellen:

Spielt eine Audio-Datei von der angegebenen URL ab.set androidTablet audioPlay [URL]Beispiel: set androidTablet audioPlay http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3Die Audiodatei wird direkt von einer URL abgespielt. Der Webserver von FHEM kann derzeit keine beliebigen Dateien ausliefern. Daher müssen die Dateien derzeit von einer anderen, ggf. auch externen Quelle geladen werden. Das Beispiel funktioniert aber.

Aktuell abspielende Audiodatei stoppenset androidTablet audioStop
Per TextToSpeech Nachrichten vorlesen:set androidTablet ttsSay [Nachricht]Wem Die Standard-Stimme von Android nicht gefällt, der kann sich im Market nach anderen Stimmen umsehen. Mein Favorit ist derzeit die Stimme von Marlene von Ivona. Im Play Store nach "IVONA Marlene German beta" suchen.

Lautstärke der APP ändern:set androidTablet volume [level]

Update:
Veraltete Version, Anhang gelöscht.

C. Zimmermann

Vielen Vielen Dank!!!!!!!!

Das steigert enormst den WAF! Text to speach ist echt genial. Funktioniert beim Archos einwandfrei, jetzt fehlt nur noch die Floorplanunterstützung.

Jumbo

geil , will testen , hab Dome Kamera und Keymatic, da muss doch was zu machen sein :-D :-D :-D

Dirk

Hi Jumbo,

kannst du das etwas präzisieren?

Gruß
Dirk