Can we revisit the move to qt-openzwave?

Happy to see the progress in deciding on the future of z-wave as part of Home Assistant!

One (logical) downside mentioned in the discussion on moving towards Zwave JS is:

CON: A fully automatic migration of legacy/current ZWave in HA to this new implementation will be hard if not impossible because of the fact that the internals are handled.

In that respect I was wondering whether one of the existing solutions to have z-wave in Home assistant could have an advantage over any of the others in terms of migration path to such a future Zwave JS integration?

I assume zwavejs2mttq doesnā€™t hold an advantage over for example the existing native integration or z-wave2mttq or qt-openzwave, because despite it being based on zwavejs, it relies on MTTQ as communication layer?

In that respect I was wondering whether one of the existing solutions to have z-wave in Home assistant could have an advantage over any of the others in terms of migration path to such a future Zwave JS integration?
I assume zwavejs2mttq doesnā€™t hold an advantage over for example the existing native integration or z-wave2mttq or qt-openzwave, because despite it being based on zwavejs, it relies on MTTQ as communication layer?

If weā€™re able to write a migration it would only be for the existing Z-Wave integrations in core (zwave/ozw), it would be up to the larger community to contribute a possible migration path for zwave2mqtt/zwavejs2mqtt as theyā€™ve never had an actual core integration.

That said, at this time I wouldnā€™t hold my breath for a migration toolā€¦ though that could change.

2 Likes

Thank you, so I deduct that people who are looking at starting to use Home Assistant are best advised to use the current (albeit outdated) native z-wave integration because at least the steps to migrate ā€“ even if likely not (fully) automatic ā€“ will be described for that migration path.

Out of curiosity, what is the difficulty with a tool that does at least automatic naming of entities? Iā€™ve done this somewhat in the past using python to load core_devices, matching the node to a device id, then going to core_entities, matching the device id to entities, then opening the new ones and applying those same friendly names based on the node/device id and writing out the core_device/core_entity. Obviously that breaks down where zwavejs2mqtt provides more/less entities or different kinds of entities than zwave/ozw provided. Is it just matching up the right entity to the right sensor where multiple are provided, as an example?

Iā€™m not challenging that it is possible, Iā€™m genuinely curious in where the difficulty lies.

1 Like

To be fair he didnā€™t state it was impossible, I believe heā€™s referring to a migration tool to go from zwave2mqtt/zwavejs2mqtt -> the new zwave system.

This is also the same thing that Iā€™m wondering about. Iā€™ve been watching this issue request for a while and havenā€™t seen any movement on it. Iā€™d like to know if this project will be using the migrated OZW config files as that will greatly increase support with my devices. Iā€™m worried that starting over from scratch in regards to device configuration will take this project a lot longer to attain the same level of support.

If I recall zwave-js utilizes the XMLs in some fashion from ozw.

1 Like

Presently they are using the current openHAB device files, but they are setup to import the ozw 1.6 device configuration files as well. So far the current directory seems as complete or more complete than the ozw one. I think only one of mine was missing and there were a few that were only recently added to qt-ozw.

Shouldnā€™t t this be covered in how the OZW software was licensed?

It is. They were trying to be polite but at the end of the day it is an LGPL license. The project has a fairly complete set of device files as it is so I donā€™t think it has been a pressing issue. The maintainer asked me to ask him to respond to the issue in the vent he was still following the thread.

There have to be more people like me that have the right skillset but donā€™t have the time to help. Iā€™ve got dev projects that Iā€™ve been working on for years that are still in progress. Iā€™ve been meaning to write what should be a simple integration for my solar inverters for the last year that I havenā€™t even started on yet. I have more money than time so I pay for a subscription even though I donā€™t really need it.

Z-wave should be considered important enough to be handled by paid devs. Iā€™ll pay more than $5/mo. Maybe others will too. Consider adding a ā€œsupport our developmentā€ package or something. Berating people for not contributing code or having time to contribute code doesnā€™t help either. Single maintainer projects often start out strong, but as time goes on selfish end users kick you down, life happens, and development slows or stops. Sending money or donations to an individual dev is a nice gesture of appreciation, but if the sole dev has a full time job elsewhere needed to pay the bills itā€™s just that, a gesture.

4 Likes

Indeed. Contributing to a code base like OZW is a serious time investment, especially the upfront costs. Iā€™m a developer myself, a C++ developer at that. I did take a detailed look at the OZW code. And honestly, my first instinctive reaction was - no way in hell Iā€™m getting involved in that. Not because it wouldnā€™t be interesting, it certainly would. And fishwaldo has certainly done a great job developing all that on his own. But I do this stuff all day at work, when I get home Iā€™d rather pursue my own pet projects.

Getting up to speed with a legacy code base with parts that date back almost a decade and that was never designed in a way to facilitate team development (documentation !) is really hard. Add to that learning the inside outā€™s of the low level ZWave protocol. And on top of that all, a much more modern implementation of the ZWave stack already exists elsewhere (zwave-js), so contributing to OZW feels like youā€™re needlessly duplicating efforts.

Thatā€™s a general problem with open source and not limited to OZW though. It starts as a pet project done for your own personal use, it grows, progressively becomes unmaintainable and feels more like an unpaid job than a hobby - and then you (understandably) lose interest.

2 Likes

It sounds like we are in very similar situations. I couldnā€™t agree any more fully with nearly every single point youā€™ve made. I will put my money where my mouth is, I just want Z-Wave to work.

100%. The use of QT is a bit odd and is a heavy dependency for what it is doing. I have dug into the code base but itā€™s not very clear on how to get started. Even setting up a dev environment is non-trivial.

1 Like

Yeah QT and C++ are, how should I say, less weekend project friendly. I did use QT for my senior project in school back in '05, but that was the last time Iā€™ve touched it.

I ā€˜fixedā€™ it by running a separate mqtt server for the ozw container. Linked both mqtt containers to each other. Now my ozw and 2nd mqtt server are on the same machine/ip. I didnt use the addon for ozw.

I saw this solution as a post somewhere on the forum. This works stable for weeks. While before the change i was loosing my devices every few days. It looks like ozw crashes when there is a glitch in the communication between ozw and mqtt.

I dont expect a fix soon. Since the developer of ozw unfortunately isnā€™t very active anymore.

Can someone please enlighten me as to why all this is actually necessary? My Z-Wave setup has been working perfectly for years using the default inbuilt HA Integration. What am I missing here?

Maybe because you only have devices which donā€™t have issues with OpenZwave 1.4 :slight_smile:

For instance, Iā€™m pretty sure you donā€™t have Fibaro FGR-223 ā€œRoller Shutter 3ā€. I have 17 of them and I have to use ugly workarounds to get them almost work normally. After each of them report a change of its power consumption back to 0W, I have to poll them twice for their global status in order to get their actual position. It works 95% of the time.

But Iā€™ve made my decision 3 weeks ago. Iā€™ve bought a small Fibaro HC Light box for 100ā‚¬. I will use it as my ZWave gateway instead of my ZWave USB stick plugged on HA, at least for a while.
Fibaro ZWave implementation works perfectly out of the box with the 5 different kinds of ZWave modules that Iā€™ve tested and it does not take 10 minutes to load each time I restart Home Assistant (which I do a lot these days). :slight_smile:
HA Fibaro integration looks to work great.

2 Likes

I have 3 of them actually.

Yep, I have that setup too. Not ideal.

So the new integration should fix this issue?

Pop on over and Iā€™ll show you how I have to restart OZW 2-3 times a day to get my Z-Wave mesh back up and running, sometimes the whole of HA.