I’ve been sitting on the sidelines and watching the Zwave Saga on HA unfold as I prepare to upgrade my network from the old OZW integration. I managed to dodge a bullet by not jumping on the last years Beta Integration bunny trail and want to make sure things are solid and stable before making a move.
I’m left with one burning question as I watch all this - Why is the HA Technical Leadership pushing for the tight-integration websocket approach vs the more loosely coupled MQTT?
It is really bugging me because almost everything about the MQTT approach seems to be better. Its just as fast (if not faster). If you want tools to manage the Zwave network you have to be running the mqtt version anyway - at least for now. Even after HA develops all of the controls they need internally to their integration it will always be difficult to update/keep up as the underlying ZwaveJS evolves. As we progress through the Beta process there are constant version conflicts killing peoples devices (e.g., the recent update to ZwaveJS broke thermostats because the corresponding HA update isn’t done yet) and this is unlikely to change when you have two applications that must maintain tight synchronization in their update path.
OTOH, The loosely coupled MQTT approach appears to give you clean naming for devices and entities that is always consistent while the WS approach requires you to go in after-the-fact to rename devices, etc. (not only easier to configure but MUCH easier troubleshooting!). All the tools to manage the network are embedded and kept in-sync with each release (no dependency on updating HA at the same time). Its just cleaner. And the underlying ZwaveJS devs are the same either way…
I could go on and on.
From an engineering perspective, the tight coupling approach will always be subject to upgrade timing for the integration and HA. This is unavoidable with this approach and requires a discipline to maintain forward/backward compatibility (more work for the devs, and a disaster for the users when they get it wrong). It is a provably more complex approach to manage, carries more technical risk and is the antithesis of modern systems design approaches.
It seems to me that the ONLY advantage to the more tightly coupled WS approach is the HA team’s desire to control all aspects of the UI. Their argument is that this is “simpler” for “less sophisticated” users - but that is a complete red-herring. Every one of the side effects of this approach - device naming difficulties, version control risks, etc. - actually increase complexity and confusion for end users. And HA could achieve their simplicity desires by offering an embedded MQTT broker (oh -wait - they already do!) and linking the zwave2mqtt control panel from the UI - job done. And for those of us with more complex setups we already run an MQTT broker and have no problems with a second website for managing a complex integration - again, job done.
So for me I think I am decided and will go with pure MQTT. Anyone else can still make that choice no matter what HA does with the integration, no worries.
But what I am left is a last self-doubt, a question of the HA team’s motivation…what am I missing? Why are they choosing the more difficult path, the one that that actually adds un-needed complexity, technical risk and end-user confusion over the simpler approach?