Getting Started with Home Automation

Home automation is still an early adopter’s game. The landscape is fragmented and there are competing standards like Insteon, Z-Wave, zigbee, Wi-Fi based devices like Nest and Philips Hue, and Apple HomeKit. And most of these things don’t work together out of the box. ?

So what should you buy? Will it work with iOS via HomeKit or do you have to use a bunch of apps?

I have experience with Insteon, Z-Wave, and Apple HomeKit so I’ll share what I know about those standards here. But first, let’s get some basics out of the way. Setting up Home Automation requires a controller and a responder. (I’ll call responders devices here.)

There are many controllers out there. First party controllers generally work with one standard. For instance, Insteon’s hub only talks to Insteon devices. And Samsung’s SmartThings hub talks to Z-Wave devices. I should point out that Z-Wave is not Samsung’s standard. It’s a standard released out by an “alliance” of companies.

You’ll find many Insteon controllers on the market. Insteon makes an “Insteon Hub” (Amazon link), for starters, which is an inexpensive way to jump in. You can use Insteon’s app to control stuff around your house and on its own this is okay. Confusingly, there are two versions of the Insteon Hub. One compatible with Apple HomeKit and one compatible with basically everything else, including Amazon Alexa-based devices like the Echo. My understanding is this is due to HomeKit’s licensing terms. This is not great since it introduces additional fragmentation into the home automation ecosystem (Boo Apple). On the other hand, it probably enforces some minimum level of security, which Apple cares deeply about (Yay Apple). We’ll talk a little more about HomeKit and a way to work around this limitation later.

There are also third party controllers that support more than one standard. The most popular controller for “hard core” home automation enthusiasts is the ISY994. It’s a small appliance-like device. The configuration interface is horrible, imo, but it’s the most flexible controller out there and it’s quite reliable, from what I understand. The ISY supports Insteon, Z-Wave, and infrared control though you may need to pay a fee to unlock additional functionality depending on what version you buy. Note that you’ll need to buy an Insteon modem to allow the ISY communicate with your Insteon devices. The Z-Wave radio is built in if you buy a model that supports Z-Wave. If I were starting from scratch today, I’d probably go with an ISY994 controller.

But I’m not starting from scratch today. I use a software controller called Indigo. Indigo is fantastic, native software for macOS that is flexible and has a familiar user interface. While I wouldn’t call setting complicated flows in Indigo “easy,” I would say it’s about as easy as it gets for a fully-featured home automation controller. It has an active user base and plugin ecosystem. For instance, I once used a weather plugin to control whether or not my irrigation system came on outside my home, in addition to a normal schedule, to save water. If the forecast called for rain then my sprinklers would not turn on. We’ve since moved to a home without an irrigation system so I don’t need this anymore. Indigo’s license cost is an annual subscription. It’s a reasonable cost and well worth it to me. Indigo does need to run on a Mac all the time. I run it on an old Mac Mini that serves as my Time Machine Server and more.

Perceptive Automation, the company that makes Indigo, updates the software with reasonable regularity and runs a service, called Reflector, that lets their iOS app access your Indigo installation externally securely and transparently. Their latest major release added support for Z-Wave door locks and more. You’ll need to buy USB “modems” to communicate with your devices (Insteon, Z-Wave).

Many controllers expose some sort of HTTP API. That’s the case for the ISY and Indigo. This is will come into play later when we try to use HomeKit with these things.

I don’t have any experience with Samsung’s SmartThings, but it seems to be well-liked and have broad hardware support.

There are many other controllers out there, like the Vera and the now defunct Revolv (?). The latter aimed to support multiple standards. The software was great but the company was purchased and the service was ultimately shut down. You can look into the Vera more, if you like.

HomeKit works a bit differently. Each device you buy can be its own controller or require a separate controller. It varies. You pair the controller with your iOS device and it’s exposed on your phone via Apple’s Home app or third party apps that implement HomeKit. iOS syncs your HomeKit database and settings via iCloud. It works quite well it is proprietary as one might expect from Apple. You can setup automation flows if you have a fourth generation Apple TV in your home. For instance, I use HomeKit automation to turn on the lights on my main floor when I get home. It was incredibly easy to set up. I do this despite having no support HomeKit devices thanks to an open source project called Homebridge. We’ll talk more about that below.

Insteon makes a variety of devices like lamp controllers, switches, dimmers, keypads, fan controllers, irrigation controllers, garage door controllers, and various sensors. Insteon gear can be configured with or without a central controller and works even if your controller is down or is unavailable for some reason.

Insteon devices communicate wirelessly or via the neutral wire network in your house. Some devices are wireless only (e.g. battery powered sensors). Insteon devices relay commands to each other via a mesh network.

Third party Insteon device selection is limited.

I use mostly Insteon devices and they work great, with the exception of Insteon fan controllers which seem to fail after some time in my experience. I’ve had three fan controllers fail in a way where one of the fan speeds did not work properly. Insteon’s has great support so I don’t sweat this too much. Also, the fan controller’s speeds are a little odd. Full speed works as expected, medium is a bit too slow (maybe 30-40% instead of 50%), and low is way too slow.

I purchase my Insteon gear from when they run sales. This usually happens around major US holidays like the Fourth of July. Otherwise, I buy from Amazon because their prices are a little better.

As I mentioned above, Z-Wave is a standard maintained by several companies. Z-Wave devices come in a lot of shapes and sizes and are made by many manufacturers so you can almost always find what you’re looking for. Here’s an unobtrusive, expensive, and amazing Z-Wave door/window sensor, for instance. The range on this sensor isn’t great, but a cheap Z-Wave repeater fixes that. I should mention that any plugged in Z-Wave device can act as a repeater. It just turns out that I don’t have many Z-Wave devices in my home so range was limited. This would not be an issue for most setups.

I have less first-hand experience with Z-Wave. I recently purchased and installed a Z-Wave deadbolt and the sensor and repeater I mentioned above. They were all quite easy to get working in Indigo, which picked them up automatically.

The only confusing thing was getting the repeater to work properly with the door sensor. I had to “optimize the Z-Wave network.” Presumably Indigo looked at the devices and gauged signal strength to find the optimal routes in the network then updated the settings of each to reflect those routes. This isn’t something I have ever had to do with my Insteon devices – routing just plain works.

I would probably purchase more Z-Wave devices today if I were starting from scratch because there is a variety of hardware to choose from. But it’s worth noting that Z-Wave devices seem to be slightly harder to set up [in my limited experience].

Wi-Fi Based Stuff
Chances are you’ve already setup a robust Wi-Fi network in your home. Many HomeKit devices and other devices like Nest thermostats use W-Fi. I’m not a fan of this because stuff stops working when I reboot my router. It’s an edge case, admittedly, but it’s one that matters to me. Nest devices are, unsurprisingly, not HomeKit compatible. But I already use Nest thermostats in my home. There are other nice thermostats out there but Nest thermostats look the best and work really well.

iOS 10 added useful (and solid!) first party HomeKit support via the Home app and a favorites pane in Control Center. It also enables Siri integration. But the majority of home automation devices available today don’t support HomeKit.

Homebridge to the rescue. Homebridge is an open source project that exposes your home automation controller’s API as a HomeKit device using plugins.

Practically this means you can use non-HomeKit devices with HomeKit. Insteon, Z-Wave, Nest, and lots more devices can work with your iOS device mostly pain free provided there’s a plugin available or you’re willing to write one yourself (in Javascript). You do need to run Homebridge on a server in your home. I run this on my Mac Mini but many people run it on a Raspberry Pi. Homebridge takes a little understanding to set up. Programmers and technically inclined people will feel at home. It basically just works once it’s running, though I have had the occasional crash in a plugin cause Homebridge to crash. I run an alias to start it again automatically if that happens:

alias start_homebridge=‘while true; do homebridge; sleep 1; echo “Restarting Homebridge”; done;’

I use Homebridge to expose Insteon and Z-Wave devices via Indigo as well as my Nest thermostats to iOS. It gives me the best of both worlds: the flexibility to choose from a wide variety of hardware and the ability to control parts of my home with my iOS devices. Apple could break this support in the future (intentionally or not) and note that I’ve not been able to get the iOS’ HomeKit widgets to work with Homebridge. I don’t know why that is.

hey siri, turn off the fan in the office.

There’s a lot about home automation this post doesn’t cover. I’m happy to answer your questions, as time allows, on Twitter though my answer might be “I don’t know!”

I should mention that my good friend Drew got me into this hobby a few years back. Much of what I shared above is information I picked up from him over the years along with what I’ve found though lots and lots of reading. Thanks for getting me hooked, Drew! ???


Now read this

Building  Watch Apps

I’ve been tinkering with WatchKit in my spare time and thought I’d share a bit of what I’ve learned. Of course, all of my tinkering was done in the simulator as I’ve not actually played with an Watch. Watch Apps Have Up To Three... Continue →