RaZberry With Home Assistant

Published on Wed, 6 October, 2021 | 400 words
Tags: hardware raspberry pi zwave razberry configuration howto home assistant self-hosted

I’ve been using Home Assistant on a Raspberry Pi 3 for years now, and over time I’ve had my share of configuration gotchas that I’ve since forgotten. The hardest task was getting my RaZberry Z-Wave HAT running smoothly. The other day, the SD card on the Pi became corrupt and because I’d not been keeping backups of the card like the idiot I am (thankfully I’d been backing up the .homeassistant directory, so I didn’t need to reconfigure anything!) I needed to reinstall Home Assistant from scratch, which was productive in the long run because I’d been putting off upgrading to the latest version for some time now. I used the experience to document the gotchas that I encountered and I’m pleased to say that most of it was really simple and just worked. I followed the instructions on the Home Assistant website, but copied my old .homeassistant directory over and ran hass --script check_config (which checks and installs dependencies) before first boot, and everything seemed fine… except that darn z-wave!

So here’s how I installed the RaZberry HAT on a Raspberry Pi 3B running Home Assistant.

A Raspberry Pi with a Razberry HAT

The Pi 3 has built-in Bluetooth, and this will conflict with the serial interface that the RaZberry uses. To disable Bluetooth and enable the UART interface needed for the RaZberry to function, open /boot/config.txt and add the following lines at the bottom

dtoverlay=pi3-disable-bt
enable_uart=1

For some bizzare reason, the serial device that the RaZberry uses is configured to the group tty but with write-only access by this group. Home Assistant runs in tty, and can therefore only write to the z-wave network, not read from it. Worse, the permissions are set somewhere underneath the OS, so changing the permissions will only be effective until a reboot. Thankfully there is a workaround…

sudo systemctl mask serial-getty@ttyAMA0.service

This will reconfigure the serial interface for /dev/ttyAMA0 to be in the group dialout, but with read and write access. Home Assistant is also in group dialout, so doing this, and then rebooting the Pi, will solve this problem.

Once I’d completed both these steps, the z-wave network sprang into life and it all works just as it did before. Now to remove a load of nasty hacks I wrote for the old version that are no longer necessary due to the improved integrations of the new version!