New FHEM Tablet UI

Begonnen von setstate, 22 Februar 2015, 23:37:24

Vorheriges Thema - Nächstes Thema

viegener

Zitat von: trilu am 14 Dezember 2015, 10:23:28
irgendwie komme ich nicht weiter -
ich würde gerne ein label für ein reading das 0, 1 ,2 ,3 sein kann darstellen. möchte aber die zahlenwerte durch einen string ersetzen.
dazu gibt es beim label ja data-substitution, allerdings bekomme ich keinen hash rein

data-substitution='s/(0|1)/(0=>"Auto",1=>"Manu"){$1}/g'
kann mir da bitte jemand einen tipp geben?


Die Substitution findet im Browser (in javascript) statt, dort gibt es keine perl-syntax und damit auch keine perl-hashes. Damit steht Dir die regexp-Syntax von JS zur Verfügung.
In Deinem Fall ist es vermutlich viel einfacher ein userreading auf fhem seite zu verwenden.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

CaptainHook

Zitat von: xsasx am 14 Dezember 2015, 08:25:33
Hab das jetzt mal mit dem UC Browser versucht- dieser Zeigt mir die GUI gar nicht an. Kommt nur eine weiße leere Seite.

Das ist ja komisch. bei mir funktioniert der uc Browser bestens. Bei starten kommt kurz eine weise Seite mite inem springenden blauen punkt und danach wird gleich die Tablet UI angezeigt ...
Lenovo M53 ThinkCentre 10DC | Docker | SolarEdge SE10K + SE5000H + Energy Bank 10KWh | EspEasy | Tasmota | Hue | Alexa | uvm.

viegener

Zitat von: CaptainHook am 14 Dezember 2015, 14:00:16
Das ist ja komisch. bei mir funktioniert der uc Browser bestens. Bei starten kommt kurz eine weise Seite mite inem springenden blauen punkt und danach wird gleich die Tablet UI angezeigt ...

Ich hatte ebenfalls daselbe Problem wie setstate (mit Android 4.4) und es wurde kein FTUI angezeigt. Verschiedene Einstiegsseiten gingen nicht, FHEM selbst und externe Seiten schon. Habe es dann gar nicht auf einem neueren Android probiert.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

trilu

Zitat von: viegener am 14 Dezember 2015, 13:55:18
Die Substitution findet im Browser (in javascript) statt, dort gibt es keine perl-syntax und damit auch keine perl-hashes. Damit steht Dir die regexp-Syntax von JS zur Verfügung.
In Deinem Fall ist es vermutlich viel einfacher ein userreading auf fhem seite zu verwenden.

Vielen Dank! Könnte ich dann eine Funktion per <script> definieren und den Aufruf von hier starten? data-substitution=funktion()

viegener

Nein, eine Funktion wird da nicht unterstützt, wie gesagt es geht um regexp.
Gibt es einen Grund warum kein userreading verwendet wird?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

chris1284

#3275
kann ich in einem widget prüfen ob ein reading vorhanden ist oder nicht? ich habe es bisher nicht selbst lösen können:
ich will zb wenn reading x (oder auch a_count genannt) nicht im device ist einen default wert setzen um so evtl alte werte zu verwerfen.

beispiel:
beim init des widget ist das reading a_count da und hat den wert 1. bei späterne updates gibt es das reading nicht mehr. in dem fall scheint die ui den alten wert, wo es das reading noch gab, einfach beizubehalten statt zb mit NULL zu ersetzen.

jojop2

Zitat von: setstate am 10 Dezember 2015, 01:03:01
Bei der Template-Funktion fehlte immer noch die Möglichkeit, Parameter zu übergeben, das würde das Template noch generischer machen. Überlegt - getan.
Templates können jetzt auch Placeholder für Parameter enthalten.

@setstate:
Ist/Wäre es möglich die Parameter auch für pagetabs einzusetzen?
Ich habe 5 Räume, die identisch aufgebaut sind. Mit den pagetabs rufe ich heute 5 verschiedene html-Seiten auf. Eine Änderung muss so immer in allen 5 Dateien gemacht werden.

Eine kleine Spende ist für deine tolle Arbeit gerade auf den Weg gebracht.

