Is there a way for Z-Wave JS to access a remote USB stick over IP?

I know that HA can connect over IP to Z-Wave JS running on a remote server. However, I’d like to partition things a little differently. I already have a WS-AP3825i mounted on my ceiling. The AP is running OpenWrt and has an available USB port. This would be an ideal location for the Z-Wave hub. There’s probably some convoluted way to get Z-Wave JS running under OpenWrt, but I’d rather keep Z-Wave JS on the existing server with HA. I already use the identical AP as a USB print server in another location, so I’m optimistic. It seems this is just a Linux communications puzzle. How can I get Z-Wave JS to talk over IP to the Z-Wave USB stick in the OpenWrt AP? This would be a very elegant solution that could benefit lots of users.

If you can run ser2net on openwrt, you can connect to with Z-Wave JS UI.

It appears that OpenWrt has prebuilt packages for both ser2net and usbip.

usbip is a more powerful solution (would have access to hardware flow control), but seems like overkill for simple serial. I’ve got a pile of the APs, but only one Z-Wave stick. Will have to wait until the wife is out of the house before I interrupt voice control of the lights and fans. :worried:

Might be simpler to use a Z-Wave smart plug or two as repeaters.

Actually being that close to the WIFI will be bad for zwave. So if you due that you’ll want an extension cable to move it at least 3 feet away. While they use different frequencies for me I find a lot of signal interference from the WIFI base stations and have moved the stick and smart switches away and can see a direct improvement in RSSI and RTT.

I haven’t had time to evaluate performance, but I’ve got it working. I’m using an AEON Labs ZW090 aka Aeotek Z-Stick Gen5. I installed the following packages on OpenWrt:

kmod-usb-acm
luci-app-ser2net

I’m using the ser2net settings as shown below:

The Z-Wave JS serial port name is then:

tcp://<remote_host>:5000

I really like the WS-AP3825i. I bought a lot of 10 for $80.25 with shipping and tax. It’s 3x3 MIMO with dual gigabit Ethernet, external RS232 console port, and either 12V or POE power. The USB2 port is on the side behind a plastic shutter. I’ve seen mounting plates, but I didn’t get any. The keyhole slots on the back work fine with #7 round-head wood screws. The only snag I’ve encountered is that the USB port will shut down if you pull high current (e.g. 256GB drive) for an extended period. The Z-Wave stick appears to be safe as was a 64GB drive.

I’m using 2 as access points, 1 as a USB print server, and 1 as the main router/firewall on a 550Mbps connection. The APs and router make extensive use of VLANs to segregate traffic. My Z-Wave test host is a clone of one of the APs, but with the radios disabled. It’s possible that interference could be an issue with concurrent Wi-Fi. That would be sad. :frowning:

1 Like

I’ve got 40 powered devices in a 2-story 2600sf house. This includes 11 non-Plus devices that I’m too cheap to replace. There are 5 devices that are 3 hops away. I’m curious to see if that will change if the hub is more centrally located.

You can run zwavejsui on RasPi in docker at remote location and connect back to HA over IP.

I do this for bldg to bldg. under 100’ I just use extenders. They significantly improve performance of devices at edge of network.

I wanted to update on performance. I have one AP centrally located on each floor of a modern (i.e cheap construction) 2-story house. The internal walls are hollow with drywall. The space between floors is mostly open with 12" for HVAC and plumbing. The subfloor is OSB. Probably 5/8" thick. Mostly carpet. Some tile in the bathrooms. The USB port exits horizontal parallel to the ceiling.

I started with an AEON Labs ZW090 aka Aeotek Z-Stick Gen5. I also scored an Atrim 800 from the Amazon Warehouse. I bought a right-angle USB adapter and a 6" USB extension with right-angle plug from AliExpress. I did not try anything longer.

I tested pretty much every combination. There’s very little difference. Out of 40 nodes, there are always 8-10 nodes at 3 hops. Yes, I rebuilt the routes each time.

So, it pretty much comes down to convenience. I’m happy with my stick up against the ceiling where it can’t get bumped. The upstairs AP is in the corner of the master bedroom. It’s just far enough away from the wall to insert the stick. Nobody is going to notice. My wife hasn’t said anything. :slight_smile:

If you’re considering upgrading from a 500 series Z-Wave radio, don’t bother unless you want to talk to long-range devices in your guest house. It’s not going to make any discernable difference.

If anyone can recommend some comprehensive Z-Wave diagnostic, I’m willing to repeat my tests.

I’m going to create a new post with my thoughts on transferring an existing Z-Wave network from one stick to another. The process reminds me of the Tower of Hanoi puzzle. The hardware and software both come from Silicon Labs. You’d think they could make it work. The Z-Wave PC Controller will crash. It also likes to tell me it can’t reset the stick or restore the NVRAM from file. What? I have to cycle power by replugging. When plugging the Atrim 800 stick, I’ve had my Windows PC either freeze or literally power-down. That’s pretty impressive. It’s just a USB to serial interface. I’m pretty sure all these branded sticks are just a repackaged reference design with some custom entries in the ID fields.

1 Like

Hi David! Just wanted to say THANK YOU for this post. I recently purchased a Z-Wave main water shut off valve for my house (Zooz Z-Wave Plus 700 Series Titan Water Valve Actuator) and was looking for an economical LAN POE based Z-Wave option. I have my Home Assistant running on Proxmox and I prefer not to attach anything to it. LAN Z-Wave options are a few and far between… the TubesZB Z-Wave PoE Kit is out of stock and seeing a few cases of reliability and first time set up concerns.

Your suggestion with the recycled $15 access point, disable Wi-Fi, and OpenWrt looks like the best likely most reliable, long-term approach! I’d actually recommend to the maker of the TubesZB Kit to just switch over to these access points. I think his hardware cost would be about the same because you can buy these in bulk and no soldering time needed. He could flash them and sell them with the same or more profit. Anyway, thank you again! I just ordered all my supplies and will be setting this up.

Thank you for this. Had to change the ser2net settings to this to make it work:

Proxy        (enable)
Service port 0.0.0.0,5000
Protocol     Raw
Timeout      0
Device       /dev/ttyACM0
Baud rate    115200
Data bits    8
Parity       None
Stop bits    1
1 Like

I don’t plan on using these APs for wifi or routing at all, just as [slightly overpowered] ser2net devices. Because of this, I won’t be using the radio LEDs. With a few packages (kmod-usb-ledtrig-usbport and kmod-ipt-led) I can use one LED to indicate that USB is connected, and another LED to show traffic on port 5000. It looks quite professional now.

Did you have to change any firewall rules to let it work? I’ve tried your config and @nmpu 's and no matter what I do, I can’t get ZwaveJS to connect.

Do you have any devices listed in /dev? I don’t seem to have any, although lsusb shows the device just fine…

root@OpenWrt-ser2net:/dev# ls | grep ACM
root@OpenWrt-ser2net:/dev# ls | grep USB
root@OpenWrt-ser2net:/dev# lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux 5.15.150 vhci_hcd USB/IP Virtual Host Controller
Bus 001 Device 002: ID 1a86:55d4 Zooz 800 Z-Wave Stick

Did you install kmod-usb-acm?

This was weirdly also my first thought, but yes I do have it installed.

I bought two of the APs, so maybe I’ll set up the second and see of I have luck.

Just to answer my own question, thanks to this reddit thread, there are two other packages that need to be installed on OpenWRT for the OpenWRT device to even detect the Z-wave USB stick, and you have to install them in this order.

kmod-usb-serial
kmod-usb-serial-cp210x

Thanks again for calling attention to this little AP, it looks much nicer on the shelf than a bunch of janky ESP32s strung together :wink: .

Also note that different sticks show up in different paths. Zooz 800 stick is /dev/ttyACM0 while a Homeseer stick is /dev/ttyUSB0, just for example.