This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

HelvarNet
#1
Hi

Is there a script that can get status out of a Helvar routersystem with HelvarNet?

.pdf   HelvarNet.pdf (Size: 1010.73 KB / Downloads: 63)
Reply
#2
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:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
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) end
Reply
#3
(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.
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:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
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) end
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:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
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) end
Reply
#4
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.
Reply
#5
Great! changed the port 50001, and now I get information in log.
Reply
#6
Hi!

This story with Helvar, did you got some results or working solution?
Interested to use LM instead of Helvar BACNET gateway.
Reply


Forum Jump: