PSA: Zwavejs2mqtt has been renamed to Z-Wave JS UI

I do not. It’s still listed in the add-on store screen as “ZWaveJS2MQTT.”

The name change was introduced in v1.0.0 of the add-on. I’m assuming you need to update first to that version to see the name change reflected in your environment.

As for your other system, confirm the community add-on store is installed. https://addons.community/#installation

Which is kind of the point. Zigbee2MQTT ONLY uses MQTT. ZWaveJS2MQTT can use MQTT, but the preferred method of integrating it - is using the websocket. As the people behind the project have already said, the MQTT part of it is largely unused these days. And the fact that you didn’t need an MQTT broker to use it - confused a lot of newcomers.

2 Likes

Right, I got that. The community add on store appears to be installed. I tried to add it again (just to see), and got an error that it’s already installed.

Wouldn’t worry - it’s still called ZWaveJS2MQTT on my end in the add-on store.
Maybe just give it a few days.

On my test HAOS instance, I went to the add-on store, clicked ... in the upper right corner, then “Check for updates”. After a few seconds it showed ZWaveJS2MQTT had an update.

I went to ZWaveJS2MQTT, and clicked the update button. After a few minutes, it refreshed entirely on its own (I didn’t touch it) and now shows Z-Wave JS UI.

So I don’t have an answer for why you are having a different experience, but I can confirm that it is possible to upgrade and see the new name.

Cross-referencing the GitHub issue you opened for this: ZWaveJS2MQTT Add-on not updated to ZWave JS UI · Issue #3894 · home-assistant/supervisor · GitHub

I’m experiencing the same behavior you describe, including that:

/mnt/data/supervisor/addons/git/a0d7b954/ has directories for both zwavejs2mqtt and zwave-js-ui

… yet ZWaveJS2MQTT still shows as version 0.47 with no update available, and there is no separate addon listed for Z-Wave JS UI either. The issue remains the same even if I uninstall the ZWaveJS2MQTT addon.

Is there a migration guide on this? I have 82 ZWave devices and I really don’t want to spend a week re-joining them all to my mesh.

I found this but it doesn’t really lay out the process, and mostly notes that I need to manually modify a bunch of things that I don’t understand, and I REALLY don’t want to break my setup. This guide has made me less certain of the outcome, not more.

Just a general note - if you are going to take an existing project with a huge number of users, then break it because you don’t like the name, maybe spend some time making sure the existing userbase can understand how to deal with the breaking changes being imposed. While this change might be nice for new users, it’s a pretty substantial monkey wrench thrown into the works for existing users.

1 Like

Maybe explain how you have installed the software and how you are using it (mqtt, yes or no?). It was a literal one line change for me.

The migration guide you have listed is for migrating from zwave2mqtt, the old OZW implementation. It has nothing to do with this project name change.

1 Like

I’m not sure what you’re referring to. The only change that has to be made is the name of the image you’re pulling in docker, or the addon you’re installing in HA. There is no migration necessary.

Sure! I have an RPi running docker with the following docker-compose.yaml file:

version: '3.7'
services:
  zwavejs2mqtt:
    container_name: zwavejs2mqtt
    image: zwavejs/zwavejs2mqtt:latest
    restart: always
    tty: true
    stop_signal: SIGINT
    environment:
      - SESSION_SECRET=blahblahblah
      - ZWAVEJS_EXTERNAL_CONFIG=/usr/src/app/store/.config-db
      # Uncomment if you want logs time and dates to match your timezone instead of UTC
      # Available at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
      - TZ=America/New_York
    networks:
      - zwave
    devices:
      # Do not use /dev/ttyUSBX serial devices, as those mappings can change over time.
      # Instead, use the /dev/serial/by-id/X serial device for your Z-Wave stick.
      - '/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C0F00B56-if00-port0:/dev/zwave'
    volumes:
      - zwave-config:/usr/src/app/store
    ports:
      - '8091:8091' # port for web interface
      - '3000:3000' # port for Z-Wave JS websocket server
networks:
  zwave:
volumes:
  zwave-config:
    name: zwave-config

In Home Assistant, I have the “Z-Wave JS” integration installed with my 82 devices showing, communicating via websockets. I’m using the Mosquitto broker add-on running on my HA install.

The migration guide offers the following:

  • settings.json are almost the same. You can easily export them from Z2M and import them in Z-Wave JS UI by using the Export and Import buttons in Settings tab. After importing them you only will have to edit some Z-Wave settings and all Gateway Values entries as now the value ids have changed

I don’t understand the impact of what is being said here. What am I supposed to be doing here to deal with the changes in the value IDs?

  • scenes.json need to be rewritten for the same reason as valueIds have changed. We suggest to manually recreate them using the UI and trash the old one

In my case, I have no scenes.json so nothing for me to do here I don’t think. If I did, I would have no idea what to do apart from “blow everything away and do it all over again” which isn’t a great answer but not my problem I guess.

  • You cannot use the old OZW cache file but don’t worry it will be automatically generated and the nodes names/locations will be restored from nodes.json file

I don’t think this applies to me.

  • nodes.json can be imported but you will have to manually edit it and delete all nodes hassDevices as them will not work in the new implementation (alternatively instead of deleting you can manually convert them, see next steps)

Not sure what this is trying to tell me. My nodes.json does not contain the string hassDevices

  • Values ids unique strings have changed, in Z2M valueIds were identified by <nodeId>/<commandClass>/<endpoint>/<index> now they are <nodeId>/<commandClass>/<endpoint>/<property>/<propertyKey?> where property and propertyKey (can be undefined) can be both numbers or strings based on the value. So essentially if you are using Home Assistant or MQTT functions all topics will change, here you can see how we have translated some valueids of devices.js from the old format to the new one.

I think this might be talking about MQTT namespace and topics? It’s not clear to me, but maybe this doesn’t concern me as I’m not doing anything directly by interacting w/ the MQTT traffic.

  • List values are no longer handled as strings but as numbers by default. For example to change a Thermostat Mode in Z2M you used to send Heat or Off now you will need to send 1 (Heat) or 0 (Off). This will make it lot easier to handle list values
  • All bitmask values are now split in separated values and are booleans. The same for RGB colors, now all colors will be handled separately, there will be a valueId to control Red (0-255), another for Green (0-255) and so on… There is an open issue on Z-Wave JS to also create a valueId with the hex color string. Also now some values are split in targetValue and currentValue, the first one is used to send commands the second one to see the actual state. This could seems tricky at first sight but there are some reasons behind this.

Are these more MQTT concerns? I have no idea.

I’m referring to this guide in the project documentation.

edit: I’m wondering if that’s for the not-js version? Maybe that guide doesn’t apply to me? I can certainly agree with the OPs point that the naming here is confusing as heck :smiley:

As I previously said, that guide is for zwave2mqtt, which is based on the legacy OZW driver. It has nothing to do with the zwavejs2mqtt to zwave-js-ui project name change.

For a container install, all you have to do is change the image name. Literally, that’s it. If you want to change your container and service names too, go for it, but it’s not necessary. Just don’t touch the volumes.

If you are running zwave-js-ui yourself, I would recommend you read the release notes when you upgrade, in fact I think you have a responsibility to do so. The release notes for the release where the name change occurred describes all the breaking parts. https://github.com/zwave-js/zwave-js-ui/releases/tag/v8.0.0

1 Like

There. I’ve made all the changes you need to make. You’re done. Stop the old, change this, bring it back up.

1 Like

Allright, thanks to @freshcoast and @blhoward2 for the help, it’s really appreciated!

Based on the input above, I ran the following 3 commands on the machine running the container and everything came back up with no drama.

docker-compose down
sed -i 's/zwavejs2mqtt/zwave-js-ui/g' docker-compose.yml
docker-compose up
2 Likes

Need help with switching to Z-Wave JS UI
This name change and the update of the instructions for “How do I switch between the Official Z-Wave JS add-on and the Z-Wave JS UI add-on?” at Z-Wave - Home Assistant" inspired me once again try to switch to the Z-Wave JS UI add-on so that I can use its control panel to set device associations and parameters. (I want to use a Leviton VRCZ4 4-button controller to switch my kitchen sink boiler with a hidden appliance module and turn off a pilot LED on a bedroom light switch.) Unfortunately, I got stuck at the same point as last spring and lost some custom device and entity names in the process.

It was easy enough to complete first 2 of the 6 steps given but in Step 3 I never could find a place to enter the path to my Z-Wave controller or my network security keys. There were no blanks on the Z-Wave JS UI configuration tab to enter anything. Its log indicated that it had not found a Z-Wave driver: “WARN Z-WAVE: Z-Wave driver not inited, no port configured”

Proceeding to Step 4, using URL ws://a0d7b954-zwavejs2mqtt:3000 gave the error “Failed to connect”. Using the value from my current installation of ws://core-zwave-js:3000 does connect, but this is probably the wrong Z-Wave server. Has this URL changed with the name change?
With these problems, I did not proceed to Steps 5 and 6. Removing the Z-Wave JS UI add-on and following the procedure again only dug a deeper hole, leaving me with two Z-Wave JS integration instances and some mising device and entitiy names, all of which I finally fixed.

I must be missing something that is obvious to most other users. Are some restarts of HA or reboots of my computer required between some of these steps? Is the Z-Wave JS server URL different for each installation? Am I not finding the add-on’s proper configuration page? Help.

You’re missing all of the configuration within zwave-js-ui. You need to switch over to its UI, go to the gear icon for settings, and set it up. You need to define your stick address, put in your security keys, and turn on the websocket server, at minimum.

Look under minimum settings:
https://zwave-js.github.io/zwave-js-ui/#/getting-started/quick-start

The add-on also has its own documentation, which has the necessary configuration instructions you’re missing. The docs are available directly from the the add-on page, in the Documentation tab.

How did you resolve this? I am in the same situation, and both of these answers assume that I have an “Open WEB UI” button that appears that I can click. I am stuck at a roadblock and I can find no documentation that addresses this. I feel like I am missing something obvious. If someone is able to help it would be much appreciated.

The button is on the add-on page, after you install it and it starts up.

Do you not see it? What do you see on the page?