我想获取色调color状态,保存它,更改颜色几分钟,然后恢复保存的color。
问题是我可以获取color状态对象,但不能原样恢复前一个对象:
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
}我不知道如何恢复到以前的状态。我已经保存了color对象,但是设置颜色的选项是获取单个值的方法setColor(r, g, b, br, cw, ww, m, t),而不是保存的整个对象!
发布于 2019-08-22 20:46:24
device.getColor返回表
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)并且function device.setColor(r, g, b, br, cw, ww, m, t)不接受表格作为输入。
因此,唯一的方法是使用单个参数。当然,您可以编写一些方便的函数来列出颜色对象中的这些参数,以防您经常需要这样做。
就像这样
local function color2Params(color)
return color.r, color.g, color.b,
color.brightness, color.cw, color.ww, color.m, color.t
end然后,您可以简单地调用device.setColor(color2Params(domoticz.data.savedColor))
https://stackoverflow.com/questions/57607631
复制相似问题