Setting Up Home Assistant Connect ZWA-2
This is a straightforward guide to getting the Home Assistant Connect ZWA-2 working with Home Assistant by running Z-Wave JS UI on a Ugreen NAS via Docker. I wrote this primarily as documentation for myself, but figured the knowledge might help someone else working through the same setup. The key is properly mapping the USB device and setting up persistent storage.
1. Overview
Component | Role |
---|---|
Home Assistant Connect ZWA-2 | Physical Z-Wave radio interface for mesh network communication |
Ugreen NAS | Hosts Z-Wave JS UI container, provides persistent storage |
Z-Wave JS UI | Web-based Z-Wave controller and gateway |
Home Assistant | Smart home platform connecting via WebSocket |
Docker | Container runtime for Z-Wave JS UI |
The Z-Wave JS UI acts as the bridge between your ZWA-2 and Home Assistant via a WebSocket connection.
2. About the Hardware
Home Assistant Connect ZWA-2
The Connect ZWA-2 is built on Home Assistant's second-generation platform, which prioritizes high performance and openness. It represents a significant leap from the first-generation Connect ZBT-1 (Zigbee). Note that there is no ZWA-1—the "2" designation represents the second generation of technology platform, not the product iteration. All future Connect line products will use this new platform.
Prerequisites
- Ugreen NAS with Docker installed
- SSH access to your NAS
- Home Assistant Connect ZWA-2 USB stick
- USB extension cable (recommended for better signal)
3. Hardware Setup
Step 1: Connect the ZWA-2
Plug your Connect ZWA-2 into the NAS. Use a USB extension cable if possible—this improves signal quality by positioning the stick away from potential interference sources.
Step 2: Identify the Device Path
SSH into your NAS and locate your Z-Wave device:
ls /dev/serial/by-id/
You should see something like:
usb-Nabu_Casa_ZWA-XXXXXXXXXX-if00
This is your device identifier. The exact string will differ based on your hardware's serial number.
4. Docker Container Setup
Step 3: Create Persistent Storage Directory
Ensure your persistent storage directory exists:
mkdir -p /volume1/docker/zwave-store
This directory stores your Z-Wave network configuration, device database, security keys, and settings. Without it, you'll lose configuration on container restart.
Step 4: Run Z-Wave JS UI Container
Execute this Docker command (replace the device ID with yours from Step 2):
docker run --rm -it \
-p 8091:8091 -p 3000:3000 \
--device=/dev/serial/by-id/usb-Nabu_Casa_ZWA-XXXXXXXXXX-if00:/dev/zwave \
-v /volume1/docker/zwave-store:/usr/src/app/store \
zwavejs/zwave-js-ui:latest
Port breakdown:
8091
: Z-Wave JS UI web interface3000
: WebSocket server for Home Assistant integration
Device mapping:
- Maps the physical USB device to
/dev/zwave
inside the container
Volume mount:
- Persists configuration to
/volume1/docker/zwave-store
If you see Unable to find image 'zwavejs/zwave-js-ui:latest' locally
, that's normal—Docker downloads it automatically.
Step 5: Wait for Startup
The container needs a moment to initialize. Watch for log messages indicating the web server is ready.
5. Z-Wave JS UI Configuration
Step 6: Access the Web Interface
Open your browser and navigate to:
http://<YOUR_NAS_IP>:8091/
Replace <YOUR_NAS_IP>
with your NAS's actual IP address.
Step 7: Configure Serial Port
In the UI, go to Settings → Z-Wave:
- Set Serial Port to
/dev/zwave
- Click Save
This tells Z-Wave JS where to find the USB controller.
Step 8: Generate Security Keys
Navigate to Settings → Z-Wave → Security Keys:
- Click Generate for each key type (S0, S2 Access Control, S2 Authenticated, S2 Unauthenticated)
- Save these keys securely—you'll need them to re-pair devices if you rebuild the container
Without these keys, secure devices cannot be added to your network.
Step 9: Set RF Region
Go to Settings → Z-Wave → RF Manager:
- Set RF Region to your location (e.g.,
USA
,EU
,ANZ
) - Click Save
This ensures legal compliance and optimal performance. Using the wrong region can cause communication issues or violate regulations.
Step 10: Verify Controller Status
In the Z-Wave JS UI dashboard, confirm:
- Controller shows as Ready
- Serial port connection is Active
- No error messages in the logs
6. Home Assistant Integration
Step 11: Enable WebSocket Server
In Z-Wave JS UI, navigate to Settings → Home Assistant:
- Enable WS Server
- Note the WebSocket URL:
ws://<YOUR_NAS_IP>:3000
Step 12: Add Z-Wave JS Integration in Home Assistant
- Go to Settings → Devices & Services
- Click Add Integration
- Search for Z-Wave JS
- Select Z-Wave JS
- Enter WebSocket URL:
ws://<YOUR_NAS_IP>:3000
- Click Submit
Home Assistant will connect to your Z-Wave JS UI instance and begin discovering devices.
7. Pairing Z-Wave Devices
In Z-Wave JS UI:
- Click Control Panel
- Click Add Node (or Include)
- Follow your device's pairing instructions (usually triple-press a button)
- Wait for device to appear in the UI
- Name and configure the device
Devices will automatically appear in Home Assistant once paired.
8. Backup Strategy
Critical Data to Backup
- Security keys: Settings → Z-Wave → Security Keys (export as JSON)
- Z-Wave network database: The entire
/volume1/docker/zwave-store
directory - Home Assistant config: Standard Home Assistant backup
Without backups, you'll need to re-pair all devices if the container is lost.
Automated Backup
Add to your NAS backup routine:
tar -czf zwave-backup-$(date +%Y%m%d).tar.gz /volume1/docker/zwave-store
9. Troubleshooting
Device Not Found
# Check if USB device is visible
ls -la /dev/serial/by-id/
# Check kernel logs
dmesg | tail -n 50
Permission Denied
The container needs access to the USB device. Ensure Docker has proper permissions or run with --privileged
flag (less secure).
Controller Offline
- Verify serial port setting:
/dev/zwave
- Check container logs:
docker logs <container-id>
- Restart container
- Check USB cable connection
Home Assistant Can't Connect
- Verify WebSocket server is enabled in Z-Wave JS UI
- Check firewall rules on NAS allow port 3000
- Confirm Home Assistant can reach NAS IP
- Try
ws://
instead ofwss://
for local network
You're now ready to build your Z-Wave smart home network. Start pairing devices through the Z-Wave JS UI control panel, and they'll automatically appear in Home Assistant for automation.