[gelöst] Symbol-Widget Multi State Notation: Hintergrundfarbe dynamisch setzen

Begonnen von All-Ex, 27 November 2016, 13:20:43

Vorheriges Thema - Nächstes Thema

All-Ex

Hallo,

mit dem Symbol-Widget möchte ich die Position meiner Rollläden mit verschiedenen Icons darstellen und unabhängig davon das Hintergrund-Icon grün werden lassen, wenn das Fenster offen ist. Die Hintergrundfarbe steht im Reading eines Dummys (dummy1:window #00FF00)

Dazu habe ich die Symobl Widget Multi State Notation getestet:
<div data-type="symbol"
data-device="dummy1"
data-states='["0","10","20","30","40","50","60","70","80","90","100"]'
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40","oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80","oa-fts_shutter_90","oa-fts_shutter_100"]'
data-colors='["#101010","#101010","#101010","#101010","#101010","#101010","#101010","#101010","#101010","#101010"]'
data-background-icons='["fa-square","fa-square","fa-square","fa-square","fa-square","fa-square","fa-square","fa-square","fa-square","fa-square"]'
data-background-colors='["dummy1:color","dummy1:color","dummy1:color","dummy1:color","dummy1:color","dummy1:color","dummy1:color","dummy1:color","dummy1:color","dummy1:color"]'>
</div>

Die Icons wechseln korrekt, aber dummy1:color wird ignoriert, vermutlich ist das in der Mulitstate Notation nicht implementiert. Wenn ich dort
data-background-colors='["#00FF00","#00FF00","#00FF00","#00FF00","#00FF00","#00FF00","#00FF00","#00FF00","#00FF00","#00FF00"]'>
eintrage, ist der Hintergrund immer grün, aber leider nicht dynamisch.

Die Dual State Notation des Symbol Widgets finde ich übersichtlicher, habe ich auch probiert:
<div data-type="symbol"
data-device="dummy1"
data-get-on='["0","10","20","30","40","50","60","70","80","90","100"]'
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40","oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80","oa-fts_shutter_90","oa-fts_shutter_100"]'
data-on-color="#101010"
data-background-icon="fa-square"
data-on-background-color="dummy1:window">
</div>

Die Icons werde alle korrekt angezeigt, aber der Hintergrund bleibt grau. Wenn ich data-on-background-color="#00FF00" wird der Hintergrund immer grün (aber nicht dynamisch).

Gibt es eine Möglichkeit, die Hintergrundgrundfarbe dynamisch festzulegen?

Grüße
Alex

setstate

Dein 2ter Code funktioniert fast:


      </div>
<div data-type="symbol"
data-device="dummy1"
data-get-on='["0","10","20","30","40","50","60","70","80","90","100"]'
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40","oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80","oa-fts_shutter_90","oa-fts_shutter_100"]'
data-on-color="#101010"
data-background-icon="fa-square"
data-on-background-color="dummy1:window"
data-off-background-color="dummy1:window">
</div>


Aber ich musste noch eine Anpassung im Widget machen. Teste das mal bitte, dann rolle ich es mit aus, wenn es passt.

PS.: Bitte nicht #00ff00 für grün nehmen. Das ist voll 90er (und ist ganz schlecht für die Augen  ;) ). Schöne Farben: https://flatuicolors.com

All-Ex

Wow, Danke für die Super-Schnelle Umsetzung :-)

Funktioniert genau wie ich möchte (wenn ich nur ein Device verwende)

Ein Problem habe ich aber noch, wenn ich 2 verschiedene Devices verwende:
Wenn ich für data-device="dummy1" setze und für data-on-background-color="dummy2:window" (also verschiedene Devices) wird das Icon über Longpoll sofort geändert, wenn ich dummy1 ändere. Die Farbe aus dummy2:windows wird allerdings nur übernommen, wenn ich einen Reload im Browser mache (also nicht per Longpoll). Schöner wäre es, wenn auch bei Änderung von device2 ein Longpoll funktioniert...

PS: So grelle Farben nehme ich nur zum testen, dann seh ich sofort was abgeht. Sonst mag ichs eher dezenter ;-)

setstate

Du musst auch data-off-background-color="dummy2:window" setzen.
Der Schalter ist initial aus

All-Ex

Ja, das hatte ich gemacht, der code sieht so aus:

<div class="cell" data-type="symbol"
data-device="dummy1"
data-get-on='["0","10","20","30","40","50","60","70","80","90","100"]'
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40","oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80","oa-fts_shutter_90","oa-fts_shutter_100"]'
data-on-color="#101010"
data-background-icon="fa-square"
data-on-background-color="fns.dg.sz.no:ftui_color"
data-off-background-color="fns.dg.sz.no:ftui_color">
</div>


dummy1 enthält die Werte 0 - 100, da klappt der Refresh sofort

Die Farbcodes in fns.dg.sz.no:ftui_color wechseln in FHEM zwischen #505050 und #996B19, aber werden erst nach einem Browser-Reload aktualisiert

setstate

Hat das fns.dg.sz.no vielleicht ein event-on-update-reading Attribut definiert, der das notify der Änderung verhindert?

All-Ex

Hallo,

habe mir das ganze nochmal angeschaut, die Hintergrundfarbe ändert sich nach wie vor erst bei einem Reload der Seite.

  • Ein event-on-update-reading habe ich nicht gesetzt.
  • Mein TabletUI ist aktuell.
  • Jede Änderung von fns.dg.sz.no:ftui_color löst in FHEM ein Event im Eventmonitor aus (ftui_color wird über das DOIF doi.wrn.fenster gesetzt):
2016-12-11 12:18:01 DOIF doi.wrn.fenster cmd_event: fns.dg.sz.no
2016-12-11 12:18:01 dummy fns.dg.sz.no open
2016-12-11 12:18:01 dummy fns.dg.sz.no ftui_color: #996B19
2016-12-11 12:18:07 DOIF doi.wrn.fenster cmd_event: fns.dg.sz.no
2016-12-11 12:18:07 dummy fns.dg.sz.no closed
2016-12-11 12:18:07 dummy fns.dg.sz.no ftui_color: #505050

  • Das div aus dem Post 2 weiter oben habe ich in ftui_snippet_tester.html eingegeben. Das Log habe ich angehängt.
Kann es sein, dass Events wie "dummy fns.dg.sz.no ftui_color: #996B19" nicht bei TabletUI ankommen, bzw. ausgefiltert werden?

VG
Alex

setstate

Auf FTUI Seite gibt es keinen Hindernisgrund. Ich habe es an einem Beispiel durchprobiert, allerdings nur mit dem FHEMWEB-Befehl "setreading dummy.3 ftui_color #ff44ff". Klappt wunderbar ...

All-Ex

Du hast recht, nur in Zusammenhang mit einem DOIF tritt das Problem bei mir auf. Nun habe ich bei dem DOIF, welches setreading ausführt einen Wait-Timer von 0.1 Sekunde gesetzt und es geht :-)

Warum ich den brauche, weiß ich zwar nicht, aber mit Tablet UI hat es nicht zu tun!

Danke Dir,
Alex