My (core) ozw to zwavejs experience & tips

So I waited to the last minute to do this migration as I have read several bad experiences.
I know your first thought is going to be “well good for you”. but that’s not why I’m writing this.

I had zero issues and was up in running in 10 minutes or so.
I have about 50 zwave devices and the most time consuming part was naming them. but everything was copy & paste (edit: these are for x86/x64 arch - if you run arm or something else you will need a different set of commands to build for your platform)
I chose to run my own zwave2mqtt server (even though i don’t use mqtt) everything said “advanced” “most difficult to install”
there is literally copy & paste install on their web site. some basic config changes in the UI and my devices started showing up.

obviously if you are not running core this isn’t applicable. but if you are, here is my tips.

  1. run this template and copy all your info into a txt file (really a must do)
    Z-Wave JS - Home Assistant
  2. go to your configuration.yaml and copy your zwave info, put it at the top of same txt file so you have all the info in 1 place (must do)
  3. go to your HA integrations, remove the ozw integration, go to config yaml and comment zwave stuff out save.
  4. restart HA
    no more zwave at this point.
  5. I chose to run this zwavejs as root, that’s up to you if you want to or not.
    sudo to root go to the zwave2mqtt docs page and copy & paste the package install
    ZwaveJS2Mqtt
    you should be able to go to the zwaveJS web gui on port 8091
  6. go to the setting page (gear icon) then zwave section.
  7. input the path to your zwave stick serial port (if you use udev method, it’s /dev/zwave or similar)
  8. put in your zwave key where it says s0 legacy, note you will have to modify your key from it’s current format but basically you remove the 0x and “,” to make it 1 big number
  9. while you are in settings. go down to the Home assistant section and enable ws server and set your port. I am running grafana on port 3000 so i changed this to 5000 YMMV
  10. click save at the bottom
    go back to the home page and you should now see all your zwave devices begin the interrogation process. wait until this is all done, if you have battery devices, you’ll need to go wake them up.
  11. name your devices. click the down arrow and go back to step 1s text file you’ll have all your nodes and names. node id’s will be the same. put the name in and click the arrow and now your device has it’s name. this was time consuming, but it was all copy/paste.
  12. go to home assistant and install the zwaveJS integration, give the URL and port (for me this was localhost:5000
    that’s it… all your stuff is back in HA.
  13. now that your at this point. kill the zwave service and create a new systemd service file (google for info on how to do that, enable it, reboot make sure it works and call it good)

so minus the copy/paste name stuff, that whole process took 10-15 minutes.

now for the not fun part, i run all my automations in node-red, so I do have to spend time and go through each one, and make sure the correct entity names/ids are there. that is what I’m about to go and do, and it will probably take a while, but it wont be hard, just time consuming.

so the point of this was to offer my experience, my tips and to let people know who run a similar setup, if you were concerned as I was, don’t be. it really wasn’t bad.

1 Like

Using Core here as well. My experiences were similar when I migrated to zwavejs a few months ago, very smooth transition too. I don’t use the HA builtin zwavejs integration though, I do everything over MQTT. That way I can update HA and zwavejs2mqtt separately.

Just one important thing to note in your writeup. The ‘packaged version’ on the zwavejs2mqtt page is compiled for x64 only, so it works out of the box for a NUC or a PC. If you run on ARM (like Raspberry Pi), then you need to get the source package and build it with yarn. Or maybe use the Snap package if available in your distribution, I haven’t tried that.

Lol yeah, well it’s mostly to keep the amount of support posts down from people who have no idea what a console is. If you have some basic knowledge about administrating a Linux box, doing this is rather basic and indeed the most simple and non-nonsense install method HA has to offer (at least in my opinion).

Since I am running zwavejs2mqtt in a container, I am also running HA Container. That makes upgrading & rollback, if needed, easy.

Running Docker adds another layer of pseudo-virtualization over the bare metal process, adding overhead in both processing and memory use. Not a big deal on a powerful system, but on SBCs it makes a difference (even a significant one when running large amounts of containers like Supervised does). But I understand the convenience factor.

Then again, upgrading and rollback on Core amounts to just renaming two folders :slight_smile:

It also lets the 2 containers have differing & possibly conflicting dependencies.

That’s kind of the same with Core though, all dependencies are isolated in their respective venvs. In a way, it’s a type of very light weight containerization too, but without the OS part. You can’t isolate the network config and similar though, this can be an advantage or a drawback depending on how you look at it.

good point @HeyImAlex I didn’t think about the x86/x64 codebase issue.
thanks for pointing it out. I’ll update the original.