Skip to main content
Event filtering controls which events PAI forwards to notification interfaces — Pushbullet, Pushover, Signal, GSM, and Home Assistant Notifications. By default each interface ships with a set of tag-based filters. You can replace these with regexp-based filters for fine-grained control.
Tag-based filters (_EVENT_FILTERS) and regexp-based filters (_ALLOW_EVENTS / _IGNORE_EVENTS) are mutually exclusive. If _ALLOW_EVENTS is set, _EVENT_FILTERS is ignored for that interface.

Filtering methods

Each event carries a list of tags assigned in the hardware event map. A filter entry is a comma-separated string of tags. An event matches if it carries all the tags listed in at least one entry.Prefix a tag with - to exclude events that carry it.Format:
pai.conf
PUSHBULLET_EVENT_FILTERS = [
    'live,alarm,-restore',  # live alarm events, but not restores
    'trouble,-clock',       # trouble events, except clock trouble
    'live,tamper',          # live tamper events
]
This is the default filter for Pushbullet, Pushover, Signal, and Home Assistant Notifications.GSM uses a narrower default:
pai.conf
GSM_EVENT_FILTERS = [
    'live,zone,alarm,trigger'
]

Available tags

The following tags are used across the EVO and Spectra/Magellan event maps. Use them in _EVENT_FILTERS entries.
TagDescription
alarmAny alarm event
triggerAn alarm was triggered
restoreA previous alarm or trouble condition was restored
troubleA system trouble event (AC failure, battery failure, tamper, etc.)
tamperA zone or module tamper event
armA partition was armed
disarmA partition was disarmed
after_alarmDisarmed after an alarm was active
bypassA zone bypass was toggled
fireA fire alarm
accessAn access control event (door access)
grantedAccess was granted
deniedAccess was denied
cancelAn alarm was cancelled
clockA clock/time-related trouble (use -clock to exclude clock trouble from trouble filters)
supervisionA wireless supervision event
silent_alarmA silent alarm
buzzer_alarmA buzzer alarm
steady_alarmA steady alarm
pulse_alarmA pulse alarm
strobeA strobe alarm
medicA paramedic/medical alarm
The live tag is not defined in the event maps. Tag-based filters using live are interpreted as “the event happened in real time” as opposed to historical events retrieved from the panel log. If your setup sends historical events at startup, use live to restrict notifications to real-time events only.

Per-interface configuration

Every notification interface has its own independent set of filter settings. The interface prefix replaces the generic prefix:
pai.conf
PUSHBULLET_EVENT_FILTERS = [
    'live,alarm,-restore',
    'trouble,-clock',
    'live,tamper',
]
# PUSHBULLET_ALLOW_EVENTS = [r".*"]
# PUSHBULLET_IGNORE_EVENTS = []
PUSHBULLET_MIN_EVENT_LEVEL = 'INFO'
pai.conf
PUSHOVER_EVENT_FILTERS = [
    'live,alarm,-restore',
    'trouble,-clock',
    'live,tamper',
]
# PUSHOVER_ALLOW_EVENTS = [r".*"]
# PUSHOVER_IGNORE_EVENTS = []
PUSHOVER_MIN_EVENT_LEVEL = 'INFO'
pai.conf
SIGNAL_EVENT_FILTERS = [
    'live,alarm,-restore',
    'trouble,-clock',
    'live,tamper',
]
# SIGNAL_ALLOW_EVENTS = [r".*"]
# SIGNAL_IGNORE_EVENTS = []
SIGNAL_MIN_EVENT_LEVEL = 'INFO'
pai.conf
GSM_EVENT_FILTERS = [
    'live,zone,alarm,trigger'
]
# GSM_ALLOW_EVENTS = [r".*"]
# GSM_IGNORE_EVENTS = []
GSM_MIN_EVENT_LEVEL = 'CRITICAL'
GSM defaults to CRITICAL minimum level and a very narrow tag filter to minimize SMS costs. Widen these carefully.
pai.conf
HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS = [
    'live,alarm,-restore',
    'trouble,-clock',
    'live,tamper',
]
# HOMEASSISTANT_NOTIFICATIONS_ALLOW_EVENTS = [r".*"]
# HOMEASSISTANT_NOTIFICATIONS_IGNORE_EVENTS = []
HOMEASSISTANT_NOTIFICATIONS_MIN_EVENT_LEVEL = 'INFO'

MIN_EVENT_LEVEL

Each interface also has a minimum event level threshold. Events below this level are dropped before any filter is applied.
LevelDescription
DEBUGAll events
INFOInformational and above (default for most interfaces)
WARNWarnings and above
ERRORErrors and above
CRITICALCritical events only (default for GSM)
Set the level in your config:
pai.conf
PUSHBULLET_MIN_EVENT_LEVEL = 'WARN'
GSM_MIN_EVENT_LEVEL = 'CRITICAL'

Build docs developers (and LLMs) love