Farbige Stateicons für FBDECT-Lampen

Begonnen von kuwagei, 05 Juni 2024, 10:12:06

Vorheriges Thema - Nächstes Thema

kuwagei

Ich habe die meisten meiner Zigbee-Lampen über das neue Fritz!Smartgateway eingebunden z.B.:

defmod Markuszimmerlampe FBDECT fb1:Z00158D0003892BEE01 HANFUNUnit,switch,dimmer,colorswitch,lightSwitch
attr Markuszimmerlampe alias Markuszimmerlampe
attr Markuszimmerlampe event-min-interval power:120
attr Markuszimmerlampe fp_Haus 367,458,5,Markuszimmerlampe,
attr Markuszimmerlampe icon hue_filled_white_and_color_e27_b22
attr Markuszimmerlampe room F2->Markuszimmer,SYS->FBDECT
attr Markuszimmerlampe webCmd color

Nun würde ich gerne wie bei den HUEDevices die StateIcons im Floorplan farbig darstellen, also:
attr Markuszimmerlampe color-icons 2
attr Markuszimmerlampe devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}

Was jedoch im FBDECT-Modul offenbar nicht enthalten ist.
Wie kann ich das hier bewerkstelligen?

Fritz: Box5590, Rep.1200AX+2400, SmartGW, 2xPL546E, 3xDECT200, 3x302, 3x440, RolloTronDECT,
Raspberrymatic-, FHEM-, deConz-Docker auf Raspi3B, HB-Docker auf Tinkerboard, div. Zigbee-Geräte
3xHM-LC-Sw1-FM,3xHM-LC-Sw1PBU-FM,3xHM-LC-Sw2-FM,2xHM-CC-RT-DN, HM-LC-Sw1PBU-FM,HM-Sec-...
DUOFERN+9x Rollotron

betateilchen

Zitat von: kuwagei am 05 Juni 2024, 10:12:06Wie kann ich das hier bewerkstelligen?

Im Modul HUEDevice nachschauen, was die Funktion HUEDevice_devStateIcon() tut und die Funktion in der 99_myUtils.pm "nachbauen". Dann kannst Du diese eigene Funktion überall da verwenden, wo Dir der Sinn danach steht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

ZitatWie kann ich das hier bewerkstelligen?
HUEDevice_devStateIcon verwendet Eigenheiten des HUEDEVICE Moduls.
Die "color-icons 2" Funktionalitaet ist relativ einfach:
  return ".*:light_toggle@#".CommandGet("","$name RGB").":toggle" if( $effect && $pct < 100 && AttrVal($name, "color-icons", 0) == 2 );
D.h. man muesste aus den im FBDECT vorhandenen Farbwerten (hue,saturation,color) ein RGB Wert umrechnen.
In FHEM/Color.pm gibt es die Funktion hsv2rgb. Die Parameter werden im Bereich 0..1 erwartet, mangels Beispiel weiss nicht, was FBDECT liefert, d.h. evtl. is eine Skalierung noetig.


kuwagei

Ich habe jetzt folgende (Teil-)Lösung, bei der die Icons zumindest schon mal in der richtigen Farbe dargestellt werden, allerdings dauert es ziemlich lange, bis die Darstellung der Farbänderung folgt. 

Kann ich da noch was machen ohne die polltime der Fritzbox (ist bei mir 120) weiter heruntersetzen zu müssen?

defmod Lichterkette FBDECT fb1:Z8418260000CAAED003 HANFUNUnit,switch,dimmer,colorswitch,lightSwitch
attr Lichterkette devStateIcon {Color::devStateIcon($name,"rgb","rgb","state")}
attr Lichterkette event-on-change-reading color
attr Lichterkette fp_Haus 317,-1,1,Lichterkette,
attr Lichterkette userReadings rgb {Color::hsv2hex(ReadingsNum($name,"hue",0)/360, ReadingsNum($name,"saturation",0)/255, ReadingsNum($name,"level",0)/255)}
attr Lichterkette webCmd color
Fritz: Box5590, Rep.1200AX+2400, SmartGW, 2xPL546E, 3xDECT200, 3x302, 3x440, RolloTronDECT,
Raspberrymatic-, FHEM-, deConz-Docker auf Raspi3B, HB-Docker auf Tinkerboard, div. Zigbee-Geräte
3xHM-LC-Sw1-FM,3xHM-LC-Sw1PBU-FM,3xHM-LC-Sw2-FM,2xHM-CC-RT-DN, HM-LC-Sw1PBU-FM,HM-Sec-...
DUOFERN+9x Rollotron

