I’m runnig HA in a virtual environment on a Pi 4.
Looking for some clues installing Z-Wave JS in “Home Assistant Core”
See the advanced installation instructions here: https://www.home-assistant.io/integrations/zwave_js/#advanced-installation-instructions
The advanced installation instructions for virtual env users:
Option 4: Run the Z-Wave server yourself
This is considered a very advanced use case. In this case you run the Z-Wave JS Server or Zwavejs2Mqtt NodeJS application directly. Installation and maintaining this is out of scope for this document. See the Z-Wave JS server or Zwavejs2Mqtt GitHub repository for information.
This may be more useful via another thread: Installing zwave-js on home assistant core – Koen's blog
Here is how I am using zwave_js with a Home Assistant Core installation, docker, and systemd.
Home Assistant Core – HA-Core was installed using the instructions Install Home Assistant Core at the bottom of Home > Installation > Linux .
Z-Wave JS UI – I started with the information in Z-Wave JS UI > Quick Start which has the following Docker Command
# Using volumes as persistence
docker run --rm -it -p 8091:8091 -p 3000:3000 --device=/dev/serial/by-id/insert_stick_reference_here:/dev/zwave \
--mount source=zwave-js-ui,target=/usr/src/app/store zwavejs/zwave-js-ui:latestde here
This works if you want to try starting Z-Wave JS from a login terminal, but I wanted an un-attended start from a SystemD service. This required replacing the ‘’–rm" option with “–detach”. Here is the final bash script saved as zwave-start. Note your USB device will likely be different.
#!/usr/bin/bash
docker run --rm -it -p 8091:8091 -p 3000:3000 --detach --device=/dev/serial/by-id/usb-0658_0200-if00:/dev/zwave --moun
t source=zwave-js-ui,target=/usr/src/app/store zwavejs/zwave-js-ui:latesttype or paste code here
Then set the script file as executable with the command
chmod 755 zwave-start
SystemD – A full tutorial on SystemD can be found at How to create a systemd service in Linux .
You will need to create the following service file in the directory “/etc/systemd/system”. The name is arbitrary ending in “*.service”, mine is “zwave_js.service”:
[Unit]
Description=Zwave_js server
After=network-online.target
After=snap.docker.dockerd.service
[Service]
Type=simple
ExecStart=/home/homeassistant/zwave-js/zwave-start
[Install]
WantedBy=multi-user.target
With the systemd file created you will need to run the following commands as root:
sudo systemctl daemon-reload
sudo systemctl enable zwave_js.service
You can test starting the new service with the command
sudo systemctl start zwave_js.service