HomeKit
HomeKit lets people securely control connected accessories in their homes from the iOS device they're holding or with their voice using Siri. These accessories include locks, lights, shades, cameras, garage doors, sensors, and thermostats. They communicate with iCloud or a server to receive instructions and provide status updates. This communication can take place directly or through an iOS device in the home that operates as a hub, such as Apple TV or iPad.
iOS includes a Home app that provides a standard set of controls for managing, configuring, and interacting with accessories. Your app can also integrate with HomeKit to provide a custom or branded experience.
Make Home Automation Approachable
Home automation can be intimidating, so it’s very important to use friendly, conversational language that people understand. Throughout your app, avoid using acronyms and technical jargon that might cause confusion or frustration. Use the following terms to provide a consistent and approachable experience:
Home | Represents a physical home. People might have multiple homes that are far apart, such as a main home and a vacation home. Or, they may have homes that are close together, but considered separate, such as a main home and a guest cottage on the same property. Home names should be customizable. |
Room | Represents a physical room in a home. Rooms don’t have specific characteristics such as size or location. They’re simply meaningful names, such as “living room” or “kitchen.” Rooms provide a way to organize accessories based on their actual location within a home, and enable voice commands like “Siri, turn on the kitchen lights.” Room names should be customizable. |
Zone | Represents a specific area in a home, such as "upstairs” or “downstairs.” Zones provide a way to group, organize, and target multiple rooms, typically in close proximity to one another, and enable voice commands like “Siri, turn on all of the lights downstairs.” Zone names should be customizable. |
Accessory | A physical, connected HomeKit accessory, such as a camera or light. People add accessories to rooms in their homes. |
Service | A controllable feature of an accessory, such as the light on a connected lamp. Some accessories offer multiple services. For example, a connected garage door might let you individually control both the light and the door, or a connected outlet might let you control the top outlet and the bottom outlet separately. Instead of using the term “service” in your app, use meaningful terms that clearly identify the service, such as “garage door” or “garage light.” Service names should be customizable. |
Characteristic | A controllable attribute of a service. For example, on a ceiling fan, the light service might have power state (on/off) and brightness characteristics, and the fan service might have a speed (off, low, high) characteristic. Instead of referring to the term “characteristic” in your app, use meaningful terms that identify the characteristic, such as “brightness” and “speed.” Use appropriate controls to let people change characteristics. For example, use a switch to let people toggle a service on and off. |
Action | The act of changing a characteristic of a service. For example, turning a light on or off, or adjusting the speed of a fan. Actions are initiated by people and through automation. |
Scene | A group of actions for controlling one or more services. Someone might, for example, create a “Movie Time” scene that dims the lights and lowers the shades, or a “Bedtime” scene that locks the door and turns off all lights except the one next to the bed. |
Automation | Causes accessories to react to certain situations, such as when your location changes, a particular time of day occurs, another accessory turns on or off, or a sensor detects something. |
Provide a Great Experience
Through HomeKit, your app can help people:
Set up and manage homes, rooms, zones, and scenes
Find, add, remove, and interact with accessories
Give trusted family and friends access to control accessories
Use Siri to control accessories with voice commands
Check the status of accessories
Automate common accessory behaviors and settings
Make accessory setup quick, intuitive, and automatic whenever possible. Ideally, your app automatically detects new accessories and presents them prominently. Don’t force people to create an account before they can add an accessory.
Prompt users to assign accessories to rooms after setup. After configuring a new accessory, immediately prompt people to add the accessory to a room. If a home or room hasn’t been created yet, provide a way to create one. If there’s only one room in a home, present options for adding the accessory to that room and creating a new room.
Make sure accessories are easy to identify. Accessories should be recognizable when users interact with them, during the setup process, and when adjusting settings later. If a living room contains multiple lights, for example, provide a way to differentiate each one. In this scenario, you might provide a control that physically flashes a light to identify it and let people give each light’s service a unique name, such as “desk lamp” or “chandelier.”
Provide multiple ways to locate accessories. People want to interact with accessories quickly, such as unlocking the door while walking up to the house. Implement ways to filter and search for accessories by name, type, or location in the home. Consider providing a dashboard of favorite accessory services.
Report accessory statuses accurately. If an accessory can’t be reached, don’t assume its status. If a lock is unreachable, for example, don’t say it’s locked or unlocked based on the last known status. Instead, explain that the lock is currently unreachable.
Integrate with Siri. Siri makes it easy to perform sophisticated operations with a single statement. Siri recognizes the names of homes, rooms, zones, services, and scenes, and can understand statements like “Siri, lock the front door,” “Siri, turn off the upstairs lights,” “Siri, make it warmer in the media room,” and “Siri, set the house to movie mode.”
Assist with name conflicts. Siri requires that home, room, zone, service, and scene names be unique. When name conflicts arise, explain the problem clearly and offer alternatives that make sense and are easy to remember.
When there are multiple homes, set a primary home. Siri needs to know which home to target when saying something like “Turn on my living room lights.” If there’s only one home, that home is targeted for all commands. If the person has multiple homes and no primary home is configured, the current home—the one the person is in at the moment—is targeted.
Present editable service names instead of accessory names. Some accessories have multiple services, such as a ceiling fan with different services for the light and the fan. In this scenario, telling Siri to “Turn on the dining room light” should activate the light service and telling Siri to “Turn on the dining room fan” should activate the fan service. Provide clear and concise default service names that are well-known words or phrases, but let people customize these names if desired. For example, someone might want to rename a connected outlet or switch to “desk lamp” if that’s what the outlet or switch controls. Never use company names or model numbers for service names.
During setup, teach people the commands Siri understands. When appropriate throughout your app, show examples of phrases that work with Siri, such as “You can say ‘Siri, set the house to movie mode.’ to activate this configuration.”
Make automation intuitive. HomeKit accessories can be controlled automatically, based on conditional relationships such as time, location, and the behavior of other accessories. For example, the kitchen lights could be set to come on when the garage door opens and it’s after sunset. Setting up conditional relationships like this can be confusing, so make this process as simple as possible. Design clear interfaces and use verbiage that mirrors the way people speak.
For implementation guidelines and other information, see HomeKit Developer Guide and HomeKit. If you’re an MFi licensee, visit the MFi portal for guidance on naming and messaging for accessory packaging.