Zwave-JS, zwaveJSMQTT, - either, both, switch, or.... what?

I read the documentation at these links:

And I’m even more confused that before. I now run ZWave-JS on HA on an RPi4. It’s working. But I want to upgrade the firmware on a device, which apparently ZWaveJSMQTT can do.

I have no need for MQTT and I understand ZWaveJSMQTT doesn’t need to use it. But beyond that it’s just fog. Do I install ZWaveJSMQTT, and then ‘disable’ ZWave-JS? Or uninstall it? Or can I have both and just use the ‘control panel’ in ZWave JSMQTT? Does one depend on the other? Will I mess up my existing devices/entities?

How do I get the additional functionality of ZWaveJSMQTT without messing up everything I already have working?

To start we need to make sure that you understand that there are two parts to zwavejs - the server software and the integration.

the server is the add-on/docker install that you run.

the integration is what runs inside HA to connect HA to the server.

You have to run the zwavejs integration no matter which version of zwavejs server software you run (zwavejs or zwavejs2mqtt)

the integration can be directed to connect to any zwavejs server (or multiple zwavejs servers if you have more than one).

the physical zwave controller (USB stick etc) can only ever be connected to one zwavejs server at a time.

So in order to run zwavejs2mqtt and connect it to the zwave stick you have to stop running the zwavejs add-on. Depending on how you installed the zwavejs server software (add-on I assume) the supervisor will immediately restart the zwavejs server add-on. I don’t use it and I can’t remember if there is an easier way to stop it from restarting aside from just un-installing it completely.

You will need to reconfigure the zwavejs integration to use the zwavejs2mqtt server instead of the add-on. But…you will loose your device configs in HA (unless something has changed that I have heard about). So you will need to end up renaming everything again back to the way they were before you switched to zwavejs2mqtt.

I think there is a way to transfer the current device config to the zwavejs2mqtt install but I’m not sure how it’s done. there was another post (by petro I think) about that somewhere on the forum.

If everything is working as it is for you then you need to decide if it’s worth all the trouble to switch just for upgrading a single device firmware.

1 Like

That helps a lot. So - the HA “namespace” of devices and entities would be wiped clean if the integration is connected to a different server. And I’d lose every automation and script I’ve created since day one. All the previous posts I’ve seen about zwavejs2mqtt talked about how great it is and how easy it is to switch - none mentioned this inconvenient truth.

So, zwavejs2mqtt is off the table, not happening, a non-starter. It seems unfortunate that HA’s z-wave support has ended up in this medieval world of warring kingdoms where users are serfs, bound to the land of their birth.

There’s another route - move the controller to a Windows machine, temporarily, and use a Windows utility to do updates - then put the controlller back on the RPi4. Seems like if I did the whole thing with the RPi4 powered down, HA would never know it happened. And I’ve been told that the details of the mesh network are stored in the NVRAM in the controller, so that should be stable. But I’d sure like to hear from someone else who’s been down that road before trying it myself.

If you shutdown HA Core disable the Z-Wave JS integration, bring up zwavejs2mqtt and complete all of the node interviews, you won’t lose any device or entity customization. The only reason you lose the customization now is because of a bug in HA introduced very recently. Switching between the add-ons worked without any problem prior to that bug.

Noted, thanks.

But running around to all those devices, getting them to redo the interview (even if I could remember how each one is reset) does not sound like fun.

Interview is not the same as inclusion

Yes. But if you copy existing entity_id and rename to same all everything is readers in Lovelace and to automations without issue. I have standard for entity_id naming so it was easy but if you don’t it could be pain.

Not sure you have big use for moving but long term maybe there will be more incentive.

No, the automations and scripts are still intact. its just the entity_ids that you used in them will need to be re-created in the zwavejs2mqtt zwavejs integration.

the easiest situation is what freshcoast suggested and you could just shutdown the zwavejs server and start up the zwavejs2mqtt server. The only issue as stated is that the zwavejs server will automatically restart every time if you installed it via the supervisor.

A bit over-dramatic there I think. :wink:

you can change whenever you want and it’s not that daunting of a task really. you just need to wake up your battery powered devices until the interview is completed. the mains powered devices won’t (typically) need any interaction on your part to interview them.

My tiny novice brain assumed that z-wave interviews only happened after inclusion. Apparently that’s not so. I’ve now read that knowledge of the network is in NVRAM in the controller itself (true?) so what’s being lost is just the HA namespace and object collection created to represent that network. I thought that the entity IDs were assigned automatically and any re-naming I did was confined to the entity “names”. Unfortunately it looks like scripts and automations reference those entities by names rather than IDs. So, getting them all working again after the switch would be a PITA of unknown severity. But maybe the scripts really reference the IDs and just display the names in the UI…?

Alternative: move the controller to my PC and use a utility there to do the firmware update. If the network device information is stored in the controller, they should all be accessible without need for inclusion. If I do this with the RPi4 powered down, HA will never know the controller was gone for a while and the namespace should still be valid. Am I right on this?