Skip to main content

Introduction to Home Assistant

Home Assistant is an open-source home automation platform. It’s a piece of software that runs on a computer in your house, and connects to all your various home tech devices, allowing you to remote control them and create automation rules. It was started in 2014, and by 2016 it seemed to be the fastest-growing DIY home automation platform (by far).

I adopted it in late 2015, replacing SmartThings as my main automation controller, and that was without a doubt one of the best decisions I’ve made in the ~5 years I’ve been experimenting with home automation tech. However, it’s not for everyone. I’m going to give you a quick (wound up being a bit long, but worth it I promise!) primer on Home Assistant, which may help you decide if you want to adopt it or stick with more consumer-friendly options like SmartThings, Alexa, or Google Home.

In this article we’re going to focus on what Home Assistant is, and why it exists. I plan on having another series, Home Assistant 101, where we’ll actually talk in more detail about how to use it.

To really understand why Home Assistant exists in the first place, you’re going to need to get familiar with the landscape of smart home tech, specifically the different communication technologies out there…so grab a drink and settle in.

How smart home devices communicate

Let’s take a bit of a detour away from Home Assistant specifically, and take a broader look at the general principles involved with smart home tech.

The methods used for “smart home” devices to talk to each other vary wildly — this is one of the big reasons the home automation market is so fractured and difficult to understand. If you can grasp this, though, you begin to see the Matrix and can really start to unravel how to tackle this stuff.

There are two layers, as I think about them, to consider: the networking tech (the physical bits and low-level software that allow devices to actually exchange data) and the communication protocol (the manner in which they exchange data and whether it is meaningful). It’s like human communication…the “networking technology” is the medium by which we communicate (spoken word, written word) and the “protocol” is the language we use. Me and a Chinese guy have the same “technology” in order to communicate with spoken language (a mouth and ears), but if he doesn’t speak English and I don’t speak Mandarin we aren’t going to be swapping Kung Pao Chicken recipes.

Networking Technologies

There are four main hardware technologies typically involved in home automation: TCP/IP network (a.k.a. Ethernet and WiFi), Z-Wave, Zigbee, and Bluetooth. Each of these technologies requires a specific kind of hardware capability and low-level software understanding to enable their various protocols to work — that is, to enable devices to physically exchange information with each other. Your typical computer has WiFi, right? Often Bluetooth too. What it doesn’t have is Z-Wave or Zigbee radios built in. Those take some extra hardware — just a USB dongle, usually — and additional software to drive it.

The nuances of the different technologies isn’t something we’re going to get into here; the most important thing to understand is that they’re different, and whenever you are going to start mixing and matching devices from different brands, you have to know your system’s capabilities.

Everyone has a WiFi network at home, so this type of smart device shopping is easy — if you buy a WiFi-enabled device, you’ve already cleared the first hurdle because you know you already have the infrastructure necessary to communicate with it.

Great, you say…so why doesn’t everyone just use WiFi for everything? Well, the short answer is that it’s not always the best tool for the job. The longer answer involves reliability, network congestion, processing overhead, power requirements…things we’re just not going to get into here. But suffice to say that for the average person dabbling in smart home tech, WiFi is fine. If you’re going to completely automate a large house, down to every last switch, lamp, TV, etc…you don’t want 200+ devices on your WiFi.

A lot of branded systems have a blend — Phillips Hue, for example, uses Zigbee to connect its lights and other devices to its hub, and then the hub plugs into your standard home TCP/IP network so that your phone and other devices can interact with the lights (because remember your phone, by itself, has no idea what Zigbee is). In this way, hubs act as “translators” between the more common TCP/IP network and the specialized networks used for home automation.

XKCD: Standards

Communication Protocols

This is where it’s really the wild west. Just because you have two WiFi smart home devices in no way guarantees they will be able to communicate — it’s like me and the Chinese guy.

Because nearly every brand makes their own protocol within their own ecosystem, they also have to provide you with their own specialized way to control those devices — and now we experience what I call The App Plague.

The App Plague on my own phone: too many smart home apps!

The App Plague is the proliferation of dozens — no, hundreds — of smart home apps on your phone, each brand-specific, each a little island of terribleness. Every time you buy a new brand of smart plug, or smart bulb, or switch, or garage door opener, or whatever, you often have to download that manufacturer’s app to set it up, remote control it, and create timers and other automation rules. They’re usually terribly designed, clunky, and not fun to use. I have over a dozen of these apps, many of which I only downloaded because of one or two devices that needed them.

This is where hubs and consumer platforms like SmartThings, Apple Home, Amazon Alexa and Google Home start to help out. They attempt to be the arbitrator and translator for all the different protocols. So some company making smart plugs only has to worry about making their devices talk to the network in a way that, for example, Alexa’s framework understands, rather than dozens or hundreds of other branded protocols. It’s a hub-and-spoke model.

And this model is somewhat new to the smart home scene…the alternative is dozens of independent, completely closed-off systems where you’re pretty much stuck buying one brand’s products, because they won’t work with anyone else. That’s where home automation tech had been languishing for about two decades — and by virtue of being closed systems, they were hideously expensive and innovation was stagnant.

So now we have these big four emerging platforms that can act as device hubs to varying degrees — Alexa, Google Home, Apple Home(kit), and SmartThings — which has helped the market explode and accelerated innovation. This sounds great, and it is great if you’re fine sticking with one of the big branded platforms. But the downside is that they don’t really work together. And if you pick one of those to sit at the top of your home automation food chain, you wind up being constrained by the capabilities of that one system, which — let’s face it — aren’t going to always satisfy the more tech-savvy among us. None of them will completely save you from The App Plague.

Home Assistant: The Hub of Hubs

This is where Home Assistant comes in. Through its extreme flexibility and large community-driven development efforts, it can talk to pretty much anything. It can talk to individual devices directly, and it can also be a hub of hubs to help tie different ecosystems together (just see my own smart home diagram as an example).

In Home Assistant, once everything is connected to it, a light is a light…whether it’s a Phillips Hue light bulb, a Z-Wave wall switch, or a Zigbee lamp dimmer plug module. While it takes some work to setup, it ultimately makes the mess of home automation protocols almost completely transparent.

Home Assistant’s capability to speak so many different protocols means you don’t have to remember whether you go to your Hue app or your Kasa app to set up the timer rules for the lamps in your bedroom…you just do it from Home Assistant, and it controls all. It means you don’t have to worry about getting a Hue brand motion sensor to control the Hue lights…get any motion sensor that Home Assistant can talk to (meaning, pretty much any of them), and you can use it to trigger automations for any of your connected devices.

You’ll only need to deal with App Plague apps when you first buy some devices…after they’re initialized, you integrate them into HA and (hopefully) never touch their terrible apps again.

TLC: Total Local Control

Something we’ve glossed over up to this point is that most branded consumer solutions — including SmartThings, Alexa, and Google Home — rely heavily on remote processing. In other words…The Cloud. When you issue a command through one of those platforms, it is very often going up to the company’s servers to process and decide what to do. This means a certain degree of awareness exists on the part of Samsung, Amazon, and Google with regard to what devices are in your home.

Now let’s be real here…they’re not actually spying on what light switches you have turned on. But even for someone as connected as I am, relying on a Samsung server somewhere to determine that my bedside lamp should turn on starts to feel just a little…creepy.

And even if you don’t find it a little creepy, there are performance considerations: when even basic processing has to be handled remotely, that means it is dependent on your Internet connection. If things are laggy — take a totally hypothetical scenario where your kids are watching Rudolph the Red Nosed Reindeer for the 17th time on Netflix while your wife simultaneously streams some awful Hallmark holiday romance movie and the Xbox is downloading a 14 GB patch (again) because no one releases games that are actually done anymore — your home automation will be affected. And no one wants to walk into a dark hallway, expecting the motion sensor to turn on the light, and have to wait 4-5 seconds. FIVE SECONDS. I mean, would YOU want to live in that world?

Conversely, Home Assistant all runs locally — that means, right on your network, on your computer. Not on Google’s computer. Not on Amazon’s computer. Yours. When a motion sensor detects motion and a decision has to be made about whether to turn on a light, Home Assistant does not have to go check with the Samsung mothership first. Also, if your internet goes down, most of your stuff will still work.

