- Why does HA recommend just a single community-maintained (yet also not, because it has an “official” add-on) for Z-Wave, but documentation for others, like ZHA, mention other integrations that may work better
Because nobody else has written another Z-Wave integration for Home Assistant. You can’t mention an integration that doesn’t exist. For Zigbee, people from the community wrote ZHA, others from the community wrote the Deconz integration, etc. Nobody has stepped up to write a zwave-js integration or a full python zwave library and integration, or zwave-on-go or zwave-on-language-of-the-week.
- Where was the decision made to officially support qt-openzwave? Who was involved? How do others get involved?
History lesson time. Once upon a time in mid 2019 someone decided to undertake rewriting python-openzwave (the wrapper the “old” component uses to interface with ozw1.4) to support openzwave 1.6. I spent multiple months trying to update the old component to work with the “new” python-openzwave but never got anywhere because with every commit the python-openwave author was making, they were changing the API, and seemed to have little interest in maintaining a stable API that we could use. I talked to balloob, we talked to Fishwaldo and some others and decided to move to qt-openzwave and an entirely new integration.
The only other Z-Wave integration that existed at the time was zwave2mqtt (which still depended on OpenZWave, so qt-openzwave was cutting out the middleman) or Sigma had some information out about a Z/IP layer but that required a special Z-Wave stick and details on it were difficult to come by. Requiring a special Z-Wave stick was a non-starter for us to put resources into, as 99% of people aren’t going to want to replace their perfectly fine Z-Wave stick.
How do others get involved? Write code, submit PRs. Participate in architecture discussions in the architecture repo. I spent some time contributing small enhancements and fixes to the “old” zwave component, and be active in the dev Discord channels.
- Was there any sort of RFC process? Maybe that’s something that HA could look into for future large changes. It has worked really well for projects like React.js
Check out the home-assistant/architecture repo.
- Why does it seem like we’re locked in and the communciation is that this will not and can not change to a different addon/integration?
Because, again, nobody has stepped up to write another integration based on a different backend. If someone writes a local Z-Wave integration based on another backend that works well then you’ll see the communication change to be similar to Zigbee with its multiple integrations.
- What happens if the core maintainer of qt-openzwave decides they are unable to maintain the project going forward? They’re the sole owner of the repository, so we’ll have to wait for someone to step up and take it over – what happens if they can’t continue to maintain, and so on? (yes, I know other projects also have just a single maintainer – it would be nice to know what the backup plans are for all integrations, should one get a critical bug and the maintainer becomes MIA)
Historically, someone that contributed to the HA integration would fork the underlying library and HA would start using that fork until the owner of the original repo came back or someone else took over.
- You say that it’s up to us as volunteers to make the roadmap and build “the future”, but then go on to make it sound like only Fishwaldo has the expertise to do it. How are we supposed to feel confident jumping in to something that is so complicated that you need connections with the developer of Z-Wave (SL) to do it?
Z-Wave is complicated - I’m not really sure what you want to hear or expect here. Writing a Z-Wave library like OpenZWave or zwave-js is not a simple task, and that’s a lot of the reason why up until a few months ago OpenZWave was the only open source Z-Wave library.
Home Assistant doesn’t have the resources to build its own Z-Wave stack from the ground up, zwave-js didn’t exist when the new integration was written, and OpenZwave is the only other open source solution out there.