Troubles with HA and ZwaveJS2Mqtt on Unraid

Hello everyone. I was hoping someone could give me advice. I am running HA and ZwaveJS2Mqtt as 2 separate dockers on my server running Unraid. I recently switched all my devices from Fibaro HC2 to HA, using Aeotec ZW090 stick. Paired all my devices to that using ZwaveJS2MQTT control panel.
Within the ZwaveJS2MQTT, I usually do close to nothing. I paired all devices, stored all devices to nodes.json (says this is to prevent interview next time it would start), exported that + configuration + NVM backup (just in case).
Rest of the actions, I do within the HA - I renamed most of my entites, becuase when I am using Fibaro Double switches, each switch (entity) controls different light, so having them named as “switch” and “switch (2)” is no go for me as I lose overview, and then Alexa doesn’t know the device as it takes it from entity name.
And here comes my problem. I recently upgraded ZwaveJS2MQTT - just by clicking upgrade within Unraid. But when that happens, ZwaveJS2MQTT starts with wiped configuration. So I restored configuration (contains device, network keys, …), after that I imported nodes.json, yet all devices had to be interviewed again (which is pain for battery devices).
What is even worse is - entity names within HA are gone and reset to original (eg. if device is called Kitchen Switch, then entities are called Kitchen Switch and Kitchen Switch (2).

Would anyone know what am I doing wrong? Just restarting the docker does not cause such issues. It is only during upgrade, or if I change some sort of configuration of docker (I assume that’s when docker image is restarted or something).

Thank you all in advance.

I don’t know anything about Unraid but in regular docker you can specify volumes to maintain your configurations thru updates. I do that all the time using portainer to just recreate the container with a latest pulled image. And I never lose any configurations.

I assume (maybe wtongly…) that docker in Unraid has the same capability.

Thanks for the response. Yes, it does have such options. But usually, like for instance for HA, by default there is path that docker sees (eg. /config) and server storage (/mnt/user/appdata/HomeAssistant).
There is no such pre-defined path for ZwaveJS2MQTT, so I am not sure what should I map to make sure all my configuration would stay outside of docker image. Can anyone help?

@finity Thanks, I was not paying attention. Usually those settings are instantly either pre-populated or marked as necessary to be filled in. In this case, it was not, so I was only using docker container to store settings. When I expanded docker settings, I see now /usr/src/app/store and /usr/src/app/bin which I pointed to location outside of docker. Hope that this will work as expected now! :slight_smile:

1 Like

@stomko How did you install the docker, did you just use the app store? I have been running zwavejs inside of the HA VM and last night all of sudden the usb is seen but can’t open the port to actually access the devices. I am looking to move that integration out to it’s own docker, but not sure if to use portainer or just use the docker from the apps tab.

I am running 2 dockers installed directly from apps. Both are in bridge mode. One is ZwaveJS2MQTT and the other is Home Assistant Core. I pass USB device to ZwaveJS (Aeotec ZW090). Just make sure you have config elswhere, not in docker like I did :slight_smile:

are you using the MQTT of the websocket? MQTT is slow and I can’t get the websocket to connect

I am using websocket. Just docker’s name is ZwaveJS2MQTT, but I do use websocket.

I am still getting this error.

image

Here is the docker on Unraid

image

Not sure what to do, I read somewhere it might be because of the docker being in bridge and not host. You said yours is in bridge mode, so before I started messing with that I wanted to check and see how you made it work.

what’s your HA docker’s IP and what’s your ZwaveJS2MQTT docker IP? 172.17.0.3 is internal. Just point to IP of your docker, eg. 192.168.0.200:3000 (if that’s your ZwaveJS IP), not zwavejs2mqtt:3000. Also make sure WS is enabled in the ZwaveJS.

I am sorry. I actually use br0 and assign them IPs from pool.

Thanks for the help. My HA is actually a debian VM and not a docker. It is on a vlan for only IOT devices that can’t directly communicate with the main lan where the server is actually located. Once I changed it to a bridge on that vlan it started working. With everyones configuration being different, sometimes it just takes some talking about the problem in order to see the solution.

I just went through this myself and took some tinkering to get everything ironed out. It will not run straight out of the box like other containers for unRAID.

Here’s my basic configuration:

Let me know if you have any questions.

hi, can u show a screenshot on your container settings… Iam having a hard time getting this to start.
dont really not what iam doing yet with docker :smiley:
and exactly what repo are u using?

If it helps, this is mine. I am not using bridge, but br0 with IP I assign to it manually. Last 2 highlighted allocations are important if you don’t want to lose data on every upgrade/reboot like I did. They don’t come pre-populated as it does on usual Unraid dockers.

1 Like

You shouldn’t map the /usr/src/app/bin directory, that’s part of the application.

Thanks, but I checked and there is nothing in there anyway. I’ll probably change it.

Looks like the only thing there is source code for the server binary, meaning it’s actually not used, so you’re probably fine either way.

Wow, finally got it to show up in the controlpanel.
What i did was update the firmware on the stick using this site

nowhere is it mentioned that this might be a problem.
Apparently it was… I just bought the stick so didnt ever think this would be an issue.


edit:nvm it broke again lol

@stomko I’m testing proof of concept to use Unraid for my HA instance and still learning about Unraid, but how do you figure out the serial device? I see in the Tools > System Devices but not sure this translates to pass it tot he docker container.

image