Hi Kai,
With respect to 1. You are right. Because we know the DPT in advance, we could construct the channels at runtime, but I failed to find the solution to do that. e.g. creating Channels and then adding them to Things. If I am misreading you here, you might be referring to solution 2. in the above posting.
too low-level, maybe, but it is the most resembling the OH1 environment, so I consider to be at the same level as before. And indeed, forget about discovery for sure, the only thing you can really discover on a KNX bus is the Group Addresses and the Individual Addresses, but nothing more meaningful like the DPT used on the GA, or the read/write flags.
Importing the ETS xml file is an interesting route, already taken by some commercial solutions. I need to have a look at how that XML is structured, and let’s hope that a proper definition/namespace does exist in the public domain, otherwise it will be parser-hell. It would certainly be an advantage for larger installations like mine.
In the meantime I propose to proceed as follows:
- build a “base” KNXThingHandler that acts a participant on the KNX bus and so forth
- build a “catch-any” GroupAddressThing that maps onto a single GA and converts data to a fixed String type. This is great for discovery and testing, and for mapping “undefined”/“exotic”/“partial” devices
- build a series of simple ThingsTypes like Switch, Dimmer, Blind,… with the lowest common denominator GA’s, and with a clear cut interface to the OH userland. Those can then be extended by everyone to cover the more complex hardware.
Parts 1 and 2 will require some refactoring oft he current 2.0 code base, so that will be covered pretty fast. Personally I have a lot of MDT, Arcus-eds, Siemens hardware, some GIRA analogue actors, some Ling Jankke as well. Those will serve as the basis for my inspiration, let’s say ;-)
In the meantime, and I wrote elsewhere, we need a mechanism for bindings to discover their “siblings” in a Item definition. in OH1 these were part of the same bindingconfig, but now they are disjunct, as captured in different channel=“” segments. These channels possibly belongs to the same binding, but to different ThingHandlers, so they need to now and discover about eachother, in order to do things like not sending out a value on a bus when received by another channel segment of the same item configuration (e.g. as needed in KNX)
Regards
K