•What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock...

208
#WWDC17 © 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Matt Lucas, HomeKit Engineering Praveen Chegondi, HomeKit Engineering What’s New in HomeKit Session 705 System Frameworks

Transcript of •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock...

Page 1: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

#WWDC17

© 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

Matt Lucas, HomeKit Engineering Praveen Chegondi, HomeKit Engineering

•What’s New in HomeKit • Session 705

System Frameworks

Page 2: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Overview

Page 3: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Overview•Framework updates

Page 4: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Overview•Framework updates•Accessory updates

Page 5: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Overview

Page 6: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates
Page 7: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates
Page 8: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates
Page 9: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates
Page 10: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Remote Access

Page 11: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates
Page 12: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

东软载波Eastsoft

Page 13: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Framework Updates

Page 14: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

Page 15: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

Page 16: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

New Conditions

Page 17: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

New Conditions

End Events

Page 18: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

New Conditions

End Events

Recurrence

Page 19: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

New Conditions

End Events

Recurrence

Mutable Events

Page 20: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Overview

Page 21: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Events

Page 22: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Events

Events activate a trigger

Page 23: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Events

Events activate a trigger• State of an accessory

Page 24: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Events

Events activate a trigger• State of an accessory• Geofence

Page 25: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Scenes

Page 26: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Scenes

Arrive Home

Unlock doors

Raise shades

Open garage

Open gates

Switch on

Temp up

Light on

Page 27: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Scenes

Arrive Home

Open gates

Open garage

Switch on

Raise shadesTemp up

Unlock doorsLight on

Page 28: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Scenes

Arrive Home

Open gates

Open garage

Switch on

Raise shadesTemp up

Unlock doorsLight on

Page 29: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Conditions

Page 30: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Conditions

Gates execution of scenes

Page 31: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Conditions

Gates execution of scenes• Time-based

Page 32: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Conditions

Gates execution of scenes• Time-based• State of an accessory

Page 33: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Conditions

Gates execution of scenes• Time-based• State of an accessory• Significant events

Page 34: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Conditions

Gates execution of scenes• Time-based• State of an accessory• Significant events

- Sunrise

Page 35: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Conditions

Gates execution of scenes• Time-based• State of an accessory• Significant events

- Sunrise- Sunset

Page 36: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

Page 37: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

Page 38: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

Page 39: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

Arrive Home

Open gates

Open garage

Switch on

Raise shadesTemp up

Unlock doorsLight on

Page 40: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

Arrive Home

Open gates

Open garage

Switch on

Raise shadesTemp up

Unlock doorsLight on

Page 41: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

Page 42: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMCalendarEvent

NEW

Page 43: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMCalendarEvent

Supports absolute dates, including: • Year • Month • Day • Hour Minute

NEW

Page 44: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating calendar time event

import HomeKit

var dateComponents = DateComponents()dateComponents.hour = 17 dateComponents.minute = 30

let calendarEvent = HMCalendarEvent(fire: dateComponents)let eventTrigger = HMEventTrigger(name: “Every day at 5:30PM”, events: [calendarEvent], predicate: nil)

Page 45: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating calendar time event

import HomeKit

var dateComponents = DateComponents()dateComponents.hour = 17 dateComponents.minute = 30

let calendarEvent = HMCalendarEvent(fire: dateComponents)let eventTrigger = HMEventTrigger(name: “Every day at 5:30PM”, events: [calendarEvent], predicate: nil)

Page 46: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating calendar time event

import HomeKit

var dateComponents = DateComponents()dateComponents.hour = 17 dateComponents.minute = 30

let calendarEvent = HMCalendarEvent(fire: dateComponents)let eventTrigger = HMEventTrigger(name: “Every day at 5:30PM”, events: [calendarEvent], predicate: nil)

Page 47: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating calendar time event

import HomeKit

var dateComponents = DateComponents()dateComponents.hour = 17 dateComponents.minute = 30

