This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Dali interface dimming
#1
Hi

I have put up an binary switch from Schneider to controll group adress that Dali talk with.

I have to possible ways of controlling the Dali adress, with binary on-off , where the on value may be put in (0-254) in dali interface
and with 1 byte integrer. Then I can put preset values in the swicth that it will send to the Dali Interface.

Is it possible for you to add the "standard" dimming data type to the Dali interface? 4 bit (3 bit control, and break)

This way it can be possible to seemless dim up and down . Or is there another way to do this?

I am using the Dali to control white LED lamps at the moment and later on i will intergrate RGB and RGBW lamps to it.

Passivpluss
Reply
#2
Another feature would be to add how long time the dimming should take. Now when i use the value dim it goes for the percentage instantly. A 1-3 seconds grading should look betterSmile
Reply
#3
+1 for including dali dimming through separate object, so we won't need to script this.
thank you
Reply
#4
thanks for suggestion!
currently we will add it into our to-do list and will look at it some time in the future Smile
For now, please do this functionality via scripts.
Reply
#5
(04.08.2015, 10:10)edgars Wrote: thanks for suggestion!
currently we will add it into our to-do list and will look at it some time in the future Smile
For now, please do this functionality via scripts.

Can you please give an example how to do this?
Reply
#6
And automatic feedback status would be great to addSmile
Reply
#7
is there a way of doing this for DMX too? does someone have a good DMX example for a script doing dimming?
Reply
#8
Right now we don't have enough resources to implement this.

Here's a function for start/stop dimming:
Code:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
function bindimmer(up, down, out, event)  local main, rev, step, val, new, delay  step = 10 -- in %  delay = 0.5 -- in seconds  -- ignore "stop" command  val = tonumber(event.datahex, 16)  if val == 0 then    return  end  -- up, normal mode  if event.dst == up then    main, rev = up, down  -- down, reverse step  elseif event.dst == down then    main, rev = down, up    step = -step  -- invalid object  else    return  end  -- current output object value  val = grp.getvalue(out) or 0  while true do    -- main object in "stop" state    if not grp.getvalue(main) then      return    end    -- reverse object in "start" state    if grp.getvalue(rev) then      return    end    -- get new value    new = math.min(100, val + step)    new = math.max(0, new)    -- no change, stop    if new == val then      return    end    -- write new value    val = new    grp.write(out, new, dt.scale)    -- wait for next run    os.sleep(delay)  end end

Usage:

1. Add bindimmer function to Common functions

2. Create 3 objects:
1/1/1 - binary (dim up)
1/1/2 - binary (dim down)
1/1/3 - 1-byte scale (output)

3. Create an event script for each binary object:
Code:
1
bindimmer('1/1/1', '1/1/2', '1/1/3', event)

4. You can tune step and delay variables in bindimmer function to adjust dimming speed
Reply
#9
Thanks for the example, but a standard wall switch has two groupaddresses:
- turn on/off (1bit)
- dimming (4 bit, 3bit controlled - 03.007 dim/blinds step)

How to implement this for dali?
Reply
#10
(18.09.2015, 13:30)gjniewenhuijse Wrote: Thanks for the example, but a standard wall switch has two groupaddresses:
- turn on/off (1bit)
- dimming (4 bit, 3bit controlled - 03.007 dim/blinds step)

How to implement this for dali?

Is there already a solution for a default knx dimmer button:
up short: on
down short: off
up long: dim + started
down long: dim - started

Its important to control the standard 4 bit, 3bit controlled object for smooth dimming when using dali.
Reply
#11
Hi Gert Jan,

There is no long/short detection by default, the only way to do that is with custom SVG buttons 
that hold JavaScript to detect long/short

But why do it so hard if you can easely use byte value object with a slider?

BR,

Erwin
Reply
#12
This is to get dimming from a psycical switch. But if you use one rocker for up and one for down then this will workSmile from the web application the easiest way is from slider.Smile
Reply
#13
Hi PassivPluss,

My remark was on the long/short press from visu.

If you have a physical switch you can use our pushbutton interface MTN670802
There is a long/short press detection parameter with value stepper to send byte value.
You can set stepsize, direction and behavior when reaching min/max. This should work for you. Also all
KNX pushbuttons (plus) have this feature.

BR,

Erwin
Reply
#14
Have you tried this script?
http://forum.logicmachine.net/showthread.php?tid=13
Reply
#15
(19.10.2015, 06:25)admin Wrote: Have you tried this script?
http://forum.logicmachine.net/showthread.php?tid=13

thanks, that works for me.

I added a resident script for dimming:
Code:
12345678910111213141516171819202122232425262728293031323334
lastDali = 1 for i = 0, lastDali do  dimObjects = grp.tag('DALI_DIM_'..i)  for key, object in pairs(dimObjects) do    dimmer = object.data    step = bit.band(dimmer, 0x07)    if step ~= 0 then      lvObjects = grp.tag('DALI_LV_'..i)      for key, lvobject in pairs(lvObjects) do        up = bit.band(dimmer, 0x08) ~= 0        value = lvobject.data        if up then          newvalue = value + 5        else          newvalue = value - 5        end        -- clamp between 0 and 100        newvalue = math.min(newvalue, 100)        newvalue = math.max(newvalue, 0)        if newvalue ~= value then          lvobject:write(newvalue)        end      end    end  end   end os.sleep(0.1)

And i added a script for setting the status
Code:
123456789101112131415161718192021222324252627282930
require('user.dali') lastDali = 1 for i = 0, lastDali do  res = dalicmd('internal', 'queryactual', { addrtype = 'short', address = i })  if res then    curr = math.floor(res:byte() / 2.54)        -- set target level status    targetObjects = grp.tag('DALI_SLV_'..i)    for key, object in pairs(targetObjects) do      prev = object.data      if curr ~= prev then        targetObjects:response(curr)        end    end        -- set target on/off status    targetObjects = grp.tag('DALI_STAT_'..i)    for key, object in pairs(targetObjects) do      prev = object.data      if (curr>0) ~= prev then        targetObjects:response( curr > 0 )        end    end      end end os.sleep(0.1)

Next todo is a scene handler for DALI, see other thread Smile
Reply


Forum Jump: