Using a Vera Edge as a network-attached zwave device (skipping the vera software)

Since february or so I’m using multiple rasbperry pi setup the same as a vera with ser2net/socat and home assistant in docker. The Pi’s are in multiple places in the house and I have 3 small-ish networks instead of 1 huge one. The benefit is that everything is direct connection to a stick. I have around 20-30ms delay from pressing a button on the interface and the device doing whatever it should do. Each pi has a homeassistant with zwave that exports data via mqtt to a central homeassistant so working on one network does not bring all the home zwave down.

Having huge delays might be an indicator of a bad mesh, weird neighbour configuration or devices that spam the network all the time. For instance if you have a few dimmers and you set it to repot power/level/etc every 10 seconds you get a lot not useful messages… I avoided all that by using pi’s with sticks (since I use them for bluetooth scanning and other stuff i went with raspberry pi’s but i first started with a couple of vera edge which i got very cheap and they worked quite well). Moving from one vera as a zwave “slave” with one network to the same devices split on 3 networks made a huge difference - response times under 100ms unless i turn on/off everything in the house, and even then it takes a couple of seconds max…

If the stick is laggy

  • add a few repeaters, or move them somewhere else
  • re-add all your devices
  • configure report / polling time to do minimal work
  • try to move an ac powered zwave device closer to the stick and do a heal a couple of times with 1-2 hours between
  • look at home assistant logs to see how much zwave traffic is there - if there is constant large level of “noise” - reconfigure / remove devices…
  • split network in multiple networks…

I’ve seen networks with 50+ devices that worked very well crumble to a halt almost after adding a device that did something weird… The most extreme solution is to add all your devices again, one by one, until the network becomes bad, to identify the source… and always add closer devices first, and after adding one device to a heal/test and wait 20-30 minutes then test again… It’s time consuming but well worth it in the long run…

Great advice! thank you. Plenty for me to try through here.

What is the feasibility of creating a HASS.IO add-on that could automate all of the configuration steps?

Super neat work! I assume the same could be done for Zigbee support?

I assume that there is some factory reset that I can do to my new Vera Plus if this hack doesn’t work?

Keith

Hello, I am new to HA (and home automation in general) I have got a veraplus that I found disappointing. If I understood correctly, thanks to the script I can use the veraplus just as if I had a z-wave stick to my rasberry Pi (adding devices, setting them up in HA, …), can we use the zigbee as well which would allow me to use Xiaomi mi sensors that are not supported by vera

Thanks
Nicolas

I think support for zigbee can be added the same way as zwave, just need to modify the docker image a little bit.

I tinkered with this and indeed I did this on a vera plus and managed to get my vera plus’s zigbee to show up on Home Assistant first shot. The Zigbee port on the vera is ttyS2 and its baud rate is 57600. It seems like the bellows library with the zigpy/ zha component support many more devices than the vera.

It also took some edits of the /etc/init.d folder to make the vera come back to this state after reboot.
My recommendation is to install nano and then add “exit” on the second line of the cmh-ra, lighttpd, and add 2 lines ’ /usr/sbin/ser2net -C “7676:raw:0:/dev/ttyS):115200 8DATABITS NONE 1STOPBIT” ’ (edit for your particular port and baud rate) followed by “exit 0”. Also comment out every line of /etc/crontabs/root. And voila…

Edit: forgot to mention, the vera uses a silabs Ember chip so you need to use the EZSP protocol.

2 Likes

I wrote a script to “nuke the vera” and turn a vera plus into a ser2net server for both zwave and zigbee:

1 Like

Thanks for this information, @rafale77!

I’ve been wanting to use the Zigbee chip with Home Assistant, but still use Vera for Z-Wave and all of its other functions. I was able to do some modifications based on your information, and have succeeded in doing so. Here’s what I did:

  1. Install ser2net:
    opkg install ser2net

  2. Modify /usr/bin/Start_LuaUPnP.sh:
    At about line 14, add:

mv /dev/ttyS2 /dev/ttyS3
/usr/sbin/ser2net -C "3300:raw:0:/dev/ttyS3:57600 8DATABITS NONE 1STOPBIT"
  1. Reboot

  2. On Home Assistant, run:
    /usr/bin/socat -d -d pty,link=/dev/zbvera,ignoreeof,user=homeassistant,group=tty,mode=777 TCP:192.168.20.112:3300

This does permanently display " Zigbee : Failed To Start" at the top of the Vera interface, but doesn’t seem to have any other negative impacts.

1 Like

If you only want zigbee, it seems you don’t even need to socat the HA end.

I added the EZSP Manually, and set the path to socket://IP:PORT and bam… one remote zigbee chrome_2020-05-27_14-08-41

2 Likes

This is interesting. I had no idea it go create a socket an bind directly. Thanks for this!

The zigbee docs in home assistant mentioned the WifiZiGate had to be setup like that, so I tried it with another controller and it worked.

It’s just too bad that the zha integration doesn’t allow us to change the port without deleting and recreating the integration, making a mess with all device and entity names.

Edit: Managed to do it by going into the .storage/core.config_entries file and changed the path of the integration there. I can now disable socat!

Side effect is that at reboot I get a CRC error from bellows at every restart of Home Assistant. It could be because the socket is not yet ready when the library tries to call it. Or it could be that the port change is causing something else…

I have been following the steps/scripts in this guide with good success. @rafale77’s nuke vera script worked well.

I am attempting to do vera plus --> ser2net --> wifi --> home server --> socat --> zwave2mqtt (docker).

I would like to get the z wave network key from the vera plus. I found a separate thread that indicated it was possible, but wasn’t public knowledge. Can anyone point me in the right direction (@rafale77? :D)?

Rafale is very active here:

Thanks much. Was able to find what I needed.

Blockquote
I would like to get the z wave network key from the vera plus

I was able to use Vera as a “tcp dongle” (ser2net + Perle TruePort) with Z-wave PC Controller and it shows network keys at “Security Test Schema” window. Didn’t tried the key though.

Does anybody use ser2net + socat with HA for a long time? Is it stable enough? Does it make reconnection on network fail?

I’m considering to completely move to HA from Vera (or at least eliminate Vera’s software) and for now there are two options I see.

  1. Keep Vera as a “tcp dongle” with ser2net + socat or similar approach. This approach makes me worry from the network stability standpoint.
  2. Run “Shift controller” from Vera to UZB dongle with Z-Wave PC Controller by connecting to Vera via ser2net + TruePort. But as far as I understand this will leave my dongle’s id as is and this can cause some trobbles as some z-wave devices expect the controller has to have #1 node id.

Any thoughts and advice would be appreciated.