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.

Search schedulers
#1
Hi,

Received this function some years ago from support. 
It should find  on and off time for a specific scheduled GA
I get this error when I try to run it.

User script:21: bad argument #1 to 'ipairs' (table expected, got string)
stack traceback:
[C]: in function 'ipairs'
User script:21: in function 'findtime'
User script:33: in main chunk



Code:
function findtime(addr, value)   local obj, file, data   -- read data from cache file   file = '/tmp/lm-scheduler-' .. os.date('%Y%m%d') .. '.lua'   data = io.readfile(file)   -- cache file missing, stop   if not data then     return   end   -- try decoding cache   data = serialize.decode(data)   if type(data) ~= 'table' then     return   end   obj = knxlib.encodega(addr)   for time, events in pairs(data) do     for _, event in ipairs(events) do       if event.object == obj and value == toboolean(event.value) then         return time       end     end   end end ------------------------------------------ t1 = findtime('1/0/1', true) t2 = findtime('1/0/1', false)
Reply
#2
(07.02.2023, 08:28)CarlS Wrote: Hi,

Received this function some years ago from support. 
It should find  on and off time for a specific scheduled GA
I get this error when I try to run it.

User script:21: bad argument #1 to 'ipairs' (table expected, got string)
stack traceback:
[C]: in function 'ipairs'
User script:21: in function 'findtime'
User script:33: in main chunk



Code:
function findtime(addr, value)   local obj, file, data   -- read data from cache file   file = '/tmp/lm-scheduler-' .. os.date('%Y%m%d') .. '.lua'   data = io.readfile(file)   -- cache file missing, stop   if not data then     return   end   -- try decoding cache   data = serialize.decode(data)   if type(data) ~= 'table' then     return   end   obj = knxlib.encodega(addr)   for time, events in pairs(data) do     for _, event in ipairs(events) do       if event.object == obj and value == toboolean(event.value) then         return time       end     end   end end ------------------------------------------ t1 = findtime('1/0/1', true) t2 = findtime('1/0/1', false)

argument "event" is not a table. log it and see whats inside. also log "data"
Reply
#3
Modify the function like this:
Code:
function findtime(addr, value)   local obj, file, data   -- read data from cache file   file = '/tmp/lm-scheduler-' .. os.date('%Y%m%d') .. '.lua'   data = io.readfile(file)   -- cache file missing, stop   if not data then     return   end   -- try decoding cache   data = serialize.decode(data)   if type(data) ~= 'table' then     return   end   obj = knxlib.encodega(addr)   for time, events in pairs(data) do     if type(time) == 'number' then       for _, event in ipairs(events) do         if event.object == obj and value == toboolean(event.value) then           return time         end       end     end   end end
Reply


Forum Jump: