HomeKit changes coming in iOS11

As expected, this year's WWDC event has brought announcements of upgrades to the HomeKit platform coming with the new version of iOS. The news is good for users of the platform that have been tolerating some obvious deficiencies up to this point, and Apple appears to be listening.

First is the introduction of new device classes, Sprinker, Faucet, and Speaker. The device classes define the types of attributes and actions that can be read and triggered on devices. In order to get the desired functionality from a device, the class needs to support the appropriate ways for HomeKit to talk to it. These new additions bring the number of supported device types to 17, which further improves the flexibility of the platform for users by adding the capability to monitor and manage water flow, and to allow for voice controlled, multi-room music playback respectively. The speaker class will also allow any Apple TVs in the home to be controlled as target speakers as well.

On the app side, Apple's Home app is being enhanced with some much needed changes. Conditional triggers are being added, which allows more complex automations to be configured such as triggering events only if other devices are in a certain state. I have one where a motion sensor will turn on the light at low brightness for nightlight use, but only if the light is off and it's after sunset. I've been able to do that in a third party HomeKit app which surfaces these conditions, so HomeKit itself already has those capabilities. The Home app has only offered the After Sunset toggle in the automation setup screen, but no other conditions have been available. 

Another glaring gap has been the fact that geofenced events (like turning on lights when you arrive home) could only be triggered by the owner of the 'home', that is the person who configured the HomeKit setup initially. Other family members have been left in the dark, so to speak. With iOS11 we'll be able to configured these events to trigger when a select person arrives or leaves, or when everyone does. For example, this would allow turning off the lights only when everyone has left the house.

Another nice addition is the inclusion of time offsets for events to allow for a delayed triggering of a scene (activate scene after x minutes of event y), or a time limited duration for as scene (activate scene for x minutes and then turn off).


This is all good stuff, but on the device side there are some big changes too.  Apple is adding the ability to pair devices by QR code in an effort to 'simplify device setup'. I'm not sure where this comes from, since the current process of scanning a printed key on the device is essentially the same thing, but each to his own I suppose. More interestingly is the ability to pair a device via NFC should a manufacturer want to include that hardware. NFC is a good out-of-band key exchange method, and serves to obfuscate the actual pre-shared key which would otherwise be potentially capturable if the device label could be seen. It's a minor improvement though, and really offers more flexibility than security.

Manufacturers will be welcome in a number of key changes too.  Support for Bluetooth devices is being improved to reduce latency, which has long plagued these types with less than ideal performance. The certification program for devices is being streamlined, which will help speed development times and reduce cost, and the big hitter here: software based authentication. No longer will devices need to include apple-provided hardware for security. Not only does this simplify device build requirements, but means that many devices already on the market can potentially be upgraded to be HomeKit compatible with a firmware update. That's a big deal as it removes the key hurdle manufacturers have had in providing HomeKit support. I expect many more devices to be coming HomeKit compatible as a result of this, which is a great move for the platform.