Hallo,
hab mir von hier https://forum.fhem.de/index.php/topic,51592.msg432712.html#msg432712 die Inspiration geholt wie man einen Rollladenstatus darstellen könnte.
Dazu wollte ich meine drei Knöpfe up, stop, down entsprechend farblich hinterlegen, grün=ist up, gelb=ist dazwischen, rot=ist unten.
Nun hab ich das entsprechend dem Vorschlag im referenzierten Thread wohl mit einem "symbol" geschafft, aber leider nicht mit einem "push" den ich eigentlich brauche.
<div data-type="symbol"
data-device="duFarbe"
data-get-on="on"
data-get-off="off"
data-icon="fa-arrow-up"
data-on-background-color="duFarbe:farbeon"
data-off-background-color="duFarbe:farbeoff"
data-background-icon="fa-circle"
class="cell big">
</div>
<div data-type="push"
data-device="duFarbe"
data-off-background-color="duFarbe:farbeoff"
data-icon="fa-arrow-up"
data-background-icon="fa-circle"
class="cell big">
</div>
Internals:
CFGFN
NAME duFarbe
NR 3609
STATE off
TYPE dummy
Readings:
2016-07-27 21:51:11 farbeback #aa6900
2016-07-29 14:13:28 farbeoff #00dd00
2016-07-27 21:05:12 farbeon #ff0000
2016-07-29 14:11:51 state off
Attributes:
room test
userReadings farbeon, farbeoff
Im Beispiel, siehe screenshot, hätte ich erwartet das die beiden Dinger gleich ausschauen. Aber nur das linke (symbol) zeigt einen Hintergrund entspreched der im duFarbe:farbeoff eingestellten Farbe.
Das rechte (push) ignoriert scheinbar den Wert. Allerdings nicht ganz, denn wenn ich das
data-off-background-color="duFarbe:farbeoff"
ganz weglösche, dann wirds dunkelgrau-statt weiß, also die default Farbe.
Anders gesagt, sobald "data-off-background-color" gesetzt ist, egal auf was für einen Wert, dann wirds immer weiß.
Vieileicht greift das push beim holen der Farbe knapp daneben und bekommt immer weiß zurück ?
Edit:V. 2.2 verwendet.
Grüße
knxhm
Push hat keinen Rückkanal, kann also nicht von Fhem Farben oder Zustände bekommen.
Man kann aber einen Switch verwenden, der reagiert darauf und man kann ihn auch so verbiegen, das er wie ein Push reagiert (nicht an/aus)
Link habe ich gerade nicht verfügbar. Reiche ich nach ...
http://www.fhemwiki.de/wiki/FTUI_Snippets
Hm,hab das snippet probiert. Leider funktionieren die Knöpfe nur einmal nach laden der Seite, und dann werden beim drücken keine Events mehr geschickt.
Ich verstehe ehrlich gesagt auch nicht wie der code den switch so verbiegen soll das er wie ein push funktionieren soll, könntest du das bitte erklären ?
Durch das data-set-off="" wird das Ausschalten verhindert. Der Switch wird zum Taster für "on", der aber nur dann wieder auf "on" gesetzt werden kann, wenn der Status wieder zurück auf "off" gefallen ist.
<div data-type="switch" data-device="dummy1"
data-get-on="auf"
data-get-off="zu"
data-set-on="auf"
data-set-off=""
data-on-background-color="#ad3333"
data-off-background-color="#32a054"
data-icon="fa-arrow-up">
</div>
<div data-type="switch" data-device="dummy1"
data-get-on="zu"
data-get-off="auf"
data-set-on="zu"
data-set-off=""
data-on-background-color="#ad3333"
data-off-background-color="#32a054"
data-icon="fa-arrow-down">
</div>
Einen Taster-Mode mit mehrfach möglichem "on" erreicht man durch data-fhem-cmd
<div data-type="switch" data-device="dummy1"
data-states='["zu","mittel","auf"]'
data-background-colors='["green", "gray", "red"]'
data-fhem-cmd="set dummy1 auf"
data-icon="fa-arrow-up">
</div>
<div data-type="switch" data-device="dummy1"
data-states='["zu","mittel","auf"]'
data-background-colors='["red", "gray", "green"]'
data-fhem-cmd="set dummy1 zu"
data-icon="fa-arrow-down">
</div>
Ein Schritt weiter. Ein mieser oder auch genialer Trick statt dem Kommandocode für set allein gleich das ganze Kommando mit Parametern zu schicken. Ich sehe, es gibt viel Möglichkeiten, man braucht nur die Fantasie dazu.
Leider ändert sich aber auch die Farbe des switch Knopfes wenn man drauf klickt und das kann ich nicht gebrauchen. Habs nicht geschafft ihm das abzugewöhnen, nicht mit z. B.leerem data-get-on/off, sogar mit einem falschen - sprich nicht existierendem - data-device will der switch beim klicken abwechselnd die Farbe grau/orange wechseln obwohl dann gar nicht definiert sein kann ob er off oder on ist.
Hast du dafür auch noch eine Lösung?
"Unter" den Knöpfen habe ich 3 KNX data devices.
Eines für Rollladen up/down fahren, je nachdem ob es auf "up" oder "down" gesetzt wird. Dieses soll mit den beiden Rauf und Runter Knöpfen verbunden sein.
Ein 2. um den fahrenden Rolladen beim setzen von "on" zu stoppen. Soll mit dem "Stop" Knopf verbunden sein.
Ein 3. mit einer Prozentzahl die den Status des Rolladens anzeigt. Soll mit der Farbe aller Knöpfe verbunden sein.
Welche Status treten bei dem Device-Reading denn noch auf? Ich vermute, mehr als 2. Dann würde ich den "aus" mit Wildcard definieren
<div data-type="switch" data-device="dummy1"
data-get-on="auf"
data-get-off="!on"
data-set-on="auf"
data-set-off=""
data-on-background-color="#ad3333"
data-off-background-color="#32a054"
data-icon="fa-arrow-up">
</div>
<div data-type="switch" data-device="dummy1"
data-get-on="zu"
data-get-off="!on"
data-set-on="zu"
data-set-off=""
data-on-background-color="#ad3333"
data-off-background-color="#32a054"
data-icon="fa-arrow-down">
</div>
data-get-off="!on" bedeutet: alles nur nicht das, was bei data-get-on definiert ist.
Wenn du einfach Parameter weglässt, gelten die Defaults, die im Widget hinterlegt sind. Da muss man wissen, was dort definiert ist, ansonsten kann das schnell verwirren
device-reading ist nur ein einziges relevant, die %Zahl im 3. device wie oben beschrieben, bzw. das daraus abgeleitete userReading. Aus der %Zahl wollte ich eine Farbe berechnen und in ein userReading schreiben wie du es in dem anderen Thread vorgeschlagen hast. Und dieses userReading ist dann direkt die Backgroundfarbe aller 3 Knöpfe, auf das kann ich ja mit data-on/off-background-color="device:farbe" referenzieren.
Die Knöpfe selber die das 1.device (auf/ab) und 2.device (stop) referenzieren brauchen gar keine Stati, sie sollen ja bei Betätigung immer wieder das gleiche KNX Telegram auslösen. Die Knöpfe wissen nicht, und brauchen es auch nicht wissen ob sie schon auf, ab oder stop geschickt haben und wie oft.
Nur das Status device bekommt seinen Statuswert direkt vom KNX Aktor gesetzt der dann eben sendet das er bei z.B. 33% stehengeblieben ist. Und nur nach einem solchen Status Event sollen sich die Knopffarben updaten.
Die 3 devices ergeben sich aus den 3 verwendenden KNX Telegrammen.
Tel1=1 fährt hoch, Tel1=0 fährt runter, Tel2=1 stoppt, Tel3 hat einen 8 Bit Datenwert als Stellungsstatus.
kompliziert .... aber nicht unmöglich
<div data-type="switch"
data-device="ftuitest"
data-icon="fa-arrow-up"
data-on-background-color="ftuitest:statecolor"
data-off-background-color="ftuitest:statecolor"
data-background-icon="fa-circle"
data-fhem-cmd="set ftuitest zu"
class="cell big">
</div>
data-fhem-cmd wird gesendet, wenn geklickt
data-on-background-color und data-off-background-color zeigen auf das selbe Color-Reading, damit sich beim Klick die Farbe nicht verändert.
data-device muss gesetzt werden, damit data-fhem-cmd freigeschaltet bleibt, auch wenn wir keinen Status vom Device brauchen
Ja, so gehts. Danke.