sam50

Hallo Zusammen. Zuerst mal ein riesen Lob für diese tolle Arbeit. Es macht mir einen gigantischen Spaß damit meine Weboberfläche für das Tablet zu erstellen.  :)
Nun hätte ich aber ein Problem bei dem ich nicht so ohne weiteres weiterkomme. Ich habe diese Spritpreisanzeige bei mir als Label und Chart eingebaut und würde nun gerne immer
den günstigsten Anbieter(Tankstelle) in meinem Label mit grün und den teuersten mit rot darstellen.
Das heißt ich müsste die Labelfarbe in Abhängigkeit der Spritpreis Werte untereinander darstellen. Seht ihr da eine Möglichkeit dies zu realisieren.
;)

CaptainHook

Zitat von: viegener am 14 Dezember 2015, 14:15:38
Ich hatte ebenfalls daselbe Problem wie setstate (mit Android 4.4) und es wurde kein FTUI angezeigt. Verschiedene Einstiegsseiten gingen nicht, FHEM selbst und externe Seiten schon. Habe es dann gar nicht auf einem neueren Android probiert.
Bei mir läuft die FTUI auf Android 4.2.2  :'( nen neueren ROM gibt's für dieses schrott-Tablet nicht, für FTUI reichts.
Wie gesagt Fullscreen mit Original + Chrome + Firefox + Dolphin gibg nicht ... erst ucBrowser schaffte es
Wobei  bei Fullscreen immer noch die untere Leiste (zurück, Home, AppSwitch) angezeigt wird aber das war mir dann auch egal.
Lenovo M53 ThinkCentre 10DC | Docker | SolarEdge SE10K + SE5000H + Energy Bank 10KWh | EspEasy | Tasmota | Hue | Alexa | uvm.

Avatar

Hallo setstate
Als erstes möchte ich mich für die grossartige Umsetzung mit dem Tablet-UI.

Ich habe einzelne Bemerkungen, Feststellungen und  natürlich Wünsche.
Hoffe dies ist ok.

Allgemeines:
Oft kommt es bei mir vor, dass nicht alle Devices beim Laden der Seite - der Status korrekt angezeigt wird.

SWIPER Funktionlität:
1) Ich finde die swiper Möglichkeit genial. Dabei sind mir zwei Pinkte aufgefallen:
Popup geht bei mir nicht:
Ich beziehe mich auf mein beiliegendes Bild, im Beriech ,,Fenster/Türen" - wenn ich da eine HUE Lampe einsetze, und das colorpicker Popup wähle (ebenfalls eine Demo von dir) dann sehe ich wie das Popup aufgeht, dann aber hinter das swiper der Wettervorhersage (rechter Bereich) verschwindet.

2) Sobald Dimmer eingesetzt werden, dann geschieht es manchmal, dass beim Antippen, die Seite gewischt wird, anstelle dass die Lampe gedimmt werden kann. Dies geschieht eher wenn ein solches Objekt am rechten oder linken Rand des Bereiches dargestellt wird.


Wünsche:
1) Wie man sieht habe ich mein Menu im unteren Bereich erstellt und dies mittels der link Funktion. Schön wäre es wenn ich dies gleiche dem der pagetab Funktion erstellen könnte. So wäre ein Übergang auf die unterschiedlichen Seiten viel schöner und die Seite würde nicht immer wieder neu geladen. Gibt es da eine Möglichkeit?
Der Grund weshalb ich dies über die links gemacht habe ist, dass mir es so mehr zusagt, einen Beriech als aktiv gesetzt werden  kann im Gegensatz zu einem Icon.

2) Im Weissen Bereich habe ich den Anwesenheitsstaus erstelle. Wäre es möglich z.Bsp. unterschiedliche Bilder je nach Status zu laden? Aktuell ist einfach ein Bild in graustufen dargestellt, gerne hätte ich wenn jemand zu Hause ist sein Bild in farbe und ausser Haus als S/W dargestellt.

3) Wäre es möglich auch in der label Funktion ein Alias zu definieren? Der Status ist nicht immer schön um auf einem Tab darstellen zu können. So eine ähnlich möglichkeit wie bei dem ,,Homestatus".

