LogicMachine Forum
DMX lighting control - Printable Version

+- LogicMachine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: DMX lighting control (/showthread.php?tid=16)



DMX lighting control - managementboy - 03.07.2015

This is again a work in progress that might be used as inspiration. I have this as a user script that I include in KNX objects to turn DMX lights on/off or to a specific value. All DMX in my home are eldoleds. The user script I use is called user.mydmx

What I am working on is the dimming part... not really sure why it is not working. 


Code:
-- set of variables for zones in the apartment -- these are the DMX channels to be set alllights = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20} bathroomlights = {7,8} bathroomheadlight = {7} bathroomfloor = {20} livinglights = {5,6,9,10,11,12,14,15,16,17,18,19} kitchenlights = {13} bedroomlights = {1,2,3} entrancelights = {4} -- turns DMX stripe to full on or off based on two groups function dmxtoggle(channel, state)   -- group that contains the value for ON. I use a slider to define the intensity of on/off   on = grp.getvalue('5/7/17')   -- group that contains the value for OFF   off = grp.getvalue('5/7/18')      if (state == true) then     DMX.set(channel, on)     return on   else     DMX.set(channel, off)       return off   end end -- loops through all lights -- lights is an array of the channel(s) to be set -- state is the state of the group -- stategroup is the group that holds the state of this light -- slider is the group of a slider for setting the light level function dmxlooptoggle(lights, state, stategroup, slider)      for index, value in ipairs(lights) do     sliderstate = dmxtoggle(value, state)   end      -- write state to state group (that way pushbuttons know the state)   grp.write(stategroup, state)        -- if a slider object was provided, then update the internal value   -- this helps keep the visualization consistent   grp.update(slider, sliderstate)    end function dmxloopset(lights, value)   for index, channel in ipairs(lights) do     DMX.set(channel, value)   end end -- dimm light up function dmxdimmup(lights, intencity)   for index, value in ipairs(lights) do     intencity = intencity + 1     DMX.set(value, intencity)   end end -- dimm light down function dmxdimmup(lights, intencity)   for index, value in ipairs(lights) do     intencity = intencity - 1     DMX.set(value, intencity)   end end -- make it easy to show if a light is on off when also using sliders function onoffvisu(onoffgroup, state)   if (state > 0) then     -- set on/off to on     grp.write(onoffgroup, true)   else     -- set on/off to off     grp.write(onoffgroup, false)   end end

An example of usage:

Code:
require('user.mydmx') dmxlooptoggle(livinglights, event.getvalue(),'5/7/21','5/1/21')

This turns the lights in the living room on or off depending on the value of the KNX object.


RE: DMX lighting control - prostar - 11.01.2018

Hi, very nice work and thanks for sharing. Did you ever get the dimming part to work?
(Bump)