let calendarEvent = HMCalendarEvent(fire: dateComponents)let eventTrigger = HMEventTrigger(name: “Every day at 5:30PM”, events: [calendarEvent], predicate: nil)

Page 48: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating calendar time event

import HomeKit

var dateComponents = DateComponents()dateComponents.hour = 17 dateComponents.minute = 30

let calendarEvent = HMCalendarEvent(fire: dateComponents)let eventTrigger = HMEventTrigger(name: “Every day at 5:30PM”, events: [calendarEvent], predicate: nil)

Page 49: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating calendar time event

import HomeKit

var dateComponents = DateComponents()dateComponents.hour = 17 dateComponents.minute = 30

let calendarEvent = HMCalendarEvent(fire: dateComponents)let eventTrigger = HMEventTrigger(name: “Every day at 5:30PM”, events: [calendarEvent], predicate: nil)

Page 50: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating calendar time event

import HomeKit

var dateComponents = DateComponents()dateComponents.hour = 17 dateComponents.minute = 30

let calendarEvent = HMCalendarEvent(fire: dateComponents)let eventTrigger = HMEventTrigger(name: “Every day at 5:30PM”, events: [calendarEvent], predicate: nil)

Page 51: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMSignificantTimeEvent

NEW

Page 52: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Activates on significant events:

Event Triggers HMSignificantTimeEvent

NEW

Page 53: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Activates on significant events:• Sunrise

Event Triggers HMSignificantTimeEvent

NEW

Page 54: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Activates on significant events:• Sunrise• Sunset

Event Triggers HMSignificantTimeEvent

NEW

Page 55: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Activates on significant events:• Sunrise• Sunset

Supports relative time offset

Event Triggers HMSignificantTimeEvent

NEW

Page 56: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating significant time events

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: nil)

Page 57: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating significant time events

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: nil)

Page 58: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating significant time events

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: nil)

Page 59: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating significant time events

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: nil)

Page 60: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating significant time events

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: nil)

Page 61: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating significant time events

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: nil)

Page 62: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Significant event conditions

extension HMEventTrigger { open class func predicate(forEvaluatingTriggerOccurringBetweenSignificantEvent firstSignificantEvent: HMSignificantTimeEvent, secondSignificantEvent: HMSignificantTimeEvent) -> NSPredicate}

NEW

Page 63: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Significant event conditions

extension HMEventTrigger { open class func predicate(forEvaluatingTriggerOccurringBetweenSignificantEvent firstSignificantEvent: HMSignificantTimeEvent, secondSignificantEvent: HMSignificantTimeEvent) -> NSPredicate}

NEW

Page 64: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMCharacteristicThresholdRangeEvent

NEW

Page 65: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMCharacteristicThresholdRangeEvent

Activates on crossing threshold

NEW

Page 66: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMCharacteristicThresholdRangeEvent

Activates on crossing threshold

Supports:• Minimum threshold

NEW

Page 67: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMCharacteristicThresholdRangeEvent

Activates on crossing threshold

Supports:• Minimum threshold• Maximum threshold

NEW

Page 68: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMCharacteristicThresholdRangeEvent

Activates on crossing threshold

Supports:• Minimum threshold• Maximum threshold• Range threshold

NEW

Page 69: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Characteristic threshold range events

import HomeKit

let characteristic = …

let numberRange = HMNumberRange(minValue: 76)let event = HMCharacteristicThresholdRangeEvent(characteristic: characteristic, thresholdRange: numberRange)let eventTrigger = HMEventTrigger(name: "Temperature over 76", events: [event], predicate: nil)

Page 70: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Characteristic threshold range events

import HomeKit

let characteristic = …

let numberRange = HMNumberRange(minValue: 76)let event = HMCharacteristicThresholdRangeEvent(characteristic: characteristic, thresholdRange: numberRange)let eventTrigger = HMEventTrigger(name: "Temperature over 76", events: [event], predicate: nil)

Page 71: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Characteristic threshold range events

import HomeKit

let characteristic = …

let numberRange = HMNumberRange(minValue: 76)let event = HMCharacteristicThresholdRangeEvent(characteristic: characteristic, thresholdRange: numberRange)let eventTrigger = HMEventTrigger(name: "Temperature over 76", events: [event], predicate: nil)

Page 72: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Characteristic threshold range events

import HomeKit

let characteristic = …

let numberRange = HMNumberRange(minValue: 76)let event = HMCharacteristicThresholdRangeEvent(characteristic: characteristic, thresholdRange: numberRange)let eventTrigger = HMEventTrigger(name: "Temperature over 76", events: [event], predicate: nil)

Page 73: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Characteristic threshold range events

import HomeKit

let characteristic = …

let numberRange = HMNumberRange(minValue: 76)let event = HMCharacteristicThresholdRangeEvent(characteristic: characteristic, thresholdRange: numberRange)let eventTrigger = HMEventTrigger(name: "Temperature over 76", events: [event], predicate: nil)

Page 74: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Characteristic threshold range events

import HomeKit

let characteristic = …

let numberRange = HMNumberRange(minValue: 76)let event = HMCharacteristicThresholdRangeEvent(characteristic: characteristic, thresholdRange: numberRange)let eventTrigger = HMEventTrigger(name: "Temperature over 76", events: [event], predicate: nil)

Page 75: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Characteristic threshold range events

import HomeKit

let characteristic = …

let numberRange = HMNumberRange(minValue: 76)let event = HMCharacteristicThresholdRangeEvent(characteristic: characteristic, thresholdRange: numberRange)let eventTrigger = HMEventTrigger(name: "Temperature over 76", events: [event], predicate: nil)

Page 76: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Characteristic threshold range events

import HomeKit

let characteristic = …

let numberRange = HMNumberRange(minValue: 76)let event = HMCharacteristicThresholdRangeEvent(characteristic: characteristic, thresholdRange: numberRange)let eventTrigger = HMEventTrigger(name: "Temperature over 76", events: [event], predicate: nil)

Page 77: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMPresenceEvent

NEW

Page 78: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMPresenceEvent

Page 79: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMPresenceEvent

Current user arrives home

Page 80: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMPresenceEvent

Current user arrives home

Current user leaves home

Page 81: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMPresenceEvent

Current user arrives home

Current user leaves home

Page 82: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMPresenceEvent

Current user arrives home

Current user leaves home

Last user leaves home

Page 83: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers HMPresenceEvent

Current user arrives home

Current user leaves home

Last user leaves home

First user arrives home

Page 84: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating Presence Event

import HomeKit

let event = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let eventTrigger = HMEventTrigger(name: "Anyone Arrives Home", events: [event], predicate: nil)

Page 85: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating Presence Event

import HomeKit

let event = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let eventTrigger = HMEventTrigger(name: "Anyone Arrives Home", events: [event], predicate: nil)

Page 86: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating Presence Event

import HomeKit

let event = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let eventTrigger = HMEventTrigger(name: "Anyone Arrives Home", events: [event], predicate: nil)

Page 87: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating Presence Event

import HomeKit

let event = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let eventTrigger = HMEventTrigger(name: "Anyone Arrives Home", events: [event], predicate: nil)

Page 88: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Creating Presence Event

import HomeKit

let event = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let eventTrigger = HMEventTrigger(name: "Anyone Arrives Home", events: [event], predicate: nil)

Page 89: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers User presence conditions

NEW

Page 90: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers User presence conditions

NEW

Good Morning

Open gates

Open garage

Switch on

Raise shadesTemp up

Unlock doorsLight on

Page 91: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers User presence conditions

NEW

Good Morning

Open gates

Open garage

Switch on

Raise shadesTemp up

Unlock doorsLight on

Page 92: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers User presence conditions

NEW

Good Morning

Open gates

Open garage

Switch on

Raise shadesTemp up

Unlock doorsLight on

Page 93: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers User presence conditions

NEW

Good Morning

Open gates

Open garage

Switch on

Raise shadesTemp up

Unlock doorsLight on

Page 94: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers User presence conditions

Good Morning

Open gates

Open garage

Switch on

Raise shadesTemp up

Unlock doorsLight on

NEW

Page 95: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers User presence conditions

extension HMEventTrigger { open class func predicateForEvaluatingTrigger(withPresence presenceEvent: HMPresenceEvent) -> NSPredicate}

NEW

Page 96: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers User presence conditions

extension HMEventTrigger { open class func predicateForEvaluatingTrigger(withPresence presenceEvent: HMPresenceEvent) -> NSPredicate}

NEW

Page 97: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - User presence condition

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)

let presenceEvent = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let predicate = HMEventTrigger.predicateForEvaluatingTrigger(withPresence: presenceEvent)

let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: predicate)

Page 98: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - User presence condition

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)

let presenceEvent = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let predicate = HMEventTrigger.predicateForEvaluatingTrigger(withPresence: presenceEvent)

let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: predicate)

Page 99: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - User presence condition

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)

let presenceEvent = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let predicate = HMEventTrigger.predicateForEvaluatingTrigger(withPresence: presenceEvent)

let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: predicate)

Page 100: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - User presence condition

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)

let presenceEvent = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let predicate = HMEventTrigger.predicateForEvaluatingTrigger(withPresence: presenceEvent)

let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: predicate)

Page 101: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - User presence condition

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)

let presenceEvent = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let predicate = HMEventTrigger.predicateForEvaluatingTrigger(withPresence: presenceEvent)

let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: predicate)

Page 102: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - User presence condition

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)

let presenceEvent = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let predicate = HMEventTrigger.predicateForEvaluatingTrigger(withPresence: presenceEvent)

let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: predicate)

Page 103: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - User presence condition

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)

let presenceEvent = HMPresenceEvent(presenceType: HMPresenceType.anyUserAtHome)let predicate = HMEventTrigger.predicateForEvaluatingTrigger(withPresence: presenceEvent)

let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], predicate: predicate)

Page 104: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers End events

NEW

Page 105: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers End events

NEW

Page 106: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers End events

NEW

Page 107: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers End events

NEW

Page 108: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers End events

open class HMEventTrigger : HMTrigger { open var endEvents: [HMEvent] { get } open func updateEndEvents(_ endEvents: [HMEvent], completionHandler completion: @escaping (Error?) -> Swift.Void) }

NEW

Page 109: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers End events

open class HMEventTrigger : HMTrigger { open var endEvents: [HMEvent] { get } open func updateEndEvents(_ endEvents: [HMEvent], completionHandler completion: @escaping (Error?) -> Swift.Void) }

NEW

Page 110: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers End events

open class HMEventTrigger : HMTrigger { open var endEvents: [HMEvent] { get } open func updateEndEvents(_ endEvents: [HMEvent], completionHandler completion: @escaping (Error?) -> Swift.Void) }

NEW

Page 111: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers End events

open class HMEventTrigger : HMTrigger { open var endEvents: [HMEvent] { get } open func updateEndEvents(_ endEvents: [HMEvent], completionHandler completion: @escaping (Error?) -> Swift.Void) }

NEW

Page 112: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers End events

open class HMDurationEvent : NSCopying, NSMutableCopying { public init(duration: TimeInterval) }

NEW

Page 113: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Recurrence

Wed FriThuTueMon SatSun

NEW

Page 114: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Recurrence

Wed FriThuTueMon

SatSun

NEW

Page 115: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Recurrence

NEW

open class HMEventTrigger : HMTrigger { open var recurrences: [DateComponents]? { get } open func updateRecurrences(_ recurrences: [DateComponents]?, completionHandler completion: @escaping (Error?) -> Swift.Void) }