Ich möchte mich nochmals für den grossartigen und genialen Einsatz bedanken, welchen ich auch sehr gerne unterstütze. Hoffe du kannst dein MAC bald bestellen :-)

Grüsse Eric

netbus

Hallo,
ich habe das Phänomen, dass ich manchmal die Seiten öfters reloaden muss bis ich eine Vollständige UI habe.
Weder werden die Icons im ersten Anlauf nicht geladen oder die Werte werden nicht geliefert.
Tritt mit Chrome und Firefox auf. Ich bilde mir ein, dass es mit dem IE besser funktioniert.
Woran kann das liegen?

sbiermann

Das Problem hatte ich auch, bei mir lag es daran das ich vor FHEM einen Apache2 als Reverse Proxy einsetze und dieser in einen Timeout gelaufen ist weil FHEM nicht fix genug geantwortet hat. Als ich den Timeout höher gesetzt habe war das Problem verschwunden und es gab auch keine Fehlermeldung mehr im Apache Log.

setstate

Zitat von: jojop2 am 14 Dezember 2015, 22:46:44
@setstate:
Ist/Wäre es möglich die Parameter auch für pagetabs einzusetzen?
Ich habe 5 Räume, die identisch aufgebaut sind. Mit den pagetabs rufe ich heute 5 verschiedene html-Seiten auf. Eine Änderung muss so immer in allen 5 Dateien gemacht werden.

Eine kleine Spende ist für deine tolle Arbeit gerade auf den Weg gebracht.

Das geht, dann darf aber das Menu selbst nicht als Template eingebaut werden. Dann müsste die Template Ersetzungen rekursiv aufrufbar sein, was sie zur Zeit nicht sind.

Also in jeder HTML Seite immer die volle Pagetab-Liste :


        <div data-type="pagetab" data-url="index_main.html"  data-icon="fa-home" class="top-space"></div>
        <div data-type="pagetab" data-url="index_music.html" ...
        ...
        ...

viegener

Zitat von: setstate am 15 Dezember 2015, 17:12:13
Das geht, dann darf aber das Menu selbst nicht als Template eingebaut werden. Dann müsste die Template Ersetzungen rekursiv aufrufbar sein, was sie zur Zeit nicht sind.


Für rekursive Includes habe ich mal vor einiger Zeit ein Servermodul gebaut, siehe hier:
http://forum.fhem.de/index.php/topic,43110.msg350991.html#msg350991

Damit lassen sich gerade wenn man ähnliche Elemente Schalter / Gridsterblöcke oder Charts hat ganz leicht wiederverwendebare Module bauen die in vielen Seiten verwendet werden (order gar ganze Seiten bilden).
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

setstate

Zitat von: sam50 am 15 Dezember 2015, 10:43:08
Hallo Zusammen. Zuerst mal ein riesen Lob für diese tolle Arbeit. Es macht mir einen gigantischen Spaß damit meine Weboberfläche für das Tablet zu erstellen.  :)
Nun hätte ich aber ein Problem bei dem ich nicht so ohne weiteres weiterkomme. Ich habe diese Spritpreisanzeige bei mir als Label und Chart eingebaut und würde nun gerne immer
den günstigsten Anbieter(Tankstelle) in meinem Label mit grün und den teuersten mit rot darstellen.
Das heißt ich müsste die Labelfarbe in Abhängigkeit der Spritpreis Werte untereinander darstellen. Seht ihr da eine Möglichkeit dies zu realisieren.
;)

Da fällt mir nur ein, man kann mit

data-limits-get="DEVICE:READING" ein Reading angeben, woher die Limits bezogen werden sollen. Default wäre: aus dem data-get, woher auch das Label seinen Wert bekommt -> bei dir der Spritpreis. Dann müsste man die List, wann rot und wann grün statisch im FTUI hinterlegen. Mit data-limits-get kann man im
FHEM mit einem Dummy die Logik für die rot=2/grün=1 Änderung implementieren und das Label-Widget reagiert darauf mit einer simplen Ampelschaltung

     data-limits='[0,1,2]'
     data-colors='["gray","green","red"]'