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.

Comparing object names with Json list
#1
Hi.

Is it possible to compare the names of the objets in LM with a newer Json file that i have exported and converted from ETS/KNX? And somehow get a print of every objects with wrong names in LM?
BR
Kai-Roger
Reply
#2
Put your JSON data into the script and run once. It will log all objects that are present in JSON but not in LM and objects that have mismatching names.
Code:
require('json')

data = [[
PUT_JSON_DATA_HERE
]]

objects = json.decode(data).objects
for id, obj in pairs(objects) do
  id = tonumber(id)
  curr = grp.find(id)
  addr = buslib.decodega(id)

  if curr then
    if obj.name and curr.name ~= obj.name then
      log('name mismatch ' .. addr, curr.name, obj.name)
    end
  else
    log('missing object ' .. addr)
  end
end
Reply
#3
(06.04.2021, 06:23)admin Wrote: Put your JSON data into the script and run once. It will log all objects that are present in JSON but not in LM and objects that have mismatching names.
Code:
require('json')

data = [[
PUT_JSON_DATA_HERE
]]

objects = json.decode(data).objects
for id, obj in pairs(objects) do
  id = tonumber(id)
  curr = grp.find(id)
  addr = buslib.decodega(id)

  if curr then
    if obj.name and curr.name ~= obj.name then
      log('name mismatch ' .. addr, curr.name, obj.name)
    end
  else
    log('missing object ' .. addr)
  end
end

Thank you
BR
Kai-Roger
Reply
#4
Worked like a charm. This makes updating group text really easy. 

But is there a possbility to make the log not show unassigned Group addresses, like this

* string: missing object 25/2/165

Want only the * string: name mismatch 8/3/1

Thanks in advance Smile
Reply
#5
Remove the relevant log call:
Code:
require('json')

data = [[
PUT_JSON_DATA_HERE
]]

objects = json.decode(data).objects
for id, obj in pairs(objects) do
  id = tonumber(id)
  curr = grp.find(id)
  addr = buslib.decodega(id)

  if curr and obj.name and curr.name ~= obj.name then
    log('name mismatch ' .. addr, curr.name, obj.name)
  end
end
Reply


Forum Jump: