Boy.... did I mess up! Help needed with Zwave integration linked to Homeseer

TL;DR - How do I migrate from a Zwave JS server not running on HA to the one on HA

Whelp… I decided to make the switch from Homeseer to HA. Running HS for 15+ years, so I’ve got a lot to move over. To do it, I decided to run both in parallel for a bit to slowly move my MANY automations etc. to HA. On HS, I run the Zwave-JS plugin. When I installed HA, I mistakenly assumed that the default Z-wave integration was Z-wave JS which, I believe is wrong.

What I just NOW discovered… after running both in parallel for about a month now, is that when I originally installed HA, the default HA Z-wave integration treated my Zwave JS plugin running on HS as a Zwave JS server. So my four Zwave hubs (all four are Zooz USB LR800 sticks. One is plugged into the local machine running HA, the other three are in Znet’s over Wifi) showed up fine in HS even though, I now realize, to do it, they ALL point to the HS local IP and then access each stick depending on a Ser2Net port; so 192.168.1.193:3001, 192.168.1.193:3002 etc.

So now I have 143 Zwave devices with a total of 3303 entities apparently slaved to the HS plugin! Yes. I’m a moron. Any suggestions on how to move forward? I’ve got so many automations and scripts in HA now that wiping and starting against makes me cry.

Is there a way to migrate over to the Z-wave Plus plugin?

Any info appreciated.

There is no default really.

HA has a zwave integration that allows you to connect with a compatible zwavejs or zwavejsui server

If you use HAOS and want to run zwave js or zwavejsui server you may install the addon. Addons are basically services running in docker containers.

Yes. The integration connects to the server.
You may be wanting to connect your zwave stick to the HA server then install and run the addon. You can the connect the addon to the zwave integration

Remember
Integrations connect to services/servers
Addons are the services/servers
It eventually makes sense.

If this is true how does homeseer see it?
Is it also running on same machine?
If yes, you should start by connecting this with zwavejs or zwavejsui addon in Homeassitant and connecting it to zwave integration.

Please backup everything include zwave sticks before you do anything

Zwavejs can be backed up And restored. You should just do that. When you install addon make sure software versions matches Homeseer

The z-net connects to z-wave js ui via a tcp port like tcp://192.168.1.193:3001 then z-wave js ui connects to home assistant via a websocket like ws://192.168.10.1:3091. If you want move from Z-Wave JS UI on Homeseer to Z-Wave JS UI on HA here is a quick overview of what you could try. First backup home assistant, then backup the homeseer z-wave js ui store, install the z-wave js ui addon on home assistant, restore the z-wave js ui store to home assistant, copy your new websocket url from the z-wave js ui addon, in the home assistant integrations click the menu button next to your existing z-wave integration and select reconfigure, paste in your new websocket url and click submit. After this your z-wave server will run on home assistant and you should be able to disconnect homeseer and everything works.

Ok… so I’m starting to understand this more. I’ve hit a roadblock though.

I can’t upload my store directory to the ZwaveJSUI store directory. In the add-on webpage, there is a Folder icon that brings you to store. But when I try to upload a file, I get an error: “The “path” argument must be of type string. Received undefined”. Not sure how to get around this…

I tried SSH’ing directly into the docker container and looking for the store directory in there… but my find command comes up empty. I looked in the HAOS shell also, but no joy. Where is this bugger!!!

I’m just adding here for future searchers…

Once again, I missed something critical. I was trying to upload the store files individually from the ZwaveJSUI. Instead, I need to first backup the using the actual BACKUP command in my HS install instead of going into windows and just copying the directory.

Once I did this, I used the RESTORE command in the UI of ZWaveJSUI to restore.

Now I have to see if I can get it to control everything…

Thanks for the advice. Hit a snag. I’ve got the store directory restored, but I can’t get ZwaveJSUI to connect to the USB stick plugged directly into my PC that runs both HA (in a VirtualBox VM) and HS.

The restored store directory settings.json show the port as COM4 which is where my stick is.

Unfortuantely, the HA ZwaveJSUI is choking on COM4 and says it can’t initialize it. I looked in the \dev directory of both HAOS and the Docker container running ZwaveJSUI and while about 50 devices are listed, none that indicate a USB stick plugged in (I looked for things like ttyUSB0 or ttyACM0.

Any suggestions?

In the Home Assistant menu navigate to System > Hardware, then click on the “All Hardware” link. Examine the TTY devices you see there. If you don’t find your Z-wave controller it hasn’t been recognized by Home Assistant. Probably haven’t configured it correctly in VirtualBox to pass through to the VM. COM4 isn’t a thing in the Unix world.

You should use the by-id device path when configuring Z-wave-JS UI as the generic tty devices can change on you.

Great advice! You put me on a path that solved the connection issue for me!

Again… for future searchers… I had to go to the VM settings for HA, and under USB, made sure I added my device with the “Add a Filter” button in the USB section. Once I did that, I saw my USB device.

So now I’m in the home stretch (I hope!). Problem now is doing what @cornellrwilliams said above: change the websocket in my currently mis-configured Zwave Hub in HA (misconfigured meaning it is looking to HS for the ZwaveJSUI server…). I assume this is the websocket of the add-on… or is it the USB device itself?? Either one, where do I find that information?

First make a backup of home assistant. Go to settings > devices and services > click on the Z-Wave logo > click the 3 dots next to your hub/network name > click reconfigure > select reconfigure the current adapter > make sure use the supervisor addon is unchecked > click submit > you should now have a box to input your new websocket url > click submit and it should automatically discover your devices

Thanks for the reply!

I had tried that previously. For me, it comes up with ws://192.168.1.193:3007. Unfortunately, I get a "Failed to Connect error.

Now that IP address is the one running HA in a VM on my PC. HA IP in the VM is 192.168.1.20. Not sure if this is relevant information…

so if you are running the z-wave js ui addon on ha you need to input ws://a0d7b954-zwavejs2mqtt:3000

Success!!! Had to change to port 3007 (which was a guess based on the first ws: it grabbed… but so far PERFECT!!

Thanks again for yours (and others) help on this. Now I have to do this with my three remote Znets.

I’ll let ya know how it goes.

You will need this guide if you plan on running multiple z-wave js ui instances on home assistant Ways to run a 2nd add-on for zwave-js-ui? - #10 by Omega_5

Another alternative would be to run Z-wave-JS UI directly on the Z-nets. There are guides on both this forum and the HomeSeer forum on how to do this. The downside is you must manually remember to update the software (5 minutes of effort), the upside is Home Assistant supports multiple Z-wave integrations out of the box and each one can be pointed to a Z-net Websockets server. I’m running my Z-nets this way without issue.

Yeah. That’s the plan. A bit ago I did the Z-net dance getting Zooz Series 800 sticks running on my OG Z-nets in HS to get the upgraded chipset.

Wasn’t the easiest, but doable. Now I’m hoping to repurpose those to be exclusively HA. They are running fine using HS’s ZwaveJSUI servers, but I want to eventually retire HS.

Bah! Another roadblock on trying to get ZWaveJS-UI running on a RPi (bought one to experiment before I mess with my Znets) and having it recognize my Zooz USB Controller.

I’ve got Docker/ZwaveJSUI running no problem. The issue is I can’t get the USB Zooz stick recognized. If I try curl http://192.168.1.99:8091… works great! However, if I try http://192.168.1.99:3000, it chokes with a connection error. The error code I get when I start the ZwaveJSUI (There HAS to be a Community agreed upon abbreviation for this! ZJU maybe… :rofl:) is this:

zwavejsui-1  | 2025-07-28 21:32:18.783 WARN Z-WAVE: Z-Wave driver not inited, no port configured

Here is my .yml code:

services:
  zwave-js-ui:
    image: zwavejs/zwave-js-ui:latest
    container_name: zwavejsui-1
    restart: always
    ports:
      - "8091:8091"   # Web UI port
      - "3000:3000"   # MQTT interface
    volumes:
      - ./config:/usr/src/app/packages/zwavejsus-1/store
      - /dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if00:/dev/ttyACM0  # Update with your actual Z-Wave USB device path

I’m currently dead in the water on this. Help me Obi-Wan(s)…

From looking at the official docs looks like you need to manually specify the device. They give a full example here Z-Wave JS UI in the run as a service section.

Got it working! Thanks! Logs do not have that error on startup, and I see what looks like serial traffic to indicate the USB stick is communicating with HA.

But I still get the failure to connect when I curl… and when I try to reconfigure my Zooz stick in HA to the new address, it still chokes.

I tried ws://192.168.1.99:3000 as well as ws://zwavejsui-1:3000 but no joy.

Feels like I’m SO close…

EDIT: Confirmed on the USB connection as all my devices are currently loading up in the ZwaveJS-UI. :grin: Still can’t get HA to connect to it though…

EDIT 2: I just realized that ws://zwavejsu-1 wont work because HA is not on the same Docker network… AI told me that. :joy:

Did you enable the Websocket server in Z-Wave-JS UI? I’m not sure curl is a good test, the websocket server isn’t a web server. That’s what the UI port is for.

Why not just configure the Integration? What’s the point of the curl test?

Ha! I LITERALLY just came back to say I just did that and it worked! Thanks @mterry63 and Gemini AI!

Always growing pains the first time I do a new project…