Ways to run a 2nd add-on for zwave-js-ui?

I want to add a second z-wave controller away from my main house controller (for Long Range).

The Home Assistant Z-Wave integration supports multiple “hubs” so that doesn’t seem like much of a problem. But I need another instance of zwave-js-ui to manage the controller.

One option is to run zwave-js-ui in Docker on it’s own server (e.g. Raspberry Pi) and then add a hub with a url like: ws://my-remote-zwave-js-server.local:3000. I’m not sure how concerned to be about that security-wise.

Here’s my add-on question:

I’m considering using a serial-over-ethernet Z-wave controller (like the TubesZB kit), so I don’t really need another machine to run zwave-js-ui. I don’t think there’s way to run a 2nd copy of an add-on, but is there any reason the second copy couldn’t be run as a local add-on?

For example, could I bring in the zwave-js-ui add-on code as a local add-on and modify the slug in the add-on’s config.yaml to make the supervisor start the container with a different hostname?

Or are there other things that would need to be changed to allow the add-on to run? That is, something to make the add-on seem unique to the supervisor as a different add-on?

Thanks,

1 Like

That’s the typical solution and likely the best choice.

I have not seen anyone try to add a second AddOn instance for ZWaveJS-UI, but here are a couple of thoughts:

  • This has been done for ZigBee2MQTT AddOn (See here), but not sure at all this can be done for ZWaveJSUI.
  • There is actually an “Edge” respository for ZwaveJSUI. It may be possible to have the “stable” version AddON as well as the (Bleeding) “Edge” version of the AddON, but not sure if there will still be any naming collisions.

I don’t see why this approach wouldn’t work. The only downside is you are now responsible for updating it, and Z-wave JS UI updates are pretty frequent. This may help Tutorial: Making your first add-on | Home Assistant Developer Docs

I received a 2nd controller today (the TubesZB kit) and then copied the zwave-js-ui repository files to my addons directory. Then I made a few simplle modifications to config.yaml, namely the panel name and icon to differentiate it from the other copy running. I also updated the name and slug, although not sure updating the slug is needed since it’s a local addon with a “local_” prefix.

The local (second) addon is working as expected right now.

My Addons page now shows these. The second controller is going to be mainly used for long range, so that’s why I added the “LR” on the name.

After adding my controller and a zwave switch in zwave-js-ui I then added a new hub in Home Assistant, and my integration shows this:

I’m not quite sure where that “Z-Wave JS” name comes from. Maybe the websocket reports that?

Was all pretty quick. I will have to manually update the version to trigger an update when needed.

1 Like

It’s just the hard-coded title assigned to the integration instance when it’s installed (or here). You can click the ... and select the Rename option to change it. It would be nice if it was default named to something unique to the network, such as the network’s Home ID or product name of the connected controller, but that information may not be available at that time.