You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@plc4x.apache.org by Christofer Dutz <ch...@c-ware.de> on 2021/02/24 09:37:32 UTC

[KNX] System7 metadata

Hi all,

as you probably know, I'm currently working hard on KNX auto-discovery and have made HUGE progress on this. I managed to decode the GroupAddressTable and the GroupAssociationTable data on all devices I have. With this I know which group addresses are bound to which com-objects.

Unfortunately I don't know the general datatype and if the com object is: readable, writable, subscribable. This information is located in the ComObjectTable.

Even if the procedure for this differs for the different KNX devices, it's generally similar: You get the address of the ComObjectTable and then simply fetch the information you need. For most devices I can get this address programiatically.

Unfortunately it seems that for the devices of type "System 7" the information on the location of the ComObjectTable is not programatically retrieveable from the device as the application itself is in charge of this. However I found a way to find this information and it seems that I could use this to decode the information I need. In general, for all KNX devices I can use identification information I can programatically access to lookup the KNX XML descriptor and extract the memory address from this. So in the end its simply a mapping of device-id to address.

I would now like to build a tool that fetches this publicly available product data from the KNX Foundation Servers and maintains an mspec containing an enum with such mapping information. I could simply query the KNX Foundation servers for every device in the driver, but I think this would increase the global load on these and I don't want them to take them offline or protect them. I think if we regularly run a little program to add new devices information, this risk is minimized and I doubt the size of the enum would have a significant impact on the size of the driver.

I would need to create this tool ... I'm a bit unsure where to put it. In the protocol/knxnetip module? In main or tests? In the external build-tools repo?

What do you think?

Chris