The latest version of the development binding dated 8th Sep 2018 is here.
Toward the end of last year I spent some time doing some initial refactoring of the ZWave binding in OH2. This focussed on rewriting the way transactions work as this is an enabler for other areas of the code. At the same time I also restructured the different layers of the binding to make things cleaner, and done some changes to support a system of autocoding the command classes directly from the Z-Wave standard which should ensure we have better compatibility with the formal Z-Wave standards.
For most people, the major benefit is this change brings security and mesh healing. If you want to test these features, then this development branch might be worth looking at and I’ll find a way to make this available.
Since this was quite a large change to the binding it needs some more testing before it’s merged into master - there’s bound to be bugs ;). That said, a few people have been testing it for a while now and it’s been working well (so far!).
I’ll post a link to a JAR for testing in the next day or so - it will need to be manually installed…
A more detailed over of the major (visible) changes are -:
- Security command classes are included. You can now install locks and other devices that utilise the security command class. Note that this doesn’t mean you should use security for everything – personally I would suggest to only use it for devices like locks and not for all sensors etc since the amount of traffic on the network will increase significantly. Security causes every command transmitted to actually send 2 or 3 commands over the air. Note that the database will likely need to be updated for secure devices to add the secure classes.
- Network heal has been added back into the binding. This was removed as the old transaction code was not reliable when dealing with the commands that are used for heal that can take some time to complete. This was (is) a problem on OH1 as well but hopefully this is working much better now.
- Command class names have changed to bring them inline with the ‘official’ names in the Z-Wave standard. It’s worth noting that this change does require all things to be updated since the configuration is slightly different.
I’ve also changed the way we’re handling retries and dead nodes. I’ve currently removed retries from the binding – this is because the controller already performs 3 retries, and it’s my feeling that have 3 retries at binding level was probably causing more problems than it solved as it blocks the binding from dealing with other commands for 15 seconds. I also don’t set a device as dead if it times out – only if the controller thinks the device is failed. If this causes problems then I’m happy to look at this further.
Currently I’m planning to merge these changes into a development branch to allow more widespread testing of these changes. Also, there are some other changes I’m working on that will likely be merged here first as well. These changes are to support dynamic channels so that we’re less reliant on defining channels within the database. This is something that is done on other bindings, but unfortunately it’s a feature that wasn’t available in ESH when the OH2 Z-Wave binding was written. This is something I’ve started to implement, but will be phased in to command classes over time starting with common classes. This should then allow devices to be used within the binding without the database being added – although clearly without the database there will be limited ability to configure devices since all configuration information is only available from the database.