Disclosure: This post contains affiliate links. If you click through and make a purchase, I will earn a commission, at no additional cost to you. Read my full disclosure here.
In this guide, I'll break down the basics of Home Assistant and how it could potentially revolutionize your life. I'll also shed some light on why local and self-hosted software reigns supreme over cloud-based services. And to top it all off, I'll throw in a quick face-off between Home Assistant and its top competitors.
Just a heads-up, though. I'm not on the Home Assistant payroll, nor am I part of the Nabu Casa team. I haven't contributed to the development of Home Assistant, either. What I am, however, is a die-hard user—a fan if you will. I've been using Home Assistant for a good while now, and I reckon that puts me in a pretty good position to answer the burning question: What is Home Assistant, anyway?
In the simplest terms, Home Assistant is like the unsung superhero of your smart home setup. Picture it as a universal translator, where it's not exactly a hub in your smart home ecosystem, but a nifty piece of platform-agnostic software, with Python as its mother tongue. Thanks to Home Assistant, you can make different smart platforms that normally wouldn't give each other the time of day, work in perfect harmony. Imagine, Philips Hue, LIFX, Nanoleaf, and Xiaomi all dancing to the same beat, all under the command of Home Assistant's interface. Say goodbye to juggling multiple apps just to create that perfect cosy ambiance at night.
But that's just the tip of the iceberg. Apart from manual control, Home Assistant takes the term automation to a whole new level. We're not talking about bossing your voice assistant around. For instance, a Shelly motion sensor can fire up your Yeelight bulb, or your robot vacuum cleaner could spring into action the moment your house becomes an empty nest. If you've been on the fence about Home Assistant due to tales of complex YAML coding for automation, take heart. Recent updates have turned Home Assistant into a friendly neighbourhood code-whisperer, making the creation of automations a breeze.
If Home Assistant isn't a hub, where does it run?
The heart of your Home Assistant setup can be anything you've got on hand. For those just getting their feet wet in the world of home automation, the Raspberry Pi, particularly the Raspberry Pi 4 Model B, is a common starting point. This little beast has had some serious upgrades to its USB and networking capabilities over its predecessor, making it a solid choice for running Home Assistant. But don't fret if you don't have one because Home Assistant is pretty versatile – it can run on any hardware that can handle Docker containers.
To give you a slice of my own tech pie, I've got my Home Assistant, or Home Assistant Container to be more precise, humming away on an Unraid home server using Docker. But the beauty of this system is in its flexibility – you can also have the Home Assistant Operating System (we'll delve into that a bit later) running as a virtual machine. If you're not keen on shelling out any cash just yet, you can even repurpose some old tech gathering dust in your drawer. An old laptop or desktop can serve as a great Home Assistant system – if it can run Linux, it can run Home Assistant. So, don't be afraid to give that old gear a new lease on life.
Home Assistant rests not on a cloud
With Home Assistant running on your hardware and being connected to your network, it is truly yours, not like other home automation services that require you to use what they have chosen. To further solidify the true ownership of Home Assistant, it requires no cloud services. You can cut off Home Assistant from the outside world, and it will continue functioning. Similarly, development could cease today, and what you have already set up will continue working.
It's not just the hardware that is yours, but also the data stored on it. If not set up to do otherwise, Home Assistant will never call home. Your analytics data won't be sold to any shady entities. If you think of having your most valuable data exposed to the internet isn't a big deal, it's worth noting that there have been reports of cloud-backed security cameras suddenly broadcasting to random accounts, due to the developer's negligence.
There is a voluntary analytics program, you can opt in to. This tracks how many active installations of Home Assistant there are, and which integrations are being used. The data you share is not used to advertise products or show you targeted ads. It does help the developers of Home Assistant in making decisions on whether certain integrations should remain maintained or be phased out. As Home Assistant is free software, I do encourage new users to share their data in return for being able to use Home Assistant without paying a penny or having to view any ads.
What programming language is Home Assistant written in?
Home Assistant is written in the popular Python programming language and hosted on GitHub. Due to Python's popularity and the ever-increasing Home Assistant user base, there are many contributors contributing to the project. As of writing, there have been over 2,800 in total.
With that, we have answered the first part of the question “what is Home Assistant?”: It is hardware-agnostic, universal home automation software, written in Python and capable of being installed on most modern operating systems.
The case against cloud services
Smart devices which connect to the cloud do frequently have advantages such as an easier setup for the end-user and more control for the manufacturer. A device that connects to a remote server can also be tracked, which allows the manufacturer to gather data which in turn can be used to adjust their marketing, sales, or, in the worst-case scenario, be sold.
Having devices connected to cloud services not only introduces unnecessary security and privacy concerns, it also can make them useless if your internet cuts out. Only a few systems, such as Philips Hue, keep working when the internet goes out. Without an internet connection, most cloud-controlled devices will just stop working.
The cloud makes subject to economically driven decisions
Home Assistant will never go away. It is locally hosted and will only stop working once you pull the plug. No one working on Home Assistant has the power to disable any of your devices. And assuming you have a safe network, Home Assistant will always be securer because no information leaves your home (unless you allow it to).
Even if the development of Home Assistant were to cease, which is hopefully not happening anytime soon, you could continue using it, and, if you wanted to, continue developing. As open-source software, you can modify the underlying code however you want.
Because Home Assistant communicates through your local network and no data is sent to or received from the cloud, it will, in most cases, also be faster than any cloud services.
What can Home Assistant do?
The answer isn’t simple because Home Assistant can do so many things. In broad terms, there are three main functions Home Assistant adds to your smart home:
Home Assistant integrates and connects devices using different protocols and from different vendors.
A smart home isn't smart if nothing is automated, and Home Assistant provides you with a mighty automation engine.
While automations are nice, there is still a place for control and observation. Thankfully, Home Assistant has a slick web-based Dashboard and apps for mobile devices.
Home Assistant connects your devices, operating systems, and apps
The first thing you will want to do with Home Assistant, is to integrate all your existing devices. Currently, Home Assistant supports over 2,100 integrations from a broad variety of categories. When using Home Assistant, it doesn’t matter if you use Philips Hue Zigbee lights, Wi-Fi LED strip controllers from Yeelight, or lamps retrofitted with Z-Wave wall switches. Home Assistant is capable of communicating with each platform and sees them for what they are: lights.
Home Assistant has a powerful automation engine
Home Assistant doesn't just integrate and control devices, you can create automations. It gives you the ability to toggle a Wi-Fi connected bulb using a Zigbee motion sensor. It can send a notification to your Windows if your Android phone is low on battery. And it can dim your IKEA TRÅDFRI bulbs when watching a film on Plex.
The latter example is another case where Home Assistant can be much more useful than proprietary systems: It doesn't just integrate with physical devices, but also numerous applications and services. For example, you could limit Transmission's download speed whenever you are home, or someone is streaming from your Plex server. You can also recreate the “bitcoin is volatile” scene from Silicon Valley.
Home Assistant is your central Dashboard for everything
And finally, Home Assistant gives your smart home a pretty face. The Dashboard, previously called Lovelace UI, is modern, sleek, and easy to use. The web interface acts as a central dashboard for all of your devices. You can control devices from it, monitor sensors and other entities such as the weather, or your current solar production.
Is Home Assistant difficult?
Getting started with Home Assistant is as easy as buying a Raspberry Pi 4 Model B (minimum 2 GB of RAM, more recommended) and an SD card. For those interested, the Home Assistant website lists the suggested hardware. But be warned, once you get hooked on it, you will find a new self-hosted application you want to try daily. If you have some old hardware lying around at home, it is effortless to get Home Assistant running on a Linux installation.
Home Assistant will auto-discover devices such as Chromecasts and those from the TP-Link Kasa line. Devices that aren’t auto-discovered either have to be added using the web interface or with a few lines of code. But fear not, Home Assistant uses YAML, a very basic language. In most cases, you will be copying the example from the Home Assistant website and just entering the required information.
Home Assistant is expandable
Just like many other smart home hubs, Home Assistant is expandable. You can buy a cheap Z-Wave or Zigbee USB stick, plug it in, enable it in Home Assistant, and start pairing lightbulbs, sensors, or whathaveyou.
I use Zigbee devices from IKEA, Aqara, and Philips. Were I not to be using Home Assistant, I would need an individual hub from every manufacturer. But thanks to Home Assistant, I can connect them all to a single and central controller.
Once you really get into Home Assistant, you will soon realize that there is a whole community working on numerous unofficial add-ons, integrations, and cards for the Dashboard.
Home Assistant has no official support but a great community
As a free and open-source product, Home Assistant doesn’t have any official support channel or call centres you can ring up. But Home Assistant does have one of the friendliest and enthusiastic communities I have ever come across.
How to access Home Assistant outside the home?
Not everyone wants to keep everything local. There are valid reasons for wanting to access your Home Assistant from outside the home. And if you intend to use the Google Assistant or Amazon Alexa to control your devices, Home Assistant will also have to be exposed to the web.
In this scenario, you have two options: You can either set up internet access on your own using a service such as Duck DNS, or you can subscribe to Nabu Casa for US$6.50 per month. The founders of Home Assistant started Nabu Casa, and the money they earn from subscribers is reinvested into keeping the lights on and supporting development of their product.
What are the alternatives to Home Assistant?
Perhaps you’ve heard of one or the other alternatives to Home Assistant. All the following applications serve a similar purpose in the smart home. Some of these services use the cloud and others keep all of your data locally. There are pros and cons to each approach.
SmartThings – Same goal, different approach
SmartThings is a subsidiary of Samsung Electronics and their primary products include a free SmartThings app, a SmartThings Hub, as well as various sensors and smart devices. Different to Home Assistant and other alternatives, SmartThings is not an open-source project. It is also reliant on cloud services, and won't function without an internet connection.
In late 2020, Samsung announced that SmartThings would be pivoting entirely into software. Aeotec now sells a “Works as a SmartThings Hub” in Australia, Europe, and North America.
Homebridge – Bringing HomeKit support where there is none
Homebridge allows you to integrate with smart home devices that do not natively support HomeKit. Examples include Nest Cameras from Google, UniFi Protect, Ring, and Belkin Wemo. Homebridge can, similarly to Home Assistant, be run from a Raspberry Pi and many other operating systems. This project is only of interest to users of Apple’s HomeKit (which I am not).
Although Homebridge does have a web-based interface, it isn't intended to be the equivalent of the Home Assistant Dashboard. It does let you see the status of your various devices and plugins, but the main interface is Apple's Home app.
Hubitat – A closed-source alternative
Hubitat, which is closed-source but locally controlled, was created by ex-developers of SmartThings. Hubitat requires a Hubitat Elevation® hub (~US$150) and can’t be installed on generic hardware. It appears to be a suitable alternative if you find Home Assistant to be too intimidating, though I can't claim to have any personal experience.
Domoticz – Smaller community, fewer releases
Domoticz first appeared around the same time as Home Assistant and was also founded by a Dutchman. The similarities don't stop there. Domoticz is free and open-source software and can run on various systems. Each commit to the code is checked and reviewed by the founder, and over 330 developers have contributed in one way or the other.
I have no experience using Domoticz, but from studying screenshots and videos, it looks to be more complicated than Home Assistant to set up. All in all, Home Assistant is currently the stronger platform with more frequent releases, a bigger user base, and many more contributors. Domoticz is primarily written in C++, as opposed to Python.
openHAB – A different approach to automations
openHAB is another free and open-source application which boasts numerous integrations (or add-ons as they call them). It is developed in the Java programming language and runs on many devices and operating systems. Of the applications mentioned, it is the most comparable to Home Assistant.
One big difference to the other alternatives I have listed is that openHAB does not use its own automation engine. Instead, it relies on Blockly, a visual programming editor developed by Google. This does have the advantage of not having to reinvent the wheel, when something that does the job already exists.
As with Domoticz, I have not tested openHAB. Similarly, stable releases aren't as frequent as Home Assistant, and it also has fewer contributors.
Frequently asked questions
In the simplest terms, Home Assistant is a universal translator, where it's not exactly a hub in your smart home ecosystem, but a nifty piece of platform-agnostic software, written in Python. Thanks to Home Assistant, you can make different smart platforms that normally wouldn't give each other the time of day, work in perfect harmony. Imagine, Philips Hue, LIFX, Nanoleaf, Xiaomi, and more all commanded by Home Assistant's interface. Apart from manual control, Home Assistant takes the term automation to a whole new level. For instance, a Shelly motion sensor can fire up your Yeelight bulb, or your robot vacuum cleaner could spring into action the moment your house becomes an empty nest.
The central component of a Home Assistant setup can be any available device. For beginners in home automation, a commonly used device is the Raspberry Pi, specifically the Raspberry Pi 4 Model B. This device has been significantly upgraded in terms of its USB and networking capabilities compared to older models, making it a reliable option for running Home Assistant. However, if you do not have a Raspberry Pi, Home Assistant can also run on any hardware that supports Docker containers.
Home Assistant operates on user-owned hardware and is connected to the user's personal network, unlike other home automation services that necessitate the use of pre-selected hardware. Home Assistant does not rely on cloud services for its operation, allowing it to function independently even when disconnected from external networks. Even if future development were to cease, the existing setup would continue to function without interruption.
Home Assistant is coded in the Python programming language and is available on GitHub. Given the widespread use of Python and the growing Home Assistant user community, numerous contributors have made additions to the project. To date, the project has received over 2,800 contributions.
Devices connected to the cloud often offer benefits such as simplified setup for the user and increased control for the manufacturer. These devices can be tracked when connected to a remote server, enabling manufacturers to collect data for marketing, sales adjustment, or potentially for sale in extreme circumstances.
However, such cloud-connected devices can also pose security and privacy risks, and may become inoperative if the internet connection is lost. Some systems, like Philips Hue, remain functional without the internet, but most devices reliant on cloud control cease to work without an internet connection.
Home Assistant may initially present a higher learning curve compared to its paid counterparts. However, once the basic understanding is established, it offers more robust features and a wider range of integrations. Recent upgrades have enhanced its user-friendliness. A number of integrations can now be set up using the web interface, and scripts and automations have simplified editors. Home Assistant can automatically detect devices like Chromecasts and those from the TP-Link Kasa range. Devices not auto-discovered can be added via the web interface or with a few lines of code. Home Assistant employs YAML, a relatively simple language. Typically, users will replicate examples from the Home Assistant website and input the necessary information.
There are two alternatives for internet access: one is to set up independently using services like Duck DNS, and the other is to subscribe to Nabu Casa for a monthly fee of US$6.50. Nabu Casa was initiated by the founders of Home Assistant, and the subscription fee is used for operational costs and further product development.
About Liam Alexander Colman
Liam Alexander Colmanis an experienced Home Assistant user who has been utilizing the platform for a variety of projects over an extended period. His journey began with a Raspberry Pi, which quickly grew to three Raspberry Pis and eventually a full-fledged server. Liam's current operating system of choice is Unraid, with Home Assistant comfortably running in a Docker container. With a deep understanding of the intricacies of Home Assistant, Liam has an impressive setup, consisting of various Zigbee devices, and seamless integrations with existing products such as his Android TV box. For those interested in learning more about Liam's experience with Home Assistant, he shares his insights on how he first started using the platform and his subsequent journey.