rudolfkoenig

ZitatKann ich da noch was machen ohne die polltime der Fritzbox (ist bei mir 120) weiter heruntersetzen zu müssen?
Man koennte nach dem Setzen explizit die Abfrage aller Werte veranlassen (set fbahahttp refreshstate)

kuwagei

Zitat von: rudolfkoenig am 07 Juni 2024, 13:50:15
ZitatKann ich da noch was machen ohne die polltime der Fritzbox (ist bei mir 120) weiter heruntersetzen zu müssen?
Man koennte nach dem Setzen explizit die Abfrage aller Werte veranlassen (set fbahahttp refreshstate)
Danke, manuell mache ich das auch so, aber wie kann ich das ins set color Kommando einbauen, per Notify wird es doch auch verzögert, oder?
Fritz: Box5590, Rep.1200AX+2400, SmartGW, 2xPL546E, 3xDECT200, 3x302, 3x440, RolloTronDECT,
Raspberrymatic-, FHEM-, deConz-Docker auf Raspi3B, HB-Docker auf Tinkerboard, div. Zigbee-Geräte
3xHM-LC-Sw1-FM,3xHM-LC-Sw1PBU-FM,3xHM-LC-Sw2-FM,2xHM-CC-RT-DN, HM-LC-Sw1PBU-FM,HM-Sec-...
DUOFERN+9x Rollotron

rudolfkoenig

Zitatper Notify wird es doch auch verzögert, oder?
Noch schlimmer ist, dass die Fritz!BOX Abfrage asynchron laeuft.
Aber wenn state geaendert wird, dann sollte das Icon auch aktualisiert werden.

kuwagei

Zitat von: rudolfkoenig am 08 Juni 2024, 10:15:11
Zitatper Notify wird es doch auch verzögert, oder?
Noch schlimmer ist, dass die Fritz!BOX Abfrage asynchron laeuft.
Aber wenn state geaendert wird, dann sollte das Icon auch aktualisiert werden.
Dadurch, dass ich das Icon über das userReading "rgb {Color::hsv2hex(ReadingsNum($name,"hue",0)/360, ReadingsNum($name,"saturation",0)/255, ReadingsNum($name,"level",0)/255)}" definiere, ändert es sich erst, wenn dieses aktualisiert wurde.

Habe in dem Zusammenhang aber noch ein weiteres Problem: Wie ist es denn bei einer in der Fritzbox definierten Lampengruppe, warum kann ich da nicht die gleichen Settings verwenden wie bei einer einzelnen Lampe?
WebCmd Color funktioniert hier nicht, weil es im Set nicht enthalten ist.
Muss ich da die Lampen einzeln definieren und als structure zusammenfassen (sind 5 Stück)?

defmod Dachzimmerleuchter FBDECT fb1:grp80FDD8_3F3DE04CA HANFUNUnit,switch,dimmer,colorswitch,lightSwitch
attr Dachzimmerleuchter devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
attr Dachzimmerleuchter event-min-interval power:120
attr Dachzimmerleuchter group Beleuchtung
attr Dachzimmerleuchter icon hue2019_archetypesDoubleSpot
attr Dachzimmerleuchter room F3->Dachzimmer,SYS->FBDECT
attr Dachzimmerleuchter webCmd color
Fritz: Box5590, Rep.1200AX+2400, SmartGW, 2xPL546E, 3xDECT200, 3x302, 3x440, RolloTronDECT,
Raspberrymatic-, FHEM-, deConz-Docker auf Raspi3B, HB-Docker auf Tinkerboard, div. Zigbee-Geräte
3xHM-LC-Sw1-FM,3xHM-LC-Sw1PBU-FM,3xHM-LC-Sw2-FM,2xHM-CC-RT-DN, HM-LC-Sw1PBU-FM,HM-Sec-...
DUOFERN+9x Rollotron