Now, to be realistic, unless you’re hyper paranoid and lock everything down, even with a Home Assistant installation as the brains of your smart home you’re still going to probably be involved with someone’s cloud. I have a bunch of Amazon Echos, for example; when I ask one of them to turn on the lights, they have to send my voice recording up to Amazon to figure out what I said. Then it comes back down to my local network, and sends out a request to turn on the lights…but Home Assistant, running locally, is what actually decides to turn them on. The core of my smart home is not dependent on the cloud.

Open source means open to scrutiny

Since Home Assistant is open source, it’s not a black box. People know exactly what’s in it. You can go and look at literally every single line of code that exists in Home Assistant and, with the right skillset, determine exactly how it behaves.

And even though it’s unlikely you will ever do that, you can rest easier knowing that hundreds or thousands of people actually have, and do so on an ongoing basis. There are no secrets, there are no back doors, there’s no single corporate entity with its own interests limiting your choices or controlling what you can do.

So…should you do it?

Let’s be clear: Home Assistant is awesome, but it’s not for everyone. It’s not accessible for your average consumer; it still requires some tech savvy, albeit far less than these things used to. You have to be willing to tinker, read documentation and online forums sometimes, and accept that sometimes things might not work right.

Home Assistant IS NOT for people who…

  • Don’t know what an IP address is
  • Look at you like you’re an alien when you say “flash an image onto an SD card”
  • Think that tapping the phone screen harder will REALLY make it listen to you

Home Assistant IS for people who…

  • Know their way around a WiFi router enough to configure a custom SSID and password, and maybe do some port forwarding
  • Have upgraded the components of a computer before, or at least installed an operating system from scratch
  • Want to have total control over their smart home and are willing to tinker a little bit to get it

What you need to get started

All you really need to get going is a computer and a little patience.

It’s not quite like a normal app that you just download and click on an icon run, though; it’s Python-based and it runs a mini web server, so there’s a bit more involved, and the instructions will vary depending on what type of operating system (Windows, Mac, Linux) you’re installing it on. If you’ve ever tinkered around as a web developer you can probably get this running on any computer you have.

Fortunately, for everyone else that doesn’t want to become a Python developer, there is an easy way to get it running if you’re willing to do what most people do — buy a Raspberry Pi 3 (or newer) for around $50 and use what’s called the Hass.io installer. Using that (strongly recommended), you essentially use your main computer to drop a complete Linux OS image (with HA preinstalled) onto a micro SD card, which you then pop into your Raspberry Pi — and it’s good to go. Raspberry Pi’s are great little things…cheap but reasonably powerful computers that are designed to run particular flavors of Linux. I’d recommend a kit like this one that gives you a case, power adapter, microSD card and USB adapter — everything you’ll need to get going.

If the idea of running a Linux server sounds scary, don’t worry about it — with Hass.io, they’ve made it super easy (comparatively speaking) and you don’t really have to know much (or anything) about managing a Linux server. Hass.io makes your Raspberry Pi with HASS a little closer to an “off the shelf”-style appliance, kind of like your home wifi router in some ways — it boots up right into HA, updates can be installed with a couple clicks through the web UI, and unless you get into some more advanced stuff you’ll never have to deal directly with the underlying Linux operating system. You just pop in your SD card and you’re ready to start adding smart home devices to HA.

Just the beginning

If you’ve read this far and you’re still with me (and conscious…holy moly did this get long), you’re probably thinking that Home Assistant might be something you want to try. If so, make sure you pop over to the official Home Assistant Documentation and their very helpful Community Forums, where there are loads of helpful people passionate about HA and smart home tech.

Believe it or not, we’ve just scratched the surface on HA with this nearly 2600 word article; be sure to comment below if you decide to jump in with Home Assistant, because I need your input on what to cover next!

7 thoughts to “Introduction to Home Assistant”

  1. Great write up on the current state of home automation. So far I have been running all of my smart home devices over WiFi (various Nest hardware, Amazon Echoes, and Lifx bulbs among several others) and am starting to feel the network pains.
    Aside from some IFTTT recipes, completely agree with you that the numerous companion apps really have taken the fun out almost any smart home vision/execution. Will certainly give Home Assistant on a Raspberry Pi a try.

    1. Hi Antonio — Could you help me understand in what context you mean? Are you asking how does HomeKit compare to Google Home and Alexa when it comes to security and architecture, or user features, or something else?

Leave a Reply

Your email address will not be published. Required fields are marked *