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 whether you accept or reject these cookies being set.

Read values in scheduled script store in ftp
#21
Hi,

I cant get this script to work:

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;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', math.floor(item.logtime))
  etype = item.eventtype

  if (etype == 'write' or etype == 'response') and item.datatype then
    value = grp.decodevalue(item.datahex, item.datatype)
    if type(value) == 'number' then
      value = tostring(value):gsub('%.', ',')
    end
  else
    value = ''
  end

  buffer[ #buffer + 1 ] = string.format('%s;%s;%s',
    logdate, item.name or '', tostring(value))
end

csv = table.concat(buffer, '\n')



I got nil.

I want to read meters convert to: buffer = { 'date;name;value' }

and send email once every sixth our.

Thanks for help.
Reply
#22
The script itself works, did you tag the objects? Did you enable logging to them? Did you change logged objects value to have anything to show?
------------------------------
Ctrl+F5
Reply
#23
If you want to send periodical values you can use current object values instead of object logs. In this example all objects with the electricity tag are added to the CSV report.
Code:
buffer = { 'date;name;value' }

objects = grp.tag('electricity')
for _, object in ipairs(objects) do
  logdate = os.date('%Y-%m-%d', math.floor(object.updatetime))
  value = object.value
  if type(value) == 'number' then
    value = tostring(value):gsub('%.', ',')
  end
  buffer[ #buffer + 1 ] = string.format('%s;%s;%s',
    logdate, object.name or '', tostring(value))
end

csv = table.concat(buffer, '\n')
log(csv)
Reply
#24
Hi again.

I got the script to work.

Now the problem i don´t know how to use it.

please help me.

Hi.

I have solved the problem.

Thanks for the help.
Reply


Forum Jump: