![]() |
|
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')
endCode: 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')
endCode: 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 |