WifiLight - DOIF Farbverlaufsgenerator

Begonnen von Klouse, 09 Januar 2018, 10:12:23

Vorheriges Thema - Nächstes Thema

Klouse

Hallo,

ich weiß nicht ob es nicht schon einen besseren Weg dafür gibt, aber vielleicht interessiert meine Lösung auch andere WifiLight-Benutzer:

Folgende Werte können gesetzt werden:

  • color1_rgb: Eingabe als RGB, wird dann in HSV umgerechnet
  • color2_rgb: Eingabe als RGB, wird dann in HSV umgerechnet
  • mode: long oder short, entscheidet ob Wifilight den kurzen oder langen Weg von Farbe 1 nach Farbe 2 nutzt.
  • ramp: Zeit von Farbe 1 nach Farbe 2.
  • start: Bei Kommando "on" startet der Farbverlauf.
define doif_KlouseLED1_grad_gen DOIF (["$SELF:start: on"] or [KlouseLED1:"programm:.grad_gen.100"]) ((set KlouseLED1 HSV [$SELF:color1_hsv] [$SELF:ramp] [$SELF:mode];;set KlouseLED1 HSV [$SELF:color2_hsv] [$SELF:ramp] [$SELF:mode]q grad_gen))
attr doif_KlouseLED1_grad_gen do always
attr doif_KlouseLED1_grad_gen readingList start ramp mode color1_rgb color2_rgb
attr doif_KlouseLED1_grad_gen setList start:on ramp:slider,1,1,60 mode:s,l color1_rgb:colorpicker,RGB color2_rgb:colorpicker,RGB
attr doif_KlouseLED1_grad_gen userReadings color1_hsv:color1_rgb.* {my ($r,$g,$b) = Color::hex2rgb(ReadingsVal($name,'color1_rgb','0'));; \
                         my ($h,$s,$v) = Color::rgb2hsv($r/255.0,$g/255.0,$b/255.0);; \
                         (sprintf("%d", $h*360)).','.(sprintf("%d", $s*100)).','.(sprintf("%d", $v*100))},\
color2_hsv:color2_rgb.* {my ($r,$g,$b) = Color::hex2rgb(ReadingsVal($name,'color2_rgb','0'));; \
                         my ($h,$s,$v) = Color::rgb2hsv($r/255.0,$g/255.0,$b/255.0);; \
                         (sprintf("%d", $h*360)).','.(sprintf("%d", $s*100)).','.(sprintf("%d", $v*100))}


So sieht das ganze bei mir im FTUI aus: Screenshot (Popups mit Colorpicker für die Farben und Volume für die Sekunden, der mode ist ein Switch und start ein Push)



LG,

Klaus

saschae

ich benutze für den Farbverlauf einfach ein Notify

defmod n_LED1_bsp notify WZ_LED_RING:programm:.LED1_RING.100 \
set WZ_LED_RING HSV 240,100,20 60 q;; \
set WZ_LED_RING HSV 320,100,20 60 q;;\
set WZ_LED_RING HSV 0,100,20 60 q LED1_RING