---
title: "Paradox Alarm Panels via PAI (MQTT)"
description: "Connect Paradox Spectra SP, Magellan MG and Digiplex EVO alarm panels to TapHome over MQTT through the open-source PAI bridge — partition, zones and PGM."
url: "https://taphome.com/en/compatibility/paradox-pai-mqtt/"
language: en
lastmod: 2026-11-04
generator: hugo
ai:
  topics: ["mqtt","alarm-system","security","zone-monitoring","arming","open-source-bridge"]
  questions: ["How does a Paradox alarm communicate with TapHome?","Is there a TapHome template for Paradox alarm panels?","Can TapHome arm and disarm a Paradox Spectra or Magellan alarm?","What do I need to connect a Paradox alarm to TapHome over MQTT?","Why does PAI not connect to my Paradox SP6000+ or MG5050+?","How to connect a Paradox alarm to TapHome without PAI?"]
---

# Paradox Alarm Panels via PAI (MQTT)

Communication: Packet Parser → MQTT

- [Paradox Official Website](https://www.paradox.com)
- [PAI — Paradox Alarm Interface (GitHub)](https://github.com/ParadoxAlarmInterface/pai)
- [PAI MQTT Interface (wiki)](https://github.com/ParadoxAlarmInterface/pai/wiki/MQTT-Interface)

The Paradox PAI template connects Paradox alarm panels — Spectra SP, Magellan MG and Digiplex EVO — to TapHome over MQTT through PAI, the Paradox Alarm Interface. PAI is an open-source bridge, not a Paradox product. It runs on a small computer next to the panel (for example a Raspberry Pi, a NAS or a Home Assistant host), talks to the panel over its serial port or an IP150 module, and publishes the state of the panel to an MQTT broker. TapHome reads those messages and sends arming commands back. Paradox does not publish the protocol PAI uses.

The template shows the state of one partition and arms or disarms it, shows four zones with their warnings, and switches one PGM output. For Digiplex EVO panels with the PRT3 module there is a separate template that uses the official protocol of Paradox and needs no computer: [Paradox Digiplex EVO via PRT3 (TCP)](https://taphome.com/en/compatibility/paradox-evo-prt3-tcp/).

> [!WARNING]
> **Community template — not yet tested with TapHome on a real panel.** The template was generated in the TapHome portal from the PAI documentation and tested only against a simulated PAI and panel on a local TapHome Core 2025.2, not on a real Paradox panel. Verify it on your installation before you rely on it for security; feedback from the field is welcome. Download the XML on this page, or get it from the TapHome portal: [Paradox via PAI — community template](https://portal.taphome.com/portal/community/paradox-pai-mqtt), and import it as a new module.

**[Paradox alarm (Spectra SP, Magellan MG, Digiplex EVO) through PAI over MQTT](https://portal.taphome.com/en/portal/community/paradox-pai-mqtt)** — Paradox, MQTT. Paradox SP, MG and EVO panels through PAI, the open-source Paradox Alarm Interface, over MQTT: partition arming and state, four zones with alarm, tamper and low-battery warnings, one PGM output.

> [!DANGER]
> **Security: anyone who can publish to the broker can disarm the alarm.** PAI arms and disarms the panel **without the user code** of the panel. Turn on a username and password on the MQTT broker (the broker built into TapHome supports it) and enter them in PAI and in this template.

## Supported panels

| Family | Models | Notes |
|---|---|---|
| Spectra SP | SP4000, SP5500, SP6000, SP7000, SP65 | On the "+" models (SP5500+, SP6000+, SP7000+) the serial port is locked for devices of other manufacturers. Paradox sells an unlock code, or connect PAI through an IP150 |
| Magellan MG | MG5000, MG5050, MG5050+, MG5075 | MG5050+ has the locked serial port as well. MG6250 is only experimental in PAI |
| Digiplex EVO | EVO48, EVO96, EVO192, EVOHD | EVO firmware 7.50 and newer encrypts the serial port; PAI 3.8 supports it with the PC password. EVO has no Sleep arming |

## Hardware connection

PAI connects to the panel in one of these ways:

- **Serial port of the panel** — with a USB-to-TTL adapter to the computer running PAI, or with an ESP32 serial bridge on the local network.
- **IP150 module** on the local network. An IP150 accepts one client at a time: while PAI is connected, the Paradox apps Insite Gold and BlueEye cannot connect through the same module. An IP150+ with firmware 6.x and the IP180 do not allow local connections.

The computer with PAI and the TapHome Core have to reach the same MQTT broker — usually the broker built into the TapHome Core.

## Configuration

### MQTT broker in TapHome

Turn on the MQTT Broker in TapHome and set a username and password — see [MQTT Broker](https://taphome.com/en/docs/integration/packet-parser/mqtt-broker/). PAI and this template log in to the broker with them.

### PAI

In the PAI configuration, point MQTT to the broker TapHome uses. For the broker built into TapHome this is the IP address of the TapHome Core — the name `taphome.mqtt.broker.local` works only inside the Core, not for PAI:

```yaml
MQTT_ENABLE: true
MQTT_HOST: 192.168.1.10        # IP address of the TapHome Core with the built-in broker
MQTT_PORT: 1883
MQTT_USERNAME: pai
MQTT_PASSWORD: 'replace-me'
MQTT_BASE_TOPIC: paradox
MQTT_RETAIN: true              # default: the broker keeps the last state for TapHome
```

`MQTT_USE_NUMERIC_STATES` may stay at its default (`False`); the template reads both `True`/`False` and `1`/`0`.

### Keys of the partition, zones and PGM

PAI names each partition, zone and PGM by its label in the panel, with spaces and special characters replaced by `_` (for example `Front door` → `Front_door`). Read the keys from the broker after PAI starts, for example:

```
mosquitto_sub -h 192.168.1.10 -u pai -P 'replace-me' -t 'paradox/states/#' -v
```

```
paradox/states/partitions/Area_1/current_state disarmed
paradox/states/zones/Front_door/open False
paradox/states/outputs/Gate/on False
```

The part after `partitions/`, `zones/` and `outputs/` is the key. Keys are case-sensitive.

### Import parameters

| Import parameter | Description | Default |
|---|---|---|
| MQTT broker address | `taphome.mqtt.broker.local` for the broker built into TapHome, or the address of another broker | `taphome.mqtt.broker.local` |
| MQTT broker port | Port of the broker | `1883` |
| MQTT broker username, password | The broker account | (empty) |
| PAI base topic | `MQTT_BASE_TOPIC` of PAI | `paradox` |
| Partition key | Key of the partition | `Area_1` |
| Zone 1–4 keys | Keys of four zones | `Zone_1` … `Zone_4` |
| PGM output key | Key of one PGM output | `PGM_1` |

For more partitions or zones, import the template again with other keys and delete the devices you do not need.

## Device capabilities

### Partition

Shows the state of the partition and arms or disarms it.

| State | PAI `current_state` | When selected in TapHome |
|---|---|---|
| Disarmed | `disarmed` | sends `disarm` |
| Armed | `armed_away` | sends `arm` |
| Armed Stay | `armed_home` | sends `arm_stay` |
| Armed Sleep | `armed_night` | sends `arm_sleep` (SP and MG only) |
| Arming | `arming` (exit delay) | sends nothing |
| Alarm | `triggered` | sends nothing |

Commands are published to `paradox/control/partitions/<key>` without the retain flag, as PAI requires. Arming and Alarm are states reported by the panel and never send a command. When the TapHome Core starts, the partition takes its state from the retained PAI message and sends nothing.

### Zones 1–4

Each zone shows whether it is open or closed. Warnings show when the zone is in alarm, tampered or bypassed, or when a wireless zone has a low battery. Each warning stays until PAI reports the state as cleared.

### PGM output

Switches one PGM output of the panel on or off and shows its state. Whether a PGM can be switched depends on the panel and on how the installer programmed it. When the TapHome Core starts, the PGM takes its state from PAI and is not switched.

### Module

The module shows an error when PAI reports itself offline (`paradox/interface/availability`), for example when PAI lost the connection to the panel or stopped.

## Without PAI

A PGM output of the panel wired to a TapHome input (armed, alarm) and a TapHome relay wired to a keyswitch zone of the panel work with every Paradox panel, with fewer states and no zone details.

## Troubleshooting

### No states in TapHome

Check that PAI runs and publishes (`mosquitto_sub … -t 'paradox/#'`), that the base topic and the keys match exactly, and that `MQTT_RETAIN` is on in PAI.

### Arming does nothing

Check that PAI and TapHome use the same broker, and read `paradox/interface/command_status` for the answer of PAI. On EVO, Armed Sleep is not available.

### Module error "PAI reports offline"

PAI lost the panel or stopped; see the PAI log.

### PAI does not connect to the panel

On SP5500+, SP6000+, SP7000+ and MG5050+ the serial port is locked — ask Paradox for the unlock code, or connect through an IP150. While PAI is connected through an IP150, close Insite Gold and BlueEye. An IP150+ with firmware 6.x or an IP180 does not allow PAI to connect locally.

## Available devices

Paradox PAI MQTT Bridge Module

Custom Variables

`baseTopic` (string) Base topic of PAI (MQTT\_BASE\_TOPIC in the PAI configuration), default paradox

Enter the same value as MQTT\_BASE\_TOPIC in the PAI configuration as the import parameter PAI base topic.

Partition Multi-value Switch

State of one partition of the panel and arming or disarming it; Arming and Alarm are only shown and send nothing

enum string

Values / States: Disarmed · Armed · Armed Stay · Armed Sleep · Arming · Alarm

Variable: `partitionKey` — Key of the partition as PAI publishes it in paradox/states/partitions/&lt;key&gt;, for example Area\_1

Zone 1 Reed Contact Read-only

Open or closed state of one zone of the panel, with warnings for alarm, tamper, low battery of a wireless zone and bypass

boolean

Variable: `zoneKey` — Key of the zone as PAI publishes it in paradox/states/zones/&lt;key&gt;, for example Front\_door

Zone 2 Reed Contact Read-only

Open or closed state of one zone of the panel, with warnings for alarm, tamper, low battery of a wireless zone and bypass

boolean

Variable: `zoneKey` — Key of the zone as PAI publishes it in paradox/states/zones/&lt;key&gt;, for example Front\_door

Zone 3 Reed Contact Read-only

Open or closed state of one zone of the panel, with warnings for alarm, tamper, low battery of a wireless zone and bypass

boolean

Variable: `zoneKey` — Key of the zone as PAI publishes it in paradox/states/zones/&lt;key&gt;, for example Front\_door

Zone 4 Reed Contact Read-only

Open or closed state of one zone of the panel, with warnings for alarm, tamper, low battery of a wireless zone and bypass

boolean

Variable: `zoneKey` — Key of the zone as PAI publishes it in paradox/states/zones/&lt;key&gt;, for example Front\_door

PGM Output Switch

Switches one programmable output (PGM) of the panel on or off and shows its state

boolean

Values / States: ON · OFF

Variable: `outputKey` — Key of the PGM output as PAI publishes it in paradox/states/outputs/&lt;key&gt;

**Connection:** Packet Parser → MQTT

Possible improvements (6)

- Zone bypass control — The template shows the bypass state of a zone as a warning but does not bypass a zone.
- Force arming and EVO instant arming — arm\_instant exists on EVO panels only; EVO has no Sleep arming, so Armed Sleep does nothing there.
- Panic alarms — Left out on purpose: a panic command triggers a real alarm report.
- System trouble flags — Trouble flags of the panel that PAI publishes under states/system/troubles.
- Event stream — Live panel events PAI publishes as JSON when MQTT\_PUBLISH\_RAW\_EVENTS is on.
- More partitions, zones and PGM outputs — The template has one partition, four zones and one PGM. Import it again with other keys for more.

## Sources

- PAI — Paradox Alarm Interface, project README (version 3.8.1)
  
  [github.com](https://github.com/ParadoxAlarmInterface/pai) 2026-11-04
- PAI wiki — MQTT Interface (topics, states, control commands)
  
  [github.com](https://github.com/ParadoxAlarmInterface/pai/wiki/MQTT-Interface) 2026-11-04
- PAI — example configuration pai.conf.example
  
  [raw.githubusercontent.com](https://raw.githubusercontent.com/ParadoxAlarmInterface/pai/master/config/pai.conf.example) 2026-11-04
- PAI wiki — Compatibility (panels, firmware, connections)
  
  [github.com](https://github.com/ParadoxAlarmInterface/pai/wiki/Compatibility) 2026-11-04
- PAI wiki — Connection methods (serial, IP150, ESP32 bridge)
  
  [github.com](https://github.com/ParadoxAlarmInterface/pai/wiki/Connection-methods) 2026-11-04

## Related Documentation

- [MQTT Integration](https://taphome.com/en/compatibility/mqtt-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/en/docs/integration/packet-parser/)
- [Packet parser functions](https://taphome.com/en/docs/script/packet-parser/)
- [Parsing functions](https://taphome.com/en/docs/script/parsing-functions/)
- [MQTT Broker](https://taphome.com/en/docs/integration/packet-parser/mqtt-broker/)
- [Listener scripts](https://taphome.com/en/docs/script/listener-scripts/)