Page 116: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Recurrence

NEW

open class HMEventTrigger : HMTrigger { open var recurrences: [DateComponents]? { get } open func updateRecurrences(_ recurrences: [DateComponents]?, completionHandler completion: @escaping (Error?) -> Swift.Void) }

Page 117: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Recurrence

NEW

open class HMEventTrigger : HMTrigger { open var recurrences: [DateComponents]? { get } open func updateRecurrences(_ recurrences: [DateComponents]?, completionHandler completion: @escaping (Error?) -> Swift.Void) }

Page 118: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Recurrence

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)var weekdays = [DateComponents]()for weekday in 2...5 { var recurrence = DateComponents() recurrence.weekday = weekday weekdays.append(recurrence)}let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], end: nil, recurrences: weekdays, predicate: nil)

Page 119: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Recurrence

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)var weekdays = [DateComponents]()for weekday in 2...5 { var recurrence = DateComponents() recurrence.weekday = weekday weekdays.append(recurrence)}let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], end: nil, recurrences: weekdays, predicate: nil)

Page 120: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Recurrence

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)var weekdays = [DateComponents]()for weekday in 2...5 { var recurrence = DateComponents() recurrence.weekday = weekday weekdays.append(recurrence)}let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], end: nil, recurrences: weekdays, predicate: nil)

Page 121: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Recurrence

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)var weekdays = [DateComponents]()for weekday in 2...5 { var recurrence = DateComponents() recurrence.weekday = weekday weekdays.append(recurrence)}let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], end: nil, recurrences: weekdays, predicate: nil)

Page 122: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Recurrence

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)var weekdays = [DateComponents]()for weekday in 2...5 { var recurrence = DateComponents() recurrence.weekday = weekday weekdays.append(recurrence)}let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], end: nil, recurrences: weekdays, predicate: nil)

Page 123: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

// Example - Recurrence

import HomeKit

let sunriseEvent = HMSignificantTimeEvent(significantEvent: HMSignificantEvent.sunrise, offset: nil)var weekdays = [DateComponents]()for weekday in 2...5 { var recurrence = DateComponents() recurrence.weekday = weekday weekdays.append(recurrence)}let eventTrigger = HMEventTrigger(name: "Sunrise, Daily", events: [sunriseEvent], end: nil, recurrences: weekdays, predicate: nil)

Page 124: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Execute once

NEW

Page 125: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Execute once

open class HMEventTrigger : HMTrigger { open var executeOnce: Bool { get } open func updateExecuteOnce(_ executeOnce: Bool, completionHandler completion: @escaping (Error?) -> Swift.Void) }

Page 126: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Execute once

open class HMEventTrigger : HMTrigger { open var executeOnce: Bool { get } open func updateExecuteOnce(_ executeOnce: Bool, completionHandler completion: @escaping (Error?) -> Swift.Void) }

Page 127: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Execute once

open class HMEventTrigger : HMTrigger { open var executeOnce: Bool { get } open func updateExecuteOnce(_ executeOnce: Bool, completionHandler completion: @escaping (Error?) -> Swift.Void) }

Page 128: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Mutable events

open class HMEventTrigger : HMTrigger {

open func addEvent(_ event: HMEvent, completionHandler completion: @escaping (Error?) -> Swift.Void)

open func removeEvent(_ event: HMEvent, completionHandler completion: @escaping (Error?) -> Swift.Void) }

Page 129: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers Mutable events

open class HMEventTrigger : HMTrigger { open func updateEvents(_ events: [HMEvent], completionHandler completion: @escaping (Error?) -> Swift.Void) }

Page 130: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

import HomeKit

if let sunriseEvent = eventTrigger.events.first as? HMSignificantTimeEvent { var mutableSunriseEvent = sunriseEvent.mutableCopy() as HMMutableSignificantTimeEvent // Update the offset of the event var offset = DateComponents() offset.minute = 30 mutableSunriseEvent.offset = offset // Update the events of the trigger eventTrigger.updateEvents([mutableSunriseEvent]) { (e: Error?) in // Handle error }}

Page 131: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

import HomeKit

if let sunriseEvent = eventTrigger.events.first as? HMSignificantTimeEvent { var mutableSunriseEvent = sunriseEvent.mutableCopy() as HMMutableSignificantTimeEvent // Update the offset of the event var offset = DateComponents() offset.minute = 30 mutableSunriseEvent.offset = offset // Update the events of the trigger eventTrigger.updateEvents([mutableSunriseEvent]) { (e: Error?) in // Handle error }}

Page 132: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

import HomeKit

if let sunriseEvent = eventTrigger.events.first as? HMSignificantTimeEvent { var mutableSunriseEvent = sunriseEvent.mutableCopy() as HMMutableSignificantTimeEvent // Update the offset of the event var offset = DateComponents() offset.minute = 30 mutableSunriseEvent.offset = offset // Update the events of the trigger eventTrigger.updateEvents([mutableSunriseEvent]) { (e: Error?) in // Handle error }}

Page 133: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

import HomeKit

if let sunriseEvent = eventTrigger.events.first as? HMSignificantTimeEvent { var mutableSunriseEvent = sunriseEvent.mutableCopy() as HMMutableSignificantTimeEvent // Update the offset of the event var offset = DateComponents() offset.minute = 30 mutableSunriseEvent.offset = offset // Update the events of the trigger eventTrigger.updateEvents([mutableSunriseEvent]) { (e: Error?) in // Handle error }}

Page 134: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

import HomeKit

if let sunriseEvent = eventTrigger.events.first as? HMSignificantTimeEvent { var mutableSunriseEvent = sunriseEvent.mutableCopy() as HMMutableSignificantTimeEvent // Update the offset of the event var offset = DateComponents() offset.minute = 30 mutableSunriseEvent.offset = offset // Update the events of the trigger eventTrigger.updateEvents([mutableSunriseEvent]) { (e: Error?) in // Handle error }}

Page 135: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

Page 136: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

Page 137: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

New Conditions

Page 138: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

New Conditions

End Events

Page 139: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

New Conditions

End Events

Recurrence

Page 140: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Event Triggers

New Events

New Conditions

End Events

Recurrence

Mutable Events

Page 141: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Praveen Chegondi, HomeKit Engineering

•Accessory Updates

Page 142: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification

Page 143: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification•Protocol Enhancements

Page 144: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification•Protocol Enhancements•Categories

Page 145: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification•Protocol Enhancements•Categories•Authentication

Page 146: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification•Protocol Enhancements•Categories•Authentication•Self-Certification

Page 147: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification •Protocol Enhancements •Categories •Authentication •Self-Certification

Page 148: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol Specification

Page 149: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol Specification

Communication between iOS and Accessory

Page 150: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol Specification

Communication between iOS and Accessory

Security

Page 151: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol Specification

Communication between iOS and Accessory

Security

Transports• IP• Bluetooth LE

Page 152: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol Specification

Communication between iOS and Accessory

Security

Transports• IP• Bluetooth LE

Accessory categories

Page 153: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol Specification

Page 154: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol Specification

Page 155: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol SpecificationNEW

Page 156: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol Specification

Available to all developers todayhttp://developer.apple.com/homekit

NEW

Page 157: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Accessory Protocol Specification

Available to all developers todayhttp://developer.apple.com/homekit

Commercialize HomeKit accessory

Become MFi Licenseehttp://developer.apple.com/mfi/

NEW

Page 158: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification •Protocol Enhancements •Categories •Authentication •Self-Certification

Page 159: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Setup

Page 160: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Power on accessory

Accessory Setup

Page 161: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Power on accessory

Choose accessory

Accessory Setup

Page 162: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Power on accessory

Choose accessory

HomeKit pairing

Accessory Setup

Page 163: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates
Page 164: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Enhanced Setup CodeNEW

Page 165: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Enhanced Setup Code

Scan first

NEW

Page 166: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Enhanced Setup Code

Scan first

Automatic selection

NEW

Page 167: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Enhanced Setup Code

Scan first

Automatic selection

Enhanced setup code• Setup ID• Setup code (8-digit)

NEW

Page 168: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Enhanced Setup CodeNEW

Page 169: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

QR Code

Enhanced Setup CodeNEW

Page 170: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

QR Code• Standard-based

Enhanced Setup CodeNEW

Page 171: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

QR Code• Standard-based• Small-form factor

Enhanced Setup CodeNEW

10mm x 10mm

Page 172: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Enhanced Setup Code

Tap-to-pair • NFC tags

NEW

Page 173: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates
Page 174: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories

Page 175: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories

Form-factor friendly

Page 176: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories

Form-factor friendly

Low-power

Page 177: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories

Form-factor friendly

Low-power

Battery-operated

Page 178: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories Broadcast notifications

Page 179: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories Broadcast notifications

Page 180: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories Broadcast notifications

Page 181: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories Broadcast notifications

Page 182: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories Broadcast notifications

Page 183: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories Broadcast notifications

Page 184: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories Broadcast notifications

Page 185: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

HomeKit Bluetooth LE Accessories Broadcast notifications

NEW

Page 186: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Secure-broadcast notifications

HomeKit Bluetooth LE Accessories Broadcast notifications

NEW

Page 187: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Secure-broadcast notifications

Sub-second latencies

HomeKit Bluetooth LE Accessories Broadcast notifications

NEW

Page 188: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification •Protocol Enhancements •Categories •Authentication •Self-Certification

Page 189: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Categories

Page 190: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Categories

AirConditioners

45°

Cameras Doorbells

Air Purifiers Lights

Humidifiers

Outlets

GarageDoors Thermostats

62°

Locks

Sensors

Fans

WindowShades Security

Page 191: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Categories

AirConditioners

45°

Cameras Doorbells

Air Purifiers Lights

Humidifiers

Outlets

GarageDoors Thermostats

62°

Locks

Sensors

Fans

WindowShades Security

Sprinklers Faucets

Page 192: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification •Protocol Enhancements •Categories •Authentication •Self-Certification

Page 193: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Authentication

Page 194: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Authentication

Quality

Page 195: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Authentication

Quality

Trusted

Page 196: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Authentication

Quality

Trusted

Hardware-based authentication

Page 197: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory AuthenticationNEW

Page 198: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Authentication

Software-based authentication

NEW

Page 199: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Accessory Authentication

Software-based authentication

Enables HomeKit on shipping accessories

NEW

Page 200: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

•Specification •Protocol Enhancements •Categories •Authentication •Self-Certification

Page 201: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Self-Certification

Page 202: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Improved work flow • HomeKit Certification Assistant • Increase audit capacity

Self-Certification

Page 203: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Improved work flow • HomeKit Certification Assistant • Increase audit capacity

Apple Authorized Labs • United States • China • UK

Self-Certification

Page 204: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Summary

Event Triggers

HomeKit Specifications

Protocol Enhancements

New Accessory Categories

Self-Certification Process

Page 205: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

More Informationhttps://developer.apple.com/wwdc17/705

Page 206: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Related Sessions

What’s New in Core Bluetooth Grand Ballroom B Thursday 11:00AM

Page 207: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates

Labs

HomeKit Lab 1 Technology Lab J Wed 10:00AM–11:30AM

HomeKit Lab 2 Technology Lab J Thu 4:10PM–5:40PM

Page 208: •What’s New in HomeKit - Apple Inc....gates Open garage Switch on Raise shades Temp up Unlock doors Light on Event Triggers User presence conditions NEW Good Morning Open gates