I’m trying to get this ZooZ 800 GPIO module working with my Raspberry Pi 4 and Home Assistant (or more specifically Z-Wave JS). I think I set things up right. I disabled Bluetooth and enabled UART in config.txt and uninstalled the Bluetooth userspace stuff, but when I try to fire up the server I get the following:
18:21:33.155 DRIVER ███████╗ ██╗ ██╗ █████╗ ██╗ ██╗ ███████╗ ██╗ ███████╗
╚══███╔╝ ██║ ██║ ██╔══██╗ ██║ ██║ ██╔════╝ ██║ ██╔════╝
███╔╝ ██║ █╗ ██║ ███████║ ██║ ██║ █████╗ █████╗ ██║ ███████╗
███╔╝ ██║███╗██║ ██╔══██║ ╚██╗ ██╔╝ ██╔══╝ ╚════╝ ██ ██║ ╚════██║
███████╗ ╚███╔███╔╝ ██║ ██║ ╚████╔╝ ███████╗ ╚█████╔╝ ███████║
╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═══╝ ╚══════╝ ╚════╝ ╚══════╝
18:21:33.162 DRIVER version 10.3.0
18:21:33.163 DRIVER
18:21:33.165 DRIVER starting driver...
18:21:33.191 DRIVER opening serial port /dev/ttyAMA0
18:21:33.219 DRIVER serial port opened
18:21:33.221 SERIAL » [NAK] (0x15)
18:21:33.230 DRIVER loading configuration...
18:21:33.237 CONFIG version 10.3.0
18:21:34.971 DRIVER beginning interview...
18:21:34.974 DRIVER added request handler for AddNodeToNetwork (0x4a)...
1 registered
18:21:34.976 DRIVER added request handler for RemoveNodeFromNetwork (0x4b)...
1 registered
18:21:34.977 DRIVER added request handler for ReplaceFailedNode (0x63)...
1 registered
18:21:34.979 CNTRLR querying controller IDs...
18:21:35.085 SERIAL » 0x01030020dc (5 bytes)
18:21:35.089 DRIVER » [REQ] [GetControllerId]
18:21:36.108 CNTRLR Failed to execute controller command after 1/3 attempts. Scheduling next try i
n 100 ms.
18:21:36.214 SERIAL » 0x01030020dc (5 bytes)
18:21:36.217 DRIVER » [REQ] [GetControllerId]
18:21:37.226 CNTRLR Failed to execute controller command after 2/3 attempts. Scheduling next try i
n 1100 ms.
18:21:38.332 SERIAL » 0x01030020dc (5 bytes)
18:21:38.336 DRIVER » [REQ] [GetControllerId]
18:21:39.364 DRIVER Failed to initialize the driver: ZWaveError: Timeout while waiting for an ACK
from the controller (ZW0200)
at Driver.sendMessage (/home/homeassistant/git/zwave-js-server/node_module
s/zwave-js/src/lib/driver/Driver.ts:3990:23)
at ZWaveController.identify (/home/homeassistant/git/zwave-js-server/node_
modules/zwave-js/src/lib/controller/Controller.ts:713:33)
at Driver.initializeControllerAndNodes (/home/homeassistant/git/zwave-js-s
erver/node_modules/zwave-js/src/lib/driver/Driver.ts:1208:26)
at Immediate.<anonymous> (/home/homeassistant/git/zwave-js-server/node_mod
ules/zwave-js/src/lib/driver/Driver.ts:1015:16)
Error in driver ZWaveError: Failed to initialize the driver: ZWaveError: Timeout while waiting for an ACK from the controller (ZW0200)
at Driver.sendMessage (/home/homeassistant/git/zwave-js-server/node_modules/zwave-js/src/lib/driver/Driver.ts:3990:23)
at ZWaveController.identify (/home/homeassistant/git/zwave-js-server/node_modules/zwave-js/src/lib/controller/Controller.ts:713:33)
at Driver.initializeControllerAndNodes (/home/homeassistant/git/zwave-js-server/node_modules/zwave-js/src/lib/driver/Driver.ts:1208:26)
at Immediate.<anonymous> (/home/homeassistant/git/zwave-js-server/node_modules/zwave-js/src/lib/driver/Driver.ts:1015:16) (ZW0100)
at Immediate.<anonymous> (/home/homeassistant/git/zwave-js-server/node_modules/zwave-js/src/lib/driver/Driver.ts:1032:6)
at processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: 100,
context: undefined,
transactionSource: undefined
}
Shutting down
18:21:39.375 DRIVER destroying driver instance...
18:21:39.378 DRIVER driver instance destroyed
Curious if anyone has any ideas?
My /boot/firmware/config.txt has the following:
# Disable Bluetooth
dtoverlay=disable-bt
enable_uart=1
This is on a Raspberry Pi 4 running Ubuntu 22.04 (standalone Home Assistant) with zwave-js-server built from git.
tim@auto:~$ sudo systemctl disable hciuart
Failed to disable unit: Unit file hciuart.service does not exist.
tim@auto:~$ ls -l /dev/serial/by-id/
total 0
lrwxrwxrwx 1 root root 13 Jan 9 21:45 usb-0658_0200-if00 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 Nov 7 09:59 usb-FTDI_FT231X_USB_UART_DN01DU7F-if00-port0 -> ../../ttyUSB0
tim@auto:~$
The service not existing makes sense as I followed instructions here to try and completely disable BT.
The other USB devices are my current Aeotec Z-Wave stick and a software radio (for picking up our 433MHz Acurite data) but the tests I did previous were without either of these connected. I looked at /dev/serial/by-id/ before while troubleshooting and have never been able to get the Zooz board to show up here (it’s connected to the first 10 pins).
The GPIO is always /dev/ttyAMA0, the recommendations for the /dev/serial/by-id paths are only applicable to USB devices.
Is the user running the application part of the dialout group or root, and have permission to access the device?
Running zwave-js-server yourself is discouraged and a rarity, you won’t get much help with that. I’d suggest running the Docker or package (single binary, arm64 or amd64 only for now) version of ZWave-JS UI to eliminate your installation method as a possible problem.
You could try contacting Zooz for help. They say they won’t help you troubleshoot the home automation software, but maybe they can provide some advice with the Pi install itself. Maybe they have a way of confirming if it’s working properly.
Anyways the test I shared earlier was just so I could more easily see the output since journalctl was covering some of that up it seemed. I run into the same issue running it as homeassistant or root directly. /dev/ttyAMA0 exists though it seems to always exist whether or not I have the module attached. My rough conclusion is that the board might be bad.
Just in case I tried to see if I could pair it as a secondary controller since Zooz says you can do that and I also wasn’t able to pair it. I don’t think that would require Pi integration since it would just be talking over Z-Wave which kinda makes me think it might be busted.
Z-Wave JS UI has always had amd64 binaries, arm64 are new. I’m suggesting you try that software instead, to exclude your custom environment from being a factor. Probably not the issue, but worth trying. Running zwave-js-server directly like you are is not recommended.
Z-Wave JS doesn’t support secondary controllers, were you trying something else? The controller won’t function without host software controlling it.
Ah gotcha. I’ll look into that. ZWJS works really well so quite surprised it’s not recommended. I’ve been using HA since Open-ZWave or whatever it was so I’ve been through the migration gauntlet several times. ZWJS is definitely the best of them all so far and once I was able to get it setup (if memory serves I think you might have actually helped me with that!) it’s been quite good! I can even get switch states from switches (so if I turn a light on by hand, HA knows it). That wasn’t always the case and has been pretty fantastic.
Either way I’ll check out ZWUI to see. Indeed I don’t expect it will work though good not about the controllers. I was indeed trying to pair it as a second controller. Now that I know that doesn’t work, that’s one less thing to worry about for troubleshooting.
Running zwave-js-server itself is not recommended (esp. with how you’re using it with ts-node). It’s really for developers to package in their own application. You can to it, it’s just not supported.
Z-Wave JS UI is one of those applications that embeds zwave-js-server, and is meant for end users. They all use Z-Wave JS (the driver) under the hood. There’s no difference from the HA perspective.
I had already removed bluzed and hciuart so I suspect the systemctl mask and/or removing wpasupplicant is what caused it to start working. After these changes, reboot.
I connect my HA Pi directly to wired ethernet but I’m not sure if removing wpasupplicant would break wifi or not.
Anyways, now zwave-js-server happily talks to the controller and it shows up in HA. From what I understand, I cannot migrate my device config from my Aeotec stick to the Zooz so I haven’t tried any Z-wave devices yet since I’ll have to repair lots of devices and need to have a plan of attack before I do that, but otherwise the controller works!
You can transfer the z-wave network from the Aeotec Gen5 to the Zooz 700 using Z-Wave JS UI (NVM backup and store), as long as the Gen5 is on version 1.2 (1.02). There is a firmware upgrade for certain Gen5s on the Aeotec support site.
I read that, but I don’t think it is Gen 5? Or hmm maybe it is but I’d be wildly surprised if it’s the latest firmware but this is also an 800 series (not 700) and I didn’t see any 800-specific info. I knew going in I might have to hard migrate. I was actually going to try to run both (multiple z-wave servers on different ports) and just move things over that way.
Turns out, when I fired up ZWJS with the 800 series and then switched back to the stick, something changed which caused HA to loose all of my named overrides, whoops. Devices and Entities are these but they have generic names now. No idea what caused that. I’m taking it as a sign. Some of my telemetry from my devices was funky anyway. Doing a refresh seems to have fixed it but this lets me make sure every device is properly reporting watts and things.
Fairly tedious but I’ve only had to do this once before so maybe it was time. The hidden in-wall switches won’t be super fun but I only have a few of those (I prefer those to the wall switches, many which, like the GE’s, that have the incredibly bright blue LED you can’t turn off).
No problem! This ended up being a good thing since I also switched over to Z-Wave JS UI and it’s quite fantastic! I missed Open Z-Wave Control Panel but this is better in every way. It’s great!
I’m having some performance issues with the ZAC93 controller I need to dig into but I think as far as the original problem, it’s solved (with upgrades!)
Updating this so maybe other folks see it, though I don’t have a good solution. The Zooz 800 GPIO module, at least mine, seems to have the same issues folks reporting with the 700-series where Z-Wave nodes would just instantaneously disappear from ZWJSUI when sending a command. Pinging the node brings it back but that can be annoying.
Though the Z-Wave 800 USB stick can be updated (on Windows), I know of no option to update the GPIO. Backup/restore also still doesn’t work.
Just a big heads up for folks using the GPIO option. I bought the 800 USB stick in hopes it might be better, but haven’t had time to do the controller ID hack trick or just re-assign everything to the USB stick yet (in part because I like hidden switches - great for making wall switches look like “normal” switches, but not great when you need to rebind devices).
Hmm I thought I did see one for ZAC93 USB (but not the GPIO). Such a shame the product, at least for me (seems like not everyone is having the issues I am), is so hobbled. I haven’t switched back to my Gen5 stick yet because it was such an arduous process to convert my network over but having to deal with it working ~75% of the time is definitely worse than the issues I had with the Gen5 stick.
Update to this, backups still do not work with ZAC93 as far as I can tell but my Z-Wave network is now much more stable. It’s pretty rare a device disappears on use. That now happens maybe once a month vs several times a day. Not quite sure what changed there between ZWJSUI versions or if it was something else, but it’s now much much better and at this point more stable than when I was using the Gen5 stick.