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.