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.

TCP/ip connect and maintain connection
#12
(28.10.2023, 08:25)Erwin van der Zwart Wrote: Just add a if condition like this:
Code:
12345
if previousvalue ~= value then   -- send command   sock:send (command)   previousvalue == value end
But if the value is not change often i would make it event based, initiate the connection, write the command and close the connection..
I've decided to go to an event script but cant get this to work.
Event script by Keyword: Symetrix.
all GA's with keyword "Symetrix" also have there control comand number assigned to them by keyword " SYM=### " I'm trying to get the script to insert the control number into the "CS" Command Send line .
I'm getting a log of

 * string: Error: sym=address tag missing
Code:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
    local value = event.getvalue()     local dest = event.dst     local grps = GetCBusByKW('Symtrix', 'or')     local k, v, alias, net, app, group     local addr = ''     local buffer = {} log(grps)     for k, v in pairs(grps) do       alias = table.concat(v.address, '/')       if alias == dest then         local tags = v.keywords      --log(tags)         local t         for _, t in ipairs(tags) do           local tp = string.split(t, '=')           tp[1] = trim(tp[1])           if tp[2] then             tp[2] = trim(tp[2])             if tp[1] == 'sym' then               addr = tp[2] -- Get device address               break             end           end         end         break       end     end     if addr ~= '' then       -- create tcp socket       local sock = require('socket').tcp()       sock:settimeout(1)       local connected, err = sock:connect('192.168.1.246', 48631)       -- connect ok       if connected then         alert('[tcp-sock] connection ok')       -- error while connecting       else         log('[tcp-sock] connection failed: '..err)         sock:close()         do return end       end       local command = 'CS '..addr..' '..(value * 257).. '\r'       -- send command       sock:send (command)       local sent = socket.gettime()       local timeout = 5       while true do         char, err = sock:receive(1)         -- error while receiving, timeout or closed socket         if err then           -- remote server closed connection           log('[tcp-sock] connection closed'..err)           break         -- end of line, parse buffer         elseif char == '\r' then           local data = table.concat(buffer)           log(data)           break         -- other char, add to buffer         else           buffer[ #buffer + 1 ] = char         end         if socket.gettime() - sent > 5 then           log('Timeout receiving data')           break         end       end       sock:close()     else       log('Error: sym=address tag missing')     end    
Reply


Messages In This Thread
RE: TCP/ip connect and maintain connection - by Azar - 28.10.2023, 21:03

Forum Jump: