Logic Machine Forum
Dali interface scenes - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Gateway (https://forum.logicmachine.net/forumdisplay.php?fid=10)
+--- Thread: Dali interface scenes (/showthread.php?tid=111)



Dali interface scenes - gjniewenhuijse - 20.10.2015

How to use scenes with the dali interface?

Is there a kind of "software scene" object?


RE: Dali interface scenes - admin - 21.10.2015

You can create simple scenes by making a script that writes the required values one by one.


RE: Dali interface scenes - gjniewenhuijse - 11.11.2015

(21.10.2015, 13:26)admin Wrote: You can create simple scenes by making a script that writes the required values one by one.


And saving a scene? Do you have a short example?


RE: Dali interface scenes - admin - 12.11.2015

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.

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



RE: Dali interface scenes - gjniewenhuijse - 12.11.2015

many thanks