NoneDz Vents - сохранить "цветной" объект и повторно использовать
Я хотел бы получить оттенок 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)
которые получают отдельные значения, а не весь объект сохранен!
1 ответ
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))