dzVents - 保存 'color' 对象并重复使用
dzVents - Save 'color' object and reuse
我想获取 HUE 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)
获取单个值而不是保存整个对象!
device.getColorreturns一个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)
并且 function device.setColor(r, g, b, br, cw, ww, m, t)
不接受 table 作为输入。
所以唯一的方法就是使用单个参数。当然,您可以编写一些方便的函数来列出颜色对象中的那些参数,以备不时之需。
类似于
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))
我想获取 HUE 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)
获取单个值而不是保存整个对象!
device.getColorreturns一个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)
并且 function device.setColor(r, g, b, br, cw, ww, m, t)
不接受 table 作为输入。
所以唯一的方法就是使用单个参数。当然,您可以编写一些方便的函数来列出颜色对象中的那些参数,以备不时之需。
类似于
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))