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)ende.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 elgatoe.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 libb.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()