Sunday, July 31, 2022

The Home Automation Rabbit-Hole

So, I was fortunate enough to find myself in the possession of a used Raspberry Pi 4 Model B (the 4GB model) last week, completely at random. I've had Raspberry Pi's before of course, some of my previous posts on this blog were about how I used them to run a local ad-blocking recursive DNS server using Pi-Hole. That is a great use case, because they can continue to run and be useful by blocking ads in your house. And this is where my Pi 3 has been for years, and I've mostly forgotten about it other than updating the block lists from time to time.

Enter the Pi4. Something I've been wanting to test is running my home automation on a Raspberry Pi.  There are a few different open source projects for home automation, with the main contenders being Home Assistant and OpenHAB. For me, OpenHAB being based on Java was reason enough for me to steer clear. It turns out that Home Assistant is awesome and very easy to set up and customize with a full web interface! Really, I'm quite impressed with the ecosystem of app integrations and add-on functionality that is provided by Home Assistant. Kudos to the team maintaining this project. They also offer a cloud service that can simplify the integration into the cloud with the aptly named, HomeAssistant Cloud, provided by the partner Nabu Casa. What excites me though, is they have full guides on building your own integration using AWS Developer APIs and Lambda functions, which has me very interested. Hopefully there will be some more blog posts where I share my experiences as I dive into those guides.

In the process of setting up Home Assistant, I've stumbled across several new open-source projects that have really just blown my mind. One of them is Node-RED, which is an amazing visual development tool for programing event and API based automations.  Node-RED has an entire community of integrations that you can use to configure complex flows. 

Another gem that has turned up is TailScale, which is an ingenious solution to the problem of setting up and configuring WireGuard among a larger set of devices. I've always been cobbling together VPNs and this is the cleanest implementation of a mesh VPN that I've ever seen. It also seems to be pretty secure in that the private keys never leave the devices and you get MFA through Google or Apple login integration. I'm still learning here but I hope to have yet another blog post about TailScale in the future. 

Let me know in the comments if about your experiences and lessons learned with home automation.