In this article...
In our last blog post, I introduced you to our Smart RV. As much as I enjoy integrating technology into our RV - it's more than an idle hobby. The goal is to make our RV more efficient, more comfortable and more secure.
It's not really about adding brand new capabilities - our RV, like most, already has lights, a water heater, air conditioning, fridge, etc. Instead, it's about making these capabilities more usable.
Specifically, I want:
- Remote monitoring and control of the devices - e.g. turn off the bathroom light from bed, or turning the heating on before we get home
- Simple automations - e.g. turn on the outside light at sunset, or turn off all the lights at once
- Interconnected device automations - e.g. switch the fridge to electric mode when the batteries are over 90%
The key to all of this is having a central place to integrate all of the devices. There are a plethora of these out there already - from hardware hubs like Samsung SmartThings Hub or Ikea Trådfri Gateway to the cloud offerings like Google Nest, Apple HomeKit or Amazon Alexa.
We chose to go with a lesser-known option: Home Assistant.
Why Home Assistant?
Home Assistant is a little different to most other smart home or home automation hubs. It's software that you run on your own computer hardware.
Home Assistant is open source software - developed under the Apache 2.0 license which means it's completely free for anyone to download, run, modify and distribute, including for private and commercial uses. The project was started in 2013 with a strong focus on privacy and local control - in other words, your data is your data. It's written in Python, so if you have the skills you can contribute back as well.
The project has three main objectives:
- Observe - keep track of all your devices, and record their actions and history;
- Control - control all your devices from a single interface;
- Automate - create rules to control your devices and allow them to work together.
In order to do this, Home Assistant needs to integrate with as many devices as possible. As I write this in September 2020, it has built-in integrations for more than 1,600 different Internet of Things (IoT) devices and systems. This includes everything from lights, weather stations, and smart plugs to voice assistants (Google Assistant, Apple HomeKit and Amazon Alexa are all supported) and media players.
It's easy to see why I was drawn to Home Assistant. It's non-proprietary open-source software that integrates with a vast array of devices - plus I can freely build my own custom integrations too. Better yet, it doesn't lock me in to any one technology ecosystem, and I retain full control over my data.
Local vs cloud control
Let's touch on the local-control aspect for a minute, and discuss exactly what that means. Many commercial smart devices (e.g. the Google Nest thermostat) are cloud-controlled. In many ways, this is a good thing for most people.
For example, it makes the setup incredibly easy, all the smart logic can run in the cloud so the local device doesn't need to be as powerful, and it allows remote control from anywhere in the world.
So what's the problem? As I see it, there are two major issues.
First, what happens when you don't have internet connectivity? The simple answer is: things stop working properly.
While in a standard home, this may be relatively rare, it's more common in our RV. We don't often camp somewhere with no internet connectivity (it makes working from the road much harder), but it's not unusual for us to drive through or stop somewhere with no signal. It makes sense for us not to rely on having an internet connection.
Second, is the issue of data security and privacy. Maybe you don't think your smart devices are collecting any data that you care about - but how can you be sure? Or maybe you trust the company that makes the device - but what if they get hacked? Then there's the simple aspect of control - if I store the data, I can do anything I want with it.
IoT security and privacy is a whole new topic I'll look at in a future blog post, but for the purposes of this discussion, it's sufficient to say that I am much happier keeping all my data (and control) in a system over which I have full-control.
How do we run Home Assistant?
Since Home Assistant is just software written in Python, there are numerous ways to install it, but there are just two ways supported by the project:
It's worth noting that whichever path you take, you'll probably want to make sure you have a WiFi router in your RV to provide 24/7 WiFi coverage (even if you don't have internet connectivity, the local WiFi network will still be there). Look out for an upcoming blog post on what we use.
Home Assistant OS
This is the easiest way to get started, and is the recommended route for anyone new to Home Assistant. Honestly, if you're just getting started, this would be the way I'd suggest you do it. The idea is that you have a dedicated computer just for Home Assistant - it takes care of everything for you.
Does that sound a little extreme? Dedicating an entire computer just to Home Assistant?!
Don't worry, it's not as bad as it sounds. Despite being so powerful, Home Assistant is remarkably lightweight - so the computer you run it on doesn't need to be very powerful.
In fact, they recommend using a Raspberry Pi 3 Model B or Raspberry Pi 3 Model B+. You can pick one of these up for less than $40 standalone, or just a little bit more to get a full kit. These remarkable devices are deceptively powerful, and you need only add a microSD card to get up and running.
If you want a Raspberry Pi but even more power, consider the new Raspberry Pi 4 with a quad-core 1.5GHz processor and 8GB of RAM - insane specs for the price!
If this is the path you recommend going down, then simply follow Home Assistant's fantastic installation guide and you'll be up and running in no time.
Home Assistant Container
We chose to use the other supported installation method - running Home Assistant as a Docker container. This means running Home Assistant alongside other software on slightly more powerful hardware. We chose this because:
- We have other software that runs 24/7 in our RV, so it made sense to consolidate everything onto one machine. This includes media serving (Plex), data storage (MySQL and InfluxDB), monitoring (Grafana) and Mac OS Time Machine backups. More on those in future blog posts!
- While Home Assistant can run on a Raspberry Pi, it will run faster and more smoothly on more powerful hardware - especially as you integrate more devices and add more automations.
We run Home Assistant as a Docker container on an 8th generation Intel NUC, specifically the Intel NUC8i3BEK. This is a tiny computer - about 4.5" x 4.5" x 2" - yet it packs a punch!
The one we bought doesn't come with a hard drive or memory, so we added a Samsung 970 EVO 250GB NVMe m.2 SSD (the 250GB is no longer available, but the 500GB version is now almost the same price as the one we bought) and 8GB (2x 4GB) HyperX DDR4 RAM.
Recently, I connected a SanDisk 2TB Extreme Portable SSD that I had spare to add some extra storage for my media and time machine backups. An alternative would be to add something like the Sabrent 2TB Rocket NVMe SSD as internal storage.
For running Home Assistant and the other services we use, this thing flies!
Better yet, we can power it from 12V - so we don't need the inverter on all the time. The Intel NUC itself runs on 19V DC, so using a simple DC step-up boost converter, we can convert 12V to 19V. The converter we use is no longer available, but there are other options out there that should work exactly the same.
While this isn't officially supported by Intel (shhh!), ours has been running 24/7 for almost 2 years without issue at this point. We did have a hardware issue a couple of months ago with the Intel NUC itself, but this was a motherboard problem and nothing to do with the power supply or components we added - they replaced the entire NUC as part of the RMA process.
Power draw is incredibly low - in a steady state, it seems to be drawing around 5W. Not bad considering everything it's doing!
Home Assistant review
So, does it work? Yes!
We've had Home Assistant running for almost 2 years, and so many new features and integrations have been added in that time - a new version is typically released every 3 weeks! Not only as Home Assistant improved, but I've learned a lot as well - what works and what doesn't, and how best to configure things in an RV.
I'll be sharing all that in upcoming blog posts as I step through each of our device integrations in detail - looking at both the hardware and software we've used. We have also worked hard to preserve the functions of existing switches and buttons in the RV so we're not forced to use our phones to turn on the lights - this isn't always as easy as you might think, but I'll show you how.
It's no exaggeration to say that without Home Assistant, we wouldn't have a smart RV. It's at the center of everything we do - if a smart device can't integrate with Home Assistant, it's not much use to us!
Home Assistant's focus on local-control is perfectly aligned for our use case where we can't rely on having an internet connection 24/7. While there are certain things that do need an internet connection to work (e.g. our Google Nest Mini for voice control), losing cell signal doesn't stop us using anything in the RV.