I'd like to get the HUE color
state, save it, change the color for few minutes and then restore the saved color
.
The problem is that I can get the color
state object but I can't restore the previous object as is:
return {
on = {
devices = {
'My Light'
}
},
data = {
savedColor = { initial = {} }
newColor = { initial = {} }
},
execute = function(domoticz, device)
if (device.active) then
domoticz.data.savedColor = device.getColor()
device.setRGB(50,50,50)
device.switchOff().afterSec(60).forMin(1)
-- here I'd like to restore the previous state; something like:
-- device.color = domoticz.data.savedColor
end
end
}
I do not know how to restore the previous state. I've saved the color
object but the option to set color is the method setColor(r, g, b, br, cw, ww, m, t)
that get the single values not the entire object saved!
device.getColor returns a table
local ct = domoticz.utils.fromJSON(device.color, {})
ct.hue, ct.saturation, ct.value, ct.isWhite = domoticz.utils.rgbToHSB(ct.r, ct.g, ct.b)
ct.red = ct.r
ct.blue = ct.b
ct.green = ct.g
ct["warm white"] = ct.ww
ct["cold white"] = ct.cw
ct.temperature = ct.t
ct.mode = ct.m
ct.brightness = ct.value
return (ct)
And function device.setColor(r, g, b, br, cw, ww, m, t)
does not accept a table as input.
So the only way is to use the single params. Of course you may write some convenience function that lists those params from a color object, in case you need that more often.
Something like
local function color2Params(color)
return color.r, color.g, color.b,
color.brightness, color.cw, color.ww, color.m, color.t
end
Then you can simply call device.setColor(color2Params(domoticz.data.savedColor))