Example application
This is a full example application which will work with a Stream Deck Mini, load the 6 buttons, and show a message on the console when a button is pressed and released. its also showing how to load a button dynamically
x
uv=require("luv")
local e=require("elgato-lib")
local b=require("barionet-io")
relays= {0,0,0,0}
--[[
* * * * helper function: dump_block * * * *
* this function will hexdump a block *
* *
* argument: block to dump *
* result: block output to the console *
* * * * * * * * * * * * * * * * * * * * * *
]]--
dump_block=function(buf)
local prbuf=""
for i=1,buf:len() do prbuf=prbuf .. string.format("%02X ",buf:byte(i)) end
print(prbuf)
end
--[[
* * * * main function: keypress * * * * * *
* this function will be called when a *
* key on the elgato is pressed *
* *
* argument 1: key number (1..) *
* argument 2: 1=pressed 0=released *
* * * * * * * * * * * * * * * * * * * * * *
]]--
keypress=function(key,func)
print("key " .. key .. " func" .. func)
if func==1 then
ps="pressed "
if key>3 and key<7 then
print(" use key")
e.button(1,2,"n" .. key-3 .. "c.bmp")
if relays[key-3]>0 then
relays[key-3]=0
e.button(1,key,"n"..(key-3).."b.bmp")
b.setio(key-3,0)
else
relays[key-3]=1
e.button(1,key,"n"..(key-3).."c.bmp")
b.setio(key-3,1)
end
else if key==1 then
relays[1]=0 relays[2]=0 relays[3]=0
b.setio(1,0) b.setio(2,0) b.setio(3,0)
e.button(1,2,"paul80.bmp")
e.button(1,4,"n1b.bmp")
e.button(1,5,"n2b.bmp")
e.button(1,6,"n3b.bmp")
else
if key==3 then
relays[1]=1 relays[2]=1 relays[3]=1
b.setio(1,1) b.setio(2,1) b.setio(3,1)
e.button(1,2,"paul80c.bmp")
e.button(1,4,"n1c.bmp")
e.button(1,5,"n2c.bmp")
e.button(1,6,"n3c.bmp")
end
end
end
else
ps="released "
end
print(ps .. key)
end
e.init()
e.open(1,keypress)
-- dump_block(e.serial) -- if uncommented, prints the serial of the device (hexump)
-- dump_block(e.firmware) -- IF uncommented, prints the firwmare version of the device (hexdump)
e.reset() -- sends a reset command to the elgato
e.dimlevel(1,100) -- sets brightness level (100: 100%)
e.button(1,1,"paul80.bmp","paul80c.bmp") -- sets image for button 1 (standard and when pressed)
e.button(1,3,"paul80c.bmp","paul80.bmp")
e.button(1,4,"n1b.bmp") -- if only one given, no change upon press. buttons 4,5,6
-- when pressed permanently change/toggle (see keypress abovve)
e.button(1,5,"n2b.bmp")
e.button(1,6,"n3b.bmp")
b.start(100) -- start barionet io lib
b.setio(1,0) b.setio(2,0) b.setio(3,0) -- set all relays to 'off'
local timer=uv.new_timer()
timer:start(10,10,e.tick) -- elgato lib is called every 10ms to handle keys etc
-- all set up here, we can go to the loop.
uv.run()