I actually use Siri quite a bit, and while I’d love to pretend I’m Picard from TNG, Siri hasn’t quite caught up yet… or has he/she/it? I’ve been experimenting with automating the lighting around the house, and a key ingredient is going to be using Siri. A couple of use cases I had which I wanted to tackle included:
- Dimmable lights where you normally wouldn’t have them, for example with the pair of lamps in my bedroom. I was also curious about the very cool mood lighting you could achieve with Philips Hue, giggity giggity goo 😉
- I wanted to be able to use Siri to turn off the outside landscape (or Christmas) lighting. It was all setup on a timer, but I wanted to be able to easily override this without venturing outside to the bitter cold. Lazy? Maybe.
- We have pot lights on the outside of the house, already controllable / dimmable inside the house. Cool. However, I was interested in having these turn on only when I arrived home, and turned on/off at a set time, which changed with the seasons automatically. I knew I could do this with IFTTT or the right app, but needed those lights first to be appropriately “connected”.
- Additionally, I had areas inside the house that I similarly wanted to automate either by some event (eg arriving home), at a specific time, or with a simple command (like “Good Night”). These areas included the overhead cabinet lighting in the kitchen, pot lights around my reading nook/desk, the living room, etc.
My first foray into home automation began when I came across a post about controlling your automatic garage door opener with Siri (for those of you unfamiliar with Apple, this is the name for the iOS voice interface). The project relied on someone reverse engineering Apple’s HomeKit Application Protocol. HomeKit is a standard that Apple had been working on that:
- Provides a common, secure means for different devices to communicate
- Allows an iOS Application to interface with many different devices, avoiding the complexity of trying to handle many different proprietary protocols or poorly implemented or followed standards (eg Zigbee, more on that later)
- Enables iOS or any application that understands the HomeKit protocol and is properly authenticated to “see” your home configuration. This means, you can configure your home rooms, groupings, etc in one app, and they will persist in another.
- Leverage Siri for context driven voice control. For example “Hey Siri, Open the Garage” vs “Hey Siri, Turn the Garage On”. You can use more natural language, without needing to program for it; There are a long list of characteristics and attributes available via the HomeKit definition that allow you (or a manufacturer) to specify what kind of device you are interfacing with.
- If you have an AppleTV (gen 3 or 4 I believe) and it’s authenticated with iCloud, it will act as a secure proxy and allow you to communicate with your HomeKit enabled devices at home when you are out of the house or traveling.
So, beyond all the positives of the HomeKit API, is the fact that there is a wonderful open source Node JS project that exposes all of this functionality. When paired with an easily programmable device like the Raspberry Pi, you now have a powerful way to turn almost anything into a voice controlled part of your home automation strategy.