Hi everyone, it appears a lot of questions have been coming up as of late about the change to the entity we create for the Basic Command Class value.
Z-Wave Certification
This has been stated before in several release watch parties as well as in the release notes, but it is probably not well publicized: Nabu Casa wants to get Z-Wave certification for Z-Wave JS and the Home Assistant integration with Z-Wave JS. While it’s only a requirement to get certified if Nabu Casa were to sell the product that’s being certified (in this case, Home Assistant), which they are not, and for the tinfoil hat wearers out there, they will not, getting certified would mean:
- The Z-Wave Alliance would then consider our stack as being on equal footing with other paid solutions
- We could start using the official Z-Wave logos.
The Z-Wave JS team has reviewed the certification requirements, the spec, and the integration features, and has identified all of the remaining tasks that need to be completed before we can try to get certified. The certification requirements tell us what functionality we need to expose, and then we have to find HA constructs that we can use to expose said functionality.
Since there is no black and white answer as to how to solve it, the Nabu Casa team has reviewed the certification requirements, and in places where they’ve agreed on how it should be done, I am working on implementing them.
How to have a more active role in the certification discussion
Want to participate in the discussion? There’s a project board that tracks certification requirements along with a proposed implementation: Z-Wave JS: Road to Certification · GitHub . We are aware that some of these solutions are not necessarily the most ideal, but the proposed implementation is how Nabu Casa thinks we can best use HA constructs to meet the requirements. In some cases, no good HA constructs exist and we will need to develop new ones, so those will take a bit more time to get to.
You should be able to add comments if you have an alternate suggestion for how something should be implemented. This is not, however, an invitation for people to complain about an implementation choice or to be rude to anyone, and if people start to do that, I would not be surprised if that repo gets locked down to prevent external comments. That would be a shame as we (or at least I, I can’t speak for Nabu Casa) would love additional ideas as it’s always possible that there’s an alternate path to meeting the requirement that we didn’t think of.
What probably brought you here (Basic CC Light)
Finally, back to the question that started it all: what is the best implementation of the Basic CC certification requirement?. If you think a device has the Basic CC exposed in HA and it shouldn’t, you should try the next couple of tasks in order:
Find a way to upgrade to zwave-js 12.3.0 (this isn’t currently possible with the official addon but I will be updating the addon soon) which has some changes that will reduce the number of Basic CC entities exposed generallyEDIT: The update to zwave-js 12.3.0 is now available- Re-interview the device - if the Basic CC entity shouldn’t be there, it will hopefully be unavailable after re-interview and can be safely deleted once it is.
- If the Basic CC entity is still enabled and available, open an issue in the zwave-js/node-zwave-js repo making a case as to why it shouldn’t be exposed (of course you should first look to see if there is an existing one, and if there is, add a comment to that instead). Even better would be if you submitted a PR (along with the justification in the description) to zwave-js/node-zwave-js that would fix the exposure of the Basic CC entity for the device in question.
Conclusion
I hope this (probably needlessly) long post was helpful in providing context for the behavior changes that you are seeing. If it wasn’t helpful, sorry I was unable to help you, but please don’t add noise to this topic by adding a comment here to complain. I will leave comments open in case anyone has alternative ideas that we should explore, but I will happily hide/delete comments that stray from this objective, and if those types of comments create enough noise, I will lock comments on this topic entirely.
PS/FYI - I am not a Nabu Casa employee, I am just a guy who likes to write code in his spare time, particularly for the Z-Wave integration.
Thanks for listening/reading!