How to install Z-Wave JS in "Home Assistant Core"

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