---
title: HMZone
framework: homekit
role: symbol
role_heading: Class
path: homekit/hmzone
---

# HMZone

A collection of rooms that users think of as a single area, like upstairs or downstairs.

## Declaration

```swift
class HMZone
```

## Overview

Overview An HMZone instance is an optional grouping of rooms in a home, with names like “upstairs” and “downstairs”. Zones are optional—rooms don’t need to be in a zone. By adding rooms to a zone, the user can give commands to Siri like “Siri, turn on all of the lights downstairs.” A single room can be in multiple zones—for example, “kitchen” might be in both the “downstairs” and “entertainment area” zones. You create new zones using the addZone(withName:completionHandler:) method of HMHome. A zone can’t span homes—that is, you can’t create a zone that includes rooms from more than one home.

## Topics

### Identifying a Zone

- [name](homekit/hmzone/name.md)
- [updateName(_:completionHandler:)](homekit/hmzone/updatename(_:completionhandler:).md)
- [uniqueIdentifier](homekit/hmzone/uniqueidentifier.md)

### Assigning Rooms to a Zone

- [rooms](homekit/hmzone/rooms.md)
- [addRoom(_:completionHandler:)](homekit/hmzone/addroom(_:completionhandler:).md)
- [removeRoom(_:completionHandler:)](homekit/hmzone/removeroom(_:completionhandler:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Grouping rooms into zones

- [zones](homekit/hmhome/zones.md)
- [addZone(withName:completionHandler:)](homekit/hmhome/addzone(withname:completionhandler:).md)
- [removeZone(_:completionHandler:)](homekit/hmhome/removezone(_:completionhandler:).md)
