lua - dzVents - 保存“颜色”对象并重复使用
问题描述
我想获得 HUEcolor
状态,保存它,改变颜色几分钟,然后恢复保存的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.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))
推荐阅读
- c# - NuGet - NU5131:未打包 nuspec 文件中声明的引用
- javascript - 使用 API 返回的记录更新状态,更新后
- node.js - Google Hangouts Chatbot 创建房间
- highcharts - 在 Highcharts 库错误中设置图表的最小值和最大值
- python - c++排序的python实现
- java - 如何根据用户选择打印星数
- c++ - 当我使用直接初始化与 std::initializer_list 时的不同指令
- javascript - 在 Three.js 中绘制没有重叠边界的国家/地区的面孔
- swift - SwiftUI macOS 列表行删除填充
- java - Intellij 是格式化后行内的 puttign 空格