---
title: HMEventTrigger
framework: homekit
role: symbol
role_heading: Class
path: homekit/hmeventtrigger
---

# HMEventTrigger

A trigger to activate an action set based on a set of events and optional conditions.

## Declaration

```swift
class HMEventTrigger
```

## Overview

Overview Use an HMEventTrigger object to trigger the execution of a scene when a combination of characteristic or location events and conditions occur. To create an event trigger, first create one or more event objects that fire an event when the specified trigger values are met. For example, you might create an HMCharacteristicEvent that fires when the front door is open. Then, you can use HMEventTrigger convenience methods to create optional predicates that specify conditions that must be met before a scene is executed. For example, you might create a condition that ensures the scene is executed only after sunset.

## Topics

### Creating an event trigger

- [init(name:events:predicate:)](homekit/hmeventtrigger/init(name:events:predicate:).md)
- [init(name:events:end:recurrences:predicate:)](homekit/hmeventtrigger/init(name:events:end:recurrences:predicate:).md)

### Querying trigger activation state

- [triggerActivationState](homekit/hmeventtrigger/triggeractivationstate.md)
- [HMEventTriggerActivationState](homekit/hmeventtriggeractivationstate.md)

### Setting trigger events

- [events](homekit/hmeventtrigger/events.md)
- [updateEvents(_:completionHandler:)](homekit/hmeventtrigger/updateevents(_:completionhandler:).md)
- [Location events](homekit/location-events.md)
- [Time events](homekit/time-events.md)
- [Characteristic events](homekit/characteristic-events.md)
- [Presence events](homekit/presence-events.md)
- [HMEvent](homekit/hmevent.md)

### Restoring the previous scene after an event

- [endEvents](homekit/hmeventtrigger/endevents.md)
- [updateEndEvents(_:completionHandler:)](homekit/hmeventtrigger/updateendevents(_:completionhandler:).md)

### Controlling recurrence

- [recurrences](homekit/hmeventtrigger/recurrences.md)
- [updateRecurrences(_:completionHandler:)](homekit/hmeventtrigger/updaterecurrences(_:completionhandler:).md)
- [executeOnce](homekit/hmeventtrigger/executeonce.md)
- [updateExecuteOnce(_:completionHandler:)](homekit/hmeventtrigger/updateexecuteonce(_:completionhandler:).md)

### Adding a trigger condition

- [predicate](homekit/hmeventtrigger/predicate.md)
- [updatePredicate(_:completionHandler:)](homekit/hmeventtrigger/updatepredicate(_:completionhandler:).md)

### Creating predicates

- [predicateForEvaluatingTriggerOccurring(beforeSignificantEvent:)](homekit/hmeventtrigger/predicateforevaluatingtriggeroccurring(beforesignificantevent:).md)
- [predicateForEvaluatingTriggerOccurring(afterSignificantEvent:)](homekit/hmeventtrigger/predicateforevaluatingtriggeroccurring(aftersignificantevent:).md)
- [predicate(forEvaluatingTriggerOccurringBetweenSignificantEvent:secondSignificantEvent:)](homekit/hmeventtrigger/predicate(forevaluatingtriggeroccurringbetweensignificantevent:secondsignificantevent:).md)
- [predicateForEvaluatingTrigger(occurringBefore:)](homekit/hmeventtrigger/predicateforevaluatingtrigger(occurringbefore:).md)
- [predicateForEvaluatingTrigger(occurringOn:)](homekit/hmeventtrigger/predicateforevaluatingtrigger(occurringon:).md)
- [predicateForEvaluatingTrigger(occurringAfter:)](homekit/hmeventtrigger/predicateforevaluatingtrigger(occurringafter:).md)
- [predicateForEvaluatingTriggerOccurringBetweenDate(with:secondDateWith:)](homekit/hmeventtrigger/predicateforevaluatingtriggeroccurringbetweendate(with:seconddatewith:).md)
- [predicateForEvaluatingTrigger(_:relatedBy:toValue:)](homekit/hmeventtrigger/predicateforevaluatingtrigger(_:relatedby:tovalue:).md)
- [predicateForEvaluatingTrigger(withPresence:)](homekit/hmeventtrigger/predicateforevaluatingtrigger(withpresence:).md)
- [HMCharacteristicKeyPath](homekit/hmcharacteristickeypath.md)
- [HMCharacteristicValueKeyPath](homekit/hmcharacteristicvaluekeypath.md)
- [HMPresenceKeyPath](homekit/hmpresencekeypath.md)

### Deprecated symbols

- [addEvent(_:completionHandler:)](homekit/hmeventtrigger/addevent(_:completionhandler:).md)
- [removeEvent(_:completionHandler:)](homekit/hmeventtrigger/removeevent(_:completionhandler:).md)
- [predicateForEvaluatingTrigger(occurringBefore:applyingOffset:)](homekit/hmeventtrigger/predicateforevaluatingtrigger(occurringbefore:applyingoffset:).md)
- [predicateForEvaluatingTrigger(occurringAfter:applyingOffset:)](homekit/hmeventtrigger/predicateforevaluatingtrigger(occurringafter:applyingoffset:).md)

### Initializers

- [init(name:events:endEvents:recurrences:predicate:)](homekit/hmeventtrigger/init(name:events:endevents:recurrences:predicate:).md)

## Relationships

### Inherits From

- [HMTrigger](homekit/hmtrigger.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

### Action Sets

- [HMActionSet](homekit/hmactionset.md)
- [HMTimerTrigger](homekit/hmtimertrigger.md)
