rule "WulTest"
when
Item WuLTest received command ON
then
// "From" Color
var hF = ((WuL_Child_N_Hue_FF_Child_Col.state as HSBType).hue as DecimalType).floatValue
var sF = (WuL_Child_N_Hue_FF_Child_Col.state as HSBType).saturation
var bF = (WuL_Child_N_Hue_FF_Child_Col.state as HSBType).value
// "To" Color
var hT = ((WuL_Child_D_Hue_FF_Child_Col.state as HSBType).hue as DecimalType).floatValue
var sT = (WuL_Child_D_Hue_FF_Child_Col.state as HSBType).saturation
var bT = (WuL_Child_D_Hue_FF_Child_Col.state as HSBType).value
var tD = (WuL_Child_DimTime.state as DecimalType).intValue
var steps = tD * 60
var sD = (sT - sF) / steps
var bD = (bT - bF) / steps
//
// Make sure to always fade clockwise (e.g. from blue to yellow via red not via green)
//
var float hD
if (hT < hF) {
hD = (hT + 360 - hF) / steps
} else {
hD = (hT - hF) / steps
}
var hue = hF
var sat = sF
var brt = bF
var i = 0
while (i<=steps) {
sendCommand(Hue_GF_WZ_Ceiling_Col, hue + "," + sat + "," + brt)
hue = hue + hD
if (hue > 360) { hue = hue - 360 }
sat = sat + sD
brt = brt + bD
i = i + 1
Thread::sleep(100)
}
end
var hF = ((WuL_Child_N_Hue_FF_Child_Col.state as HSBType).hue as DecimalType).floatValue
var sF = (WuL_Child_N_Hue_FF_Child_Col.state as HSBType).saturation
var bF = (WuL_Child_N_Hue_FF_Child_Col.state as HSBType).value var Number hF = (WuL_Child_N_Hue_FF_Child_Col.state as org.openhab.core.library.types.HSBType).hue
var Number sF = (WuL_Child_N_Hue_FF_Child_Col.state as org.openhab.core.library.types.HSBType).saturation
var Number bF = (WuL_Child_N_Hue_FF_Child_Col.state as org.openhab.core.library.types.HSBType).brightness
var Number hT = (WuL_Child_D_Hue_FF_Child_Col.state as org.openhab.core.library.types.HSBType).hue
var Number sT = (WuL_Child_D_Hue_FF_Child_Col.state as org.openhab.core.library.types.HSBType).saturation
var Number bT = (WuL_Child_D_Hue_FF_Child_Col.state as org.openhab.core.library.types.HSBType).brightness
Group:Switch:OR(ON,OFF) LightsLava "Lava Lamps" <hue> (All)Selection item=Scene_Lighting label="Scene" mappings=[0=AllOff, 1=AllOn, 2=Lava, 3=Energize, 4=Relax, 5=Party, 6=Nightlight, 7=Bedtime, 8=LoveShack]rule "Lighting Scene - LightsLava Switch On"
when
Item LightsLava received command ON
then
var Number fadeCounter
//RAPIDLY CHANGE HSB FOR ALL LIGHTS ON
fadeCounter=0
while(fadeCounter<100 && Scene_Lighting.state == 2 && LightsLava.state == ON) {
fadeCounter=fadeCounter+1
Lights?.members.forEach(light|
sendCommand(light, (((Math::random * 255).intValue)) + "," + (((Math::random * 100).intValue)) + "," + (((Math::random * 100).intValue)))
)
Thread::sleep(2000)
}
//Switch OFF and return to relaxing colors
postUpdate(LightsLava, OFF)
end