![]() |
|
HelvarNet - 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: HelvarNet (/showthread.php?tid=2598) |
HelvarNet - victor.back - 17.04.2020 Hi Is there a script that can get status out of a Helvar routersystem with HelvarNet?
HelvarNet.pdf (Size: 1010.73 KB / Downloads: 63)RE: HelvarNet - admin - 21.04.2020 Try this script to check communication to HelvarNet. It will send query command every 3 seconds. If this works then status map to group address can be implemented. Resident script, sleep time = 0. Change 192.168.1.1 to HelvarNet router IP. Change 1.1.2.15 to the address of the device you want to query. You will get raw and parsed replies in Logs tab. Code: if not sock then
ip = '192.168.1.1'
sock = require('socket').udp()
sock:setsockname('*', 60001)
sock:settimeout(1)
ptime = os.time()
function parseitem(res, item)
if item:sub(1, 1) == '@' then
if item:find('=') then
local addr, val = unpack(item:split('='))
res.addr = addr:sub(2)
res.val = val
end
elseif item:find(':') then
local key, val = unpack(item:split(':'))
res[ key ] = val
end
end
function parse(data)
local res = {}
if not data:find('#') then
return
end
res.type = data:sub(1, 1)
data = data:sub(2, -2)
local items = data:split(',')
for _, item in ipairs(items) do
parseitem(res, item)
end
log(res)
end
end
data = sock:receive()
if data then
log(data)
parse(data)
end
ctime = os.time()
if (ctime - ptime) >= 3 then
ptime = ctime
sock:sendto('>V:1,C:152,@1.1.2.15#', ip, 50001)
endRE: HelvarNet - victor.back - 07.05.2020 (21.04.2020, 14:59)admin Wrote: Try this script to check communication to HelvarNet. It will send query command every 3 seconds. If this works then status map to group address can be implemented.First thanks for help. Tried changed the IP and device address as followed but doesnt get any in log or error log. ? I checked the push message in Helvar designer is set to True. Code: if not sock then
ip = '192.168.1.14'
sock = require('socket').udp()
sock:setsockname('*', 60001)
sock:settimeout(1)
ptime = os.time()
function parseitem(res, item)
if item:sub(1, 1) == '@' then
if item:find('=') then
local addr, val = unpack(item:split('='))
res.addr = addr:sub(2)
res.val = val
end
elseif item:find(':') then
local key, val = unpack(item:split(':'))
res[ key ] = val
end
end
function parse(data)
local res = {}
if not data:find('#') then
return
end
res.type = data:sub(1, 1)
data = data:sub(2, -2)
local items = data:split(',')
for _, item in ipairs(items) do
parseitem(res, item)
end
log(res)
end
end
data = sock:receive()
if data then
log(data)
parse(data)
end
ctime = os.time()
if (ctime - ptime) >= 3 then
ptime = ctime
sock:sendto('>V:1,C:152,@1.14.1.61#', ip, 50001)
endRE: HelvarNet - admin - 07.05.2020 Try changing local port from 60001 to 50001. If it still does not work then the example should be modified to use TCP instead of UDP. RE: HelvarNet - victor.back - 07.05.2020 Great! changed the port 50001, and now I get information in log. RE: HelvarNet - djaval - 16.02.2024 Hi! This story with Helvar, did you got some results or working solution? Interested to use LM instead of Helvar BACNET gateway. |