(11.02.2019, 12:45)admin Wrote: Here's a complete example with two sequences - one for "on" event, another for "off". 32/1/1 is the object that triggers execution. Delay between each command is fixed at 0.5 seconds. This can be made adjustable via sequence table, but it must not be 0, otherwise sequence thread won't be able to pass control to localbus monitor thread.
Code:if not client then require('copas') seqon = { { address = '1/1/1', value = true }, { address = '32/1/2', value = 42 }, { address = '32/1/3', value = 43 }, { address = '32/1/4', value = 44 }, { address = '32/1/5', value = 45 }, } seqoff = { { address = '1/1/1', value = false }, { address = '32/1/2', value = 53 }, { address = '32/1/3', value = 54 }, { address = '32/1/4', value = 55 }, { address = '32/1/5', value = 56 }, } function eventhandler(event) if event.dst == '32/1/1' then local val = busdatatype.decode(event.datahex, dt.bool) sequence = val and seqon or seqoff seqpos = 1 copas.wakeup(seqthread) end end client = require('localbus').new() client:sethandler('groupwrite', eventhandler) copas.addserver(client.sock, function() client.sock = copas.wrap(client.sock) while true do client:step() end end, 1) seqthread = copas.addthread(function() copas.sleep(-1) -- put thread to sleep until wakeup is called while true do local curr = sequence[ seqpos ] grp.write(curr.address, curr.value) seqpos = seqpos + 1 -- end of sequence if seqpos > #sequence then copas.sleep(-1) else copas.sleep(0.5) end end end) end copas.step()
This script was nice

It's it possible to have different sleep (delay) between each command?