[PATCH] Alpha: PWA (Android 'Add to homescreen') feature.

Begonnen von blecher-at, 29 Juli 2018, 14:32:17

Vorheriges Thema - Nächstes Thema

blecher-at

Dieser Patch ist meine PWA (https://developers.google.com/web/progressive-web-apps/) implementierung für FHEMWeb.
Damit lässt sich fhemweb als app einfach auf den homescreen hinzufügen (chrome zeigt beim ersten besuch eine Aufforderung an).
Ausserdem ist damit fhemweb auch offline verfügbar (zeigt natürlich nur die werte vom letzten besuch), und cacht sehr aggressiv.

Vorraussetzung ist, dass fhem via https erreichbar ist (kein selfsigned certifikat erlaubt, die instanz muss aber nicht öffentlich erreichbar sein!)

Laut patch ist das feature per default ausgeschalten und muss mit "attr WEB pwaEnabled 1" aktiviert werden. Es gibt auch noch weitere parameter um das ganze customizen. (siehe commandref)
Die Bilder gehören nach www/images/default, und können natürlich angepasst werden. Ohne diese bilder (für splashscreen und homescreen icon) kann die app nicht installiert werden.

Known issues:
- Terminiert man https mittels nginx, muss websocktes im fhem mit "attr WEB longpoll 1" deaktiviert werden.
- Sehr selten zeigt die app einen generischen 401 fehler statt dem passwort-prompt. vermutlich noch ein bug im serviceworker. meistens hilft dann ein neustart im taskmanager.
- Wenn das setup nicht klappt (add to homescreen prompt erscheint nicht) hilft es mit chrome und einem usb-kabel den debugger anzuwerfen. meistens fehlen die png-images oder die https-config ist falsch

rudolfkoenig

Danke fuer die Arbeit, ich werde sie aber nicht integrieren, weil:

- FHEMWEB offline ist nur begrenzt sinnvoll
- wenn man offline doch toll findet, dan muesste man irgendwie alle moeglichen Bilder/Plots herunterladen, was unerwuenschte Seiteneffekte hat.
- die neuen Features sind teilweise jetzt schon verfuegbar:
  - als Web-App zum Desktop hinzufuegen kann man FHEMWEB schon lange
  - themeColor wird von f18 unterstuetzt
- die Browser-Unterstuetzung von PWA ist z.Zt. problematisch, es gibt auch etliche Bugs (ich begleite ein Projekt mit PWA).
- es wird auch jetzt viel gecached, noch mehr caching verursacht mehr Support-Probleme
- wenn, dann wuerde ich das Feature in JavaScript implementieren, mit minimalen perl Support.

Deutlich interessanter finde ich das Notification Feature, weiss nur nicht, wie ich das massentauglich implementieren kann.

Btw. https kann selfsigned sein, wenn das Zertifikat Chrome bekannt ist.

blecher-at

Danke für dein Feedback.

- Offline support war für mich der eigentliche Grund das einzubauen. Nicht richtiges offline, aber zumindest auf einem RPI3 dauert das öffnen der Website einfach zu lange. Oft ist es dann schneller einfach aufzustehen und den physischen schalter zu betätigen  ::)
Mit dem serviceworker cache sind alle einmal besuchten seiten gecached und man kann direkt seine geräte schalten. initial wird nur der inform-channel geöffnet. Mit einem touch-freundlichen theme ist man so sehr schnell am ziel.

- Der perl-teil ist minimal. wüsste nicht wie man den noch reduzieren könnte, eigentlich nur das ausliefern des app-manifests und sw via attributen. das app-manifest statisch speichern wollte ich wegen dem config-konzept von fhem nicht. der rest ist javascript.

- Notification feature: hab drüber nachgedacht, aber mangels einem für mich relevanten use-case nicht implementiert. wäre aber eine brauchbare alternative für telegram-bots

Bezüglich bugs bin ich deiner meinung: weder die PWA-spec noch die fhem-implementierung sind wirkich bereit für den produktiveinsatz. Für meinen usecase funktioniert es aber ausreichend gut. Wollte es erstmal hier sharen, vl bringt es jemand anderem was :)