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.

Processing KNX Addresses
#10
Try this. If something is not working add log() calls to check what the values are in the called functions. pcall is not needed as grp functions do not stop execution in case of an error, they simply return nil. grp.checkwrite does not write to non-existing objects so checking if object exists beforehand is not needed.
Code:
local inputgroup = {}
local groupobjects = {}

for i = 1, 60 do
  groupobjects[i] = {}

  for j = 11, 241, 10 do
    local addr = i .. '/2/' .. j
    local value = grp.getvalue(addr)

    if value ~= nil then
      inputgroup[addr] = i
      groupobjects[i][addr] = value
    end
  end
end

local function updategroup(group)
  local objects = groupobjects[group]
  local groupon = false

  for addr, value in pairs(objects) do
    if value then
      groupon = true
      break
    end
  end

  local controladdress = group .. '/2/0'
  local controlenabled = grp.getvalue(controladdress)

  if controlenabled then
    local changestate = not groupon

    for i = 11, 161, 10 do
      local address3 = group .. '/3/' .. i
      local address5 = group .. '/5/' .. (i + 7)

      grp.checkwrite(address3, changestate)
      grp.checkwrite(address5, changestate)
    end
  end
end

client = require('localbus').new(0.1)

client:sethandler('groupwrite', function(event)
  local addr = event.dst
  local group = inputgroup[addr]

  if group then
    local value = tonumber(event.datahex, 16) ~= 0
    groupobjects[group][addr] = value
    updategroup(group)
  end
end)

while true do
  client:loop(1)
end
Reply


Messages In This Thread
Processing KNX Addresses - by AISystem - 10.05.2023, 07:13
RE: Processing KNX Addresses - by admin - 10.05.2023, 07:30
RE: Processing KNX Addresses - by AISystem - 10.05.2023, 08:24
RE: Processing KNX Addresses - by admin - 10.05.2023, 08:49
RE: Processing KNX Addresses - by AISystem - 10.05.2023, 11:50
RE: Processing KNX Addresses - by admin - 10.05.2023, 11:51
RE: Processing KNX Addresses - by AISystem - 10.05.2023, 12:05
RE: Processing KNX Addresses - by admin - 10.05.2023, 12:33
RE: Processing KNX Addresses - by AISystem - 10.05.2023, 14:21
RE: Processing KNX Addresses - by admin - 11.05.2023, 05:59
RE: Processing KNX Addresses - by AISystem - 11.05.2023, 07:28
RE: Processing KNX Addresses - by admin - 11.05.2023, 12:18
RE: Processing KNX Addresses - by AISystem - 22.05.2023, 11:29
RE: Processing KNX Addresses - by admin - 22.05.2023, 12:01
RE: Processing KNX Addresses - by AISystem - 25.05.2023, 07:14
RE: Processing KNX Addresses - by AISystem - 29.05.2023, 08:55
RE: Processing KNX Addresses - by admin - 29.05.2023, 09:41
RE: Processing KNX Addresses - by AISystem - 29.05.2023, 10:33
RE: Processing KNX Addresses - by admin - 29.05.2023, 10:58
RE: Processing KNX Addresses - by AISystem - 29.05.2023, 11:23
RE: Processing KNX Addresses - by admin - 29.05.2023, 11:48

Forum Jump: