13.05.2021, 06:23
1. Create a user library named bim-iot using the attached source.
2. Make sure that the updated websocket library and keys are in place.
3. Create a resident script with sleep time = 0:
Since I don't have the tools to test some parts might not work.
2. Make sure that the updated websocket library and keys are in place.
3. Create a resident script with sleep time = 0:
Code:
if not wsclient then
require('json')
require('user.bim-iot')
url = 'wss://test-hub.usbim.com'
wsclient = require('user.websocket').client('sync', 1)
opts = {
protocol = 'tlsv13',
key = '/home/ftp/key.pem',
password = [[*q&'wrKQsx+#bj8pbEV=%7Gpr"S+sxV2ngr`N}SjCC`X#rtt!wY6PL`d2'3!^x}u]],
certificate = '/home/ftp/cert.pem',
cafile = '/home/ftp/ca-chain.cert.pem',
}
res, err = wsclient:connect(url, opts)
if res then
log('WS connection OK')
else
log('WS connection failed', err)
wsclient:sock_close()
wsclient = nil
end
if not lb then
lb = require('localbus').new()
lb:sethandler('groupwrite', eventhandler)
lb:sethandler('groupresponse', eventhandler)
lbfd = lb:getfd()
end
wsfd = wsclient.sock:getfd()
init()
sendall()
end
if wsclient then
local res, lbstat, wsstat = socket.xselect(10, lbfd, wsfd)
if res > 0 then
if lbstat then
lb:step()
end
if wsstat then
local msg, opcode, clean, code, reason = wsclient:receive()
log(msg, opcode, clean, code, reason)
if msg then
onwsmessage(msg)
elseif reason ~= 'timeout' then
log('WS connection dropped', reason)
wsclient:sock_close()
wsclient = nil
end
end
end
else
-- handle incoming object messages before trying to reconnect WS
lb:loop(10)
end