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.

Log all bus traffic
#1
I like to log all the bus traffic to my mysql database.

How to do this with on a resource frendly way?
Reply
#2
for now you can mark all objects with Log check-box and use this example to export CSV once hour/day to external server:
http://openrb.com/example-export-last-ho...-from-lm2/

In the future, we will make a real-time example for exporting this data.
Reply
#3
maybe something like this?
But how to show the datahex in readable format?

And is it possible to add a general handler, also for groupreads etc?
Code:
12345678910111213141516171819
if not client then   require('genohm-scada.eibdgm')   -- handle group writes   function eventhandler(event)     log(event) -- later send this to mysql     --log(knxdatatype.decode(event.datahex,?))   end   -- knx connection   client = eibdgm:new({ timeout = 1 })   client:sethandler('groupwrite', eventhandler)   -- start-up time   sec, usec = os.microtime() end -- handle knx client:step()
Reply
#4
Something like this, though it will not work on older FW where grp.all function is not implemented.

Code:
12345678910111213141516171819202122232425262728
if not client then   require('genohm-scada.eibdgm')   objects = grp.all()   datatypes = {}   for _, object in ipairs(objects) do     datatypes[ object.id ] = object.datatype   end   function writehandler(event)     local dpt = datatypes[ event.dstraw ]     if dpt then       local value = knxdatatype.decode(event.datahex, dpt)     end   end   function readhandler(event)     log(event)   end   client:sethandler('groupwrite', writehandler)   client:sethandler('groupresponse', writehandler)   client:sethandler('groupread', readhandler) end -- handle knx client:step()
Reply
#5
May be modify script for support sending to SYSLOG collector?
Reply
#6
My simple variant for sending all data to SYSLOG server

In User Libraries need create function syslog:


Code:
123456789
function syslog(message)  require('socket')  local client = socket.udp()  if client then    client:sendto(message, '192.168.19.254', 514)    client:close()  end end


After this markup all objects with tag "All"

Create new event-based script "Send all messages to SYSLOG" for tag "All"

Code:
12345678
name = grp.alias(event.dst) -- Fix Group name for empty values if (name == nil or name == '') then  name = "Noname" end value = '"'..name..'" '..event.src..' '..event.dst..' '..event.type..' '..knxdatatype.decode(event.datahex, grp.find(event.dst).datatype)..' 0x'..event.datahex syslog(value)

Sample of log:
2016-04-26T22:52:34.084297+03:00 192.168.16.200 "Wind speed (m/s)" 1.0.1 5/0/6 groupwrite 2.6 0x0104
2016-04-26T22:52:39.817766+03:00 192.168.16.200 "Wind speed (m/s)" 1.0.1 5/0/6 groupwrite 4.5 0x01C2
2016-04-26T22:52:42.632619+03:00 192.168.16.200 "Wind speed (m/s)" 1.0.1 5/0/6 groupwrite 2.7 0x010E
2016-04-26T22:52:45.231188+03:00 192.168.16.200 "Wind speed (m/s)" 1.0.1 5/0/6 groupwrite 3.3 0x014A
2016-04-26T22:52:50.097556+03:00 192.168.16.200 "Wind speed (m/s)" 1.0.1 5/0/6 groupwrite 1.6 0x00A0
2016-04-26T22:52:51.595747+03:00 192.168.16.200 "Noname" 1.3.2 2/2/3 groupwrite 21.4 0x0C2E
2016-04-26T22:52:57.809525+03:00 192.168.16.200 "Temp in room 37" 1.3.22 2/1/24 groupwrite 24.02 0x0CB1
Reply


Forum Jump: