A couple months ago, I bought a new car. However, I realized after the purchase that the car didn’t have a built-in garage door opener like my old car had. The new car has Apple CarPlay. I tried to use Siri in the car to open the garage door but to no avail. To which, I thought, maybe I should by a HomeKit powered garage door opener!
This idea opened the floodgates of research into the world of having a “smart home”. I started buying smart switches and smart lights and smart thermostats and, wow, is this stuff complicated.
I’m a fan of being able to easily move between ecosystems. I have Windows and macOS. I have Android and iOS. There’s voice control on the desktop, on mobile, and as a standalone device.
Can I build a system that works across all of these? The short answer is: no.
Long answer: we can come pretty damn close and maybe that’s okay.
The other requirement I had was that anybody in the house shouldn’t necessarily need something complex to work the lights. I shouldn’t have to get them to install an app to be able to interact with the house. Not a terribly difficult requirement, per se, but there are some considerations here.
How does it work?
In the most vaguest terms, you have a device (light bulb, light switch, outlet, or whatever) that can communicate and be controlled by another device (hub, phone, voice device, or whatever). The trick is to get all the devices talking together.
The first thing to consider is how everything will communicate with each other. Here are just a few of the more popular ways:
Pick the wrong one and you might find yourself limited.
I bought some Hue lights at first. They worked with HomeKit but I could also hook them up to Google Home. And as it turns out, a bunch of other stuff, too.
Then I bought a switch that was HomeKit-enabled. Sadly, it only worked with HomeKit and nothing else. I had to pull it out and put something else in its place.
Z-wave is probably the most popular with multiple hubs and devices that work on it. I decided to go that route since it had the best support. Again, with some caveats.
Z-wave hubs like Wink and SmartThings don't work with HomeKit. They work with Alexa and Google Home, though. To fix the HomeKit integration, there’s an open source project called Homebridge that acts like an accessory that will sync all your devices to Homekit. You can run it on a Raspberry Pi, too, which is fantastic.
Once you've figured out what protocol things will communicate with, you may need a hub. I say "may" because if you pick HomeKit, for example, then there's no hub. For pretty much everything else, there is.
If you go the Hue lights route, there's a Hue hub. If you go Z-wave or Zigbee or Insteon, there's a hub that'll work for each of those.
Since I went Z-wave, the two most popular hubs are Wink and SmartThings. I've heard good things about SmartThings, including how good the API is (if you're interested in programming). I went with Wink out of convenience; my local HomeDepot had them in stock. The Wink hub has an API, too.
Hubs don't have a user interface. You'll need your phone or tablet to connect to the hub to make any changes to your configuration, such as adding or removing devices.
The Wink app is pretty good for adding new devices from many different manufacturers with step-by-step instructions.
Wink and SmartThings also support devices that use Zigbee or TCP/IP. With either of those hubs, you're pretty much golden.
Once you have a hub, now you need devices! Having decided on a hub, picking devices might seem like the easy part. Does it communicate with the hub? Yes? Great! But not so fast.
Devices are a big part of the user experience. When somebody wants to turn on a light, how do they do it? How does it feel?
Hue lights, for example, sound fantastic. Great integration with pretty much everything. Ability to change colour to fit mood, sound, or time of day. With one huge flaw: the light switch. Turn off the light switch and suddenly the Hue light is useless. With power cut off, there's no way to communicate with the light to turn it back on.
Hue sells light switches that are really just remotes that you stick to the wall. The actual light switch still remains. Which means removing the actual switch or taping it in the on position or telling people never to touch the switch. Which is kind of silly. I have Hue lights in a few select places where I don't have a light switch: bedside lamps and corner lamps.
LED lights and dimmers
I picked up some Lutron dimmer switches, because I liked the look of them. Sadly, they didn’t work with my LED fixtures. Lots of blinking and flickering. Depending on your lighting and wiring, pick only one up to make sure it works before you buy a dozen of them.
I switched to Leviton (again, because HomeDepot had them in stock) and they worked well with my LED lights. On the downside, they make a rather annoying clunk sound when they turn on or off. It feels okay when you hit the switch but when you do it via the app or voice control, the noise is surprisingly loud. I’ve ordered some GE switches to compare.
Controlling the Devices
With wall switches, there’s not much that changes. People can still turn the lights on or off without needing to use an app. However, what’s the fun in that?
Every device that gets added needs to go through a process of being linked to the hub so that it can be controlled by the app. This linking process is generally done through the app along with some unique incantation that needs to performed on the device.
After this is done, pretty much all apps allow you to put a device into a group or room. Surprisingly, Lutron, Leviton, HomeKit, and Wink all seem to do this poorly. They all try to spit you into your accessories list, which isn’t organized in any useful way. Rooms (especially if it could tell what room I’m actually in) is the most useful default view but even then, a combination of rooms and accessories would be even better.
I like using voice control. I’ve got Siri on the iPhone, Google Assistant on the Pixel, and Google Home. It’s handy to be able to say “turn off all the lights” or “turn on the bedroom lights” before I head upstairs. I feel like the voice interface is currently the best interface (beyond the actual switches) for interacting with devices.
In my research, Cortana for Windows was supposed to be able to be able to control my devices but I couldn’t find a way to do this. It looks like it might be limited to the phone. Which, as it turns out, is the case for Siri, as well. Siri control only works from the phone. It won’t work from the desktop.
Also of note, Google Assistant on iOS doesn’t pass the request onto Google Home, which is unfortunate. (That’s why Homebridge is important to link up non-HomeKit devices.)
Having a house device like Google Home means that anybody in the house can control lights in the house without needing to download an app. (Thankfully, my kids haven’t abused this by turning lights off on each other.)
However, being able to invite family or guests to use the app can be useful. If you go all in on a particular ecosystem like HomeKit, everybody else will need to be on the same ecosystem, too. With something like Wink, it’s on iOS and Android, so there is some cross-platform support.
Most platforms don’t have desktop apps, although there are often third-party solutions that can interact with your devices.
Part of the fun of having a smart home is being able to automate how devices interact.
Wink has a thing called “Robots” that lets you create various triggers. You can make triggers based on time, device, or location. For example, you can tell it to turn off a bathroom light if left on for longer than an hour. Or send an email notification when a motion sensor is triggered.
HomeKit can do some of that automation but requires an “always on” device in the home. This has to be an Apple TV or an iPad that never leaves the house.
As I went through this process, I came across random stuff that I thought worthy to mention.
Some services make it easy for you to register by allowing sign-in using Google OAuth. That’s fine when you’re initially signing up for the service. But afterwards, when you go into the Google Home and try to add that service, it loads up in an embedded web view that Google doesn’t allow. Thus, you won’t be able to add the service into Google Home. (I’m honestly a bit surprised at how Google screwed this up on both iOS and Android.)
When signing up for a service (like Hue, Wink, etc), always specify an email address and password instead of using the Google authentication.
You add a HomeKit device using a code. For something like a light switch, this is on a piece of paper provided with the switch. Now I have to hang onto all these pieces of paper and store them somewhere in case I ever need to re-add them to HomeKit. Whoever thought this was a good idea?
It would be nice to be able to control things within the app. Instead, you only get voice control, or you go into the device app. In which case, it makes sense to pull these into a single app, if you can. Wink, as mentioned, supports Hue and Nest, so you can control these from within the Wink app. Otherwise, you’re going to the Nest app to control the Nest, the Phillips app to control the Hue lights, and the Wink app for everything else.
I haven’t figured out why or when this happens, but the Wink app, or the Hue app, or HomeKit will show me a device is on when it’s really off. I haven’t figured out if it’s a case of turning it on or off in one app making it out of sync in the other apps. Or maybe it just gets confused from time to time.
Also, another fun issue with Hue lights in particular: when the power goes out and comes back on, it turns the lights on. My bedroom lamps came on in the middle of the night unexpectedly and I had some disorientation trying to figure out why the lights magically turned themselves on. (I swear there’s a horror movie plot point here.)
I’ve only just begun this journey. Dav Glass, for example, has over 200 devices in his home. I have a ways to go to catch up.