I would like to introduce my ETS / KNX to OpenHAB converter.
The source code is available on github:
But read on first…
The converter is written in Java. It’s based on a JAXB-Based .knxproj Loader. The converter then works by preprocessing the loaded KNX project. It converts KNX functions into different types of KNXThing-Objects using a user-definable name prefix scheme. The GAs of the functions are mapped to different KNXItem-Objects by means of name suffixes. These Objects are then handed over to Apache Velocity Templates which can used to generate thing, items, sitemap files etc. It could also be used to generate JSON-Files. I’m using it to generate a html File of all my items…
Using specially formatted comments in KNX it’s even possible to define groups, icons etc. for items in ETS.
I have been using it for some time now. Currently I use it to generate my complete .things file with about 160 things / ~850 lines, a items file with ~700 lines and my main sitemap using a single-source approach (in this case the KNX file).
The converter requires the XML Schema Definition from a ETS installation to work. As this is intellectual property of the KNX Association, I will not be providing any ready to use builds… However, I have included a description how to extract the xsd from a local ETS installation and how to build the converter. You only need a installed JDK.
I included a Readme to describe the converter and it’s usage. It’s not perfect / complete yet, but should help you getting started. I also included a sample project and some sample Velocity Templates. I’ll try to add more as time goes by.
I know the converter might not be really easy to use as you need to follow some rules on the KNX / ETS side. Moreover, to use it’s full potential you will need to learn how to use Velocity Templates. Finally, the converter is more or less tailored towards my needs . But when you overcome the obstacles I think it might be useful for others too.
The converter is provided as is. If you have issues let me know or open a github Issue. Though I’m not sure how much time I can spend to support it.
Feedback is also always welcome