LogicMachine Forum
LUA control shutter using reactor - 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: LUA control shutter using reactor (/showthread.php?tid=1504)



LUA control shutter using reactor - Bitver - 28.07.2018

I wonder if there is any script to control shutters (position, up/down, stop) using reactor digital outputs?


RE: LUA control shutter using reactor - buuuudzik - 28.07.2018

I was thinking about this task(as a challenge) and maybe I will prepare some script. It should be (in my opinion) combination of event-based script which will activate resident script and when blind is moving this resident script should control its relays in some wise way.


RE: LUA control shutter using reactor - AEK - 31.07.2018

(28.07.2018, 11:21)Bitver Wrote: I wonder if there is any script to control shutters (position, up/down, stop) using reactor digital outputs?

try this

1/1/1 - button up
1/1/2 - button down
1/1/3 - motor up
1/1/4 - motor down
1/1/5 - position setpoint
1/1/6 - position status

event script for button up (name = gate_up)
Code:
up = event.getvalue() status = grp.getvalue('1/1/6') time = 65             -- movement time (sec.) step = time/100         -- delay step if up == true then  script.disable('gate_up')  script.disable('gate_down')     grp.write('1/1/3', true)  while up == true do    up1 = grp.getvalue('1/1/1')      if up1 == false then      status = status - 0      grp.write('1/1/3', false)        grp.write('1/1/4', false)      grp.write('1/1/6', status)      break    end    status = status + 1    os.sleep(step)    grp.write('1/1/6', status)     end  script.enable('gate_up')  script.enable('gate_down') end
event based script for button down (name = 'gate_down')
Code:
down = event.getvalue() status = grp.getvalue('1/1/6') time = 60             -- movement time (sec.) step = time/100         -- delay step if down == true then  script.disable('gate_up')  script.disable('gate_down')     grp.write('1/1/4', true)  while down == true do    down1 = grp.getvalue('1/1/2')    if down1 == false then      status = status - 0      grp.write('1/1/3', false)        grp.write('1/1/4', false)      grp.write('1/1/6', status)      break    end    status = status - 1    os.sleep(step)    grp.write('1/1/6', status)     end  script.enable('gate_up')  script.enable('gate_down') end
event script for position setpoint (name = position)
Code:
proc = event.getvalue() status = grp.getvalue('1/1/6') time = 65             -- movement time (sec.) step = time/100          -- delay step if proc - status > 0 then  grp.write('1/1/3', false)  grp.write('1/1/4', false)  os.sleep(0.25)     grp.write('1/1/3', true)    while status ~= proc do    proc = grp.getvalue('1/1/5')      status = status + 1    os.sleep(step)    grp.write('1/1/6', status)    if proc == status then      grp.write('1/1/3', false)        grp.write('1/1/4', false)      grp.write('1/1/6', proc)    end     end elseif proc - status < 0 then time = 60                   -- movement time (sec.) step = time/100             -- delay step  grp.write('1/1/3', false)  grp.write('1/1/4', false)    os.sleep(0.25)     grp.write('1/1/4', true)  while status ~= proc do    proc = grp.getvalue('1/1/5')    status = status - 1    os.sleep(step)    grp.write('1/1/6', status)    if proc == status then      grp.write('1/1/3', false)        grp.write('1/1/4', false)      grp.write('1/1/6', proc)    end  end end