HomeAssistant: Consolidating my smart home ecosystem under one roof
Updated: Sep 8, 2020
My home has always been a playground for IoT devices. I have over 90 assigned IP addresses at any given time on my network, with products from over a dozen different ecosystems. Getting these devices to work together has always been a challenge. IFTTT was a godsend, enabling devices across manufacturers to talk to each other through the web.
However, IFTTT has its limitations. Complex rules where there are AND or nested IF clauses cannot be done (eg "If it is 11AM on a Tuesday and Freddy is out of the house, then you can vacuum the living room"). Further, IFTTT doesn't have batch commands. When I leave the house, over a dozen devices activate to put the house in an "away" mode, and with IFTTT I need to create more than a dozen scripts, one for each device. IFTTT is a great beginner tool, but I needed something far more powerful.
HomeAssistant is a powerful open source tool with an active community built to allow users to get more granular control of their homes. It can run in docker containers or a dedicated Raspberry Pi (my go-to solution) and has the added benefit of not only running logic locally, but also local (rather than cloud) communication with devices from many brands.
Initial setup is pretty straightforward, and the community even offers pre-installed SD card images to choose from. Configuration, however is substantially more complex. Although the team at HomeAssistant has made some major strides in usability, and discovery and general user-friendliness, they have focused these efforts on the big brands (as they should), and most of the more obscure brands require manual integration through editing text configuration files.
What is even more exciting is the unofficial support for services built up by the community. For example, I am a big fan of Wyze's inexpensive Wyze Sense Kits, but Wyze does not support HomeAssistant. Rather than use IFTTT as a proxy to send data from Wyze to HomeAssistant, I instead used a community hack to read data from the Wyze Sense bridge directly on the Raspberry Pi's USB port. Another community hack unofficially supports local control of Wyze Bulbs. This way, I can have extremely responsive and complex local control of Wyze Bulbs (and bulbs from Hue and other manufacturers for that matter) using Wyze motion sensors. Home Assistant also enables complex automations, such as power cycling a Tuya switch and then sending a local command to a SwitchBot to activate, as I did for my air humidifier hack.
The thing that is most interesting to me about HomeAssistant, however, is how it has changed my purchasing habits. Whereas I traditionally would look for Google / Alexa control options for my devices, or purchase from name brands to ensure the greatest chance of cross-device compatibility, I now instead look at HomeAssistant device integrations, and see how well maintained they are, and if they support local or cloud control. The biggest change I have made is moving away from some name brands (such as Wyze or SmartThings for switches) and towards inexpensive alternatives that allow for local control (such as Tuya).
This is an evolving project. As I integrate more and more devices into HomeAssistant, they system gets more capable and powerful. I can pull in data from my PiHole for internet activity, create glanceable dashboards that I run on old android phones mounted through the house, and even chat with it through RocketChat. I can't wait to see what I can build with this next.