The Zooz stick and the Ezlo share a common Z-Wave chipset. In fact when I added the Ezlo to ZWave-JS it shows up with a product code of ZST10-700, which I believe is the Zooz stick.
So, good news! I have both Z-Wave and Zigbee working in home assistant now, bypassing all the Ezlo software. The home assistant Zigbee integration connects directly to the Ezlo, and for Z-Wave I have ZWave-JS as an intermediary - but that's hass' recommended configuration anyway.
I think I've figured out some initial stability issues I was having as a result of not setting socat up quite right, but don't quote me on that yet, and for some reason the status of the Z-Wave controller shows up as 'Dead' but it doesn't seem to matter? Not sure what that's about. Also if I start hass before the Ezlo is ready then it will never successfully connect - you have to run socat on the Ezlo first, then start Home Assistant. Other than that it seems to work well. Zigbee in particular is more stable and responsive in this configuration than it was on the sonoff zigbee bridge I was previously using in my setup.
Here's how I did all this:
- Using the instructions on the openWrt site, compile socat for the Allwinner H3 SoC (or, if you're feeling trusting, download the binary I already compiled).
- Copy the .ipk to the Ezlo using whatever method you prefer. I used
scp
. Unfortunately you can't download the binary directly to the Ezlo because it doesn't support SSL and I don't have anywhere I can share the file from that doesn't enforce secure connections. - Install it:
opkg install socat_1.7.3.3-1_arm_cortex-a7_neon-vfpv4.ipk
- Kill the running ezlo processes: (One single error at the end about a process that can't be killed because it doesn't exist is expected).
ps | grep "/ha-" | cut -b1-5 | xargs -t kill
- Share the Z-Wave and Zigbee radios over the network using socat:
socat /dev/ttyS1,raw,echo=0 tcp-listen:3333,reuseaddr,keepalive,fork &
socat /dev/ttyS2,raw,echo=0 tcp-listen:3300,reuseaddr,keepalive,fork &
- In Z-Wave JS' ZWave settings under serial port, ignore the choices in the dropdown menu and manually enter
tcp://192.168.0.100:3333
(change the IP to that of your Ezlo) - In Home Assistant's Zigbee integration select a radio type of EZSP and for the serial port enter
socket://192.168.0.100:3300
- ...
- Profit
If you reboot the Ezlo it returns to its stock setup. I think my plan is to write a little script that checks whether the Ezlo processes are running and, if so, kills them and starts socat, then run that script as a cronjob. @rafale77, do you have any advice on a better approach based on your Nuke-Vera work? I don't want to nuke the Ezlo and do anything irreversible necessarily, but I'm also a little concerned that my plan might be leaving the thing functional enough to one day download a firmware update that breaks what I'm doing.
If it's helpful to anyone, I also compiled binaries for ser2net (I never got it to work) and Nano.