14.01.2021, 08:16
Use this to generate CSV for a certain tag and a certain time:
Code:
tagname = 'log'
logtime = os.time() - 60 * 60
query = [[
SELECT ol.*, o.name, o.datatype
FROM objectlog ol
JOIN objects o ON ol.address=o.id
JOIN objecttags t ON o.id=t.object
WHERE t.tag=? AND logtime>=?
ORDER BY id DESC
]]
buffer = { '"date","name","address","value"' }
items = db:getall(query, tagname, logtime)
for _, item in ipairs(items) do
id = tonumber(item.address) or 0
logdate = os.date('%Y.%m.%d %H:%M:%S', math.floor(item.logtime))
etype = item.eventtype
if (etype == 'write' or etype == 'response') and item.datatype then
value = grp.decodevalue(item.datahex, item.datatype)
else
value = ''
end
buffer[ #buffer + 1 ] = string.format('%q,%q,%q,%q',
logdate, item.name or '', buslib.decodega(id), tostring(value))
end
csv = table.concat(buffer, '\n')