12.11.2015, 07:31
Short example which can be used for any kind of scenes, not only for DALI.
First, you have to define each scene via a Lua table where each item is a table with two items: group address and value. Each scene has a unique id which can be a number or a string.
callscene(id) sets all objects in given scene to their specified value. First it looks for a saved scene in storage and uses default values if storage is empty.
savescene(id) gets current values of all objects from given scene and saves the whole scene in storage.
First, you have to define each scene via a Lua table where each item is a table with two items: group address and value. Each scene has a unique id which can be a number or a string.
callscene(id) sets all objects in given scene to their specified value. First it looks for a saved scene in storage and uses default values if storage is empty.
savescene(id) gets current values of all objects from given scene and saves the whole scene in storage.
Code:
scenes = {}
scenes[1] = {
{ '15/1/1', 50 },
{ '15/1/2', 75 },
{ '15/1/3', 90 },
}
function callscene(id)
local key, scene
key = 'scene_' .. id
scene = storage.get(key, scenes[ id ])
if type(scene) ~= 'table' then
alert('Scene ' .. id .. ' not found')
return
end
for _, item in ipairs(scene) do
grp.write(item[ 1 ], item[ 2 ])
end
end
function savescene(id)
local key, scene
scene = scenes[ id ]
if type(scene) ~= 'table' then
alert('Scene ' .. id .. ' not found')
return
end
for i, item in ipairs(scene) do
scene[ i ][ 2 ] = grp.getvalue(item[ 1 ])
end
key = 'scene_' .. id
storage.set(key, scene)
end