pai.conf (Python/YAML/JSON) file or via environment variables prefixed with PAI_ (e.g. PAI_MQTT_ENABLE=True).
Configuration files are searched in this order: current directory,
~/.local/etc, /etc/pai, /usr/local/etc/pai. Supported formats are .conf / .py, .json, and .yaml.Logging
Console log level. Use Python
logging constants: logging.DEBUG (10), logging.INFO (20), logging.WARNING (30), logging.ERROR (40), logging.CRITICAL (50).File log level. Same values as
LOGGING_LEVEL_CONSOLE.Path to the log file, e.g.
/var/log/paradox.log. Set to None to disable file logging.Maximum log file size in MB before rotation. Range: 0–4294967295.
Number of rotated log files to keep. Range: 0–4294967295.
Dump raw packets to the log. Useful for low-level protocol debugging.
Dump decoded messages to the log.
Dump panel status to the log on every poll.
Dump full event details to the log.
Dump panel memory on startup. Development use only.
Connection
Transport type to use when connecting to the panel. Valid values:
Serial, IP.Serial connection
Pathname of the serial port device, e.g.
/dev/ttyUSB0.Baud rate of the serial port. Use
9600 for SP/MG panels. For EVO panels use 38400 (default EVO setting) or 57600. For EVO+ use 115200.IP connection
Hostname or IP address of the IP150 module.
TCP port of the IP150 module. Range: 1–65535.
IP module password. The factory default is
paradox.Paradox SITE ID for cloud-based connections. When set, PAI connects via the Paradox cloud instead of directly to the IP module.
Email address registered for the SITE ID connection.
Panel serial number for multi-panel SITE ID setups. Set to
None to use the first panel found.Connect directly to the panel without an IP150 module. Use this for serial-over-TCP tunnels.
Panel behavior
Interval in seconds between panel status polls.
Timeout in seconds for individual I/O operations.
Restrict which elements PAI monitors. By default all elements are monitored. Specify ranges or lists per element type.
pai.conf
Encoding used when decoding element labels from the panel. Use
paradox-* values or any Python standard encoding.Interval in seconds between full label refreshes from the panel. Default is 15 minutes (900 s). Range: 0–4294967295.
Duration in seconds for a PGM output pulse command. Range: 0–4294967295.
Periodically synchronize the panel clock when drift exceeds
SYNC_TIME_MIN_DRIFT.Minimum clock drift in seconds before triggering a time sync. Range: 120–4294967295.
Timezone for panel time synchronization (e.g.
Europe/London). Defaults to the PAI host timezone when empty.PC Password for panel communication. Set to
None if the panel has no password configured. Found in Babyware under Panel Properties → PC Communication → PC Communication tab.Interval in seconds between reads of battery, DC, and VDC voltages. Range: 0–4294967295.
Always push power voltage readings to interfaces even if the values have not changed.
Always push all state updates to interfaces even if nothing has changed.
MQTT
Enable the MQTT interface.
Hostname or IP address of the MQTT broker.
TCP port of the MQTT broker. When
MQTT_TLS_CERT_PATH is set this becomes the TLS port. Range: 1–65535.Path to a CA certificate file for TLS connections, e.g.
/etc/pai/certs/ca.pem. Set to None for plain TCP.MQTT keepalive interval in seconds. Range: 1–3600.
MQTT broker username. Set to
None for unauthenticated connections.MQTT broker password.
Publish all messages with the MQTT retain flag.
MQTT QoS level for published messages.
0 = fire and forget, 1 = at least once, 2 = exactly once. Range: 0–2.MQTT protocol version. Valid values:
3.1, 3.1.1, 5.MQTT transport layer. Valid values:
tcp, websockets.Local network address to bind the MQTT client to. Empty string lets Paho choose automatically.
Local port to bind the MQTT client to.
0 lets Paho choose automatically.Interval in seconds for republishing all state data to MQTT (default 12 hours). Range: 60–4294967295.
Publish element definitions (partition/zone/user metadata) to MQTT. Not required in most setups.
Publish
0 and 1 instead of False and True for boolean state values.Map of MQTT toggle codes for controlling outputs.
Publish data in MQTT Dash format.
MQTT topic for MQTT Dash data.
Path to the MQTT Dash template file.
Shared secret for MQTT command authorization challenge. When set, commands must include a valid HMAC challenge response.
Sub-topic used for the MQTT command authorization challenge exchange.
Number of HMAC rounds used in the challenge computation.
Publish the result of executed commands to
MQTT_COMMAND_STATUS_TOPIC.Sub-topic for command execution status messages.
MQTT topics
Root prefix for all PAI MQTT topics.
Sub-topic segment for zone state messages.
Sub-topic segment for partition state messages.
Sub-topic segment for bus state messages.
Sub-topic segment for bus module state messages.
Sub-topic segment for panel/system state messages.
Sub-topic segment for repeater state messages.
Sub-topic segment for user state messages.
Sub-topic segment for event messages.
Sub-topic segment for inbound control commands.
Sub-topic segment for element definition messages.
Sub-topic segment for PGM output state messages.
Sub-topic segment for door state messages.
Sub-topic segment for keypad state messages.
Sub-topic segment appended after each element name for state properties.
Sub-topic for raw event JSON messages.
Sub-topic for notification messages.
Sub-topic for triggering a panic from MQTT.
Publish raw event JSON to
{base}/{events}/{raw}.Sub-topic for PAI interface status messages (PAI run state, availability).
Sub-topic for Home Assistant specific control commands.
Root topic prefix used for Home Assistant MQTT discovery messages.
MQTT Home Assistant auto discovery
Publish Home Assistant MQTT discovery payloads so that partitions and zones appear automatically in HA.
Alarm code to embed in Home Assistant discovery payloads (used by the HA alarm panel card).
Prefix string for all Home Assistant entity names. Supports
{serial_number} and {model} placeholders, e.g. Paradox {serial_number} .Prefix entity names with the device ID (
Paradox 12345678).List of partition property names to publish for Home Assistant discovery.
List of zone property names to publish for Home Assistant discovery.
Home Assistant notifications
Requires Home Assistant Supervisor (HASS.io) or a Long-Lived Access Token.
Enable pushing PAI events as Home Assistant notifications.
Home Assistant REST API endpoint for triggering notification services.
Long-Lived Access Token for authenticating with the HA API when not using Supervisor.
URI to open in the HA app when the notification is tapped.
Name of the HA notifier service to call.
Minimum event severity to send as a notification. Valid values:
DEBUG, INFO, WARN, ERROR, CRITICAL.Tag-based event filters. Each entry is a comma-separated list of tags to match (prefix with
- to exclude). Used when HOMEASSISTANT_NOTIFICATIONS_ALLOW_EVENTS is not set.Whitelist of regexp patterns matching
type,label,property=value event strings. When set, overrides EVENT_FILTERS.Regexp patterns to exclude from events that matched
ALLOW_EVENTS.Pushbullet
Enable the Pushbullet interface.
Pushbullet API authentication key.
Pushbullet device name to send notifications from.
Pushbullet user identifiers allowed to receive notifications and send commands.
Minimum event severity for Pushbullet notifications. Valid values:
DEBUG, INFO, WARN, ERROR, CRITICAL.Tag-based event filters for Pushbullet.
Regexp whitelist for Pushbullet events.
Regexp exclusion list for Pushbullet events.
Pushover
Enable the Pushover interface.
Pushover application token.
List of Pushover user or group key objects to receive notifications. Each object has a
user_key and devices field (* or a comma-separated list of device names).pai.conf
Minimum event severity for Pushover notifications. Valid values:
DEBUG, INFO, WARN, ERROR, CRITICAL.Tag-based event filters for Pushover.
Regexp whitelist for Pushover events.
Regexp exclusion list for Pushover events.
Signal
Enable the Signal messenger interface.
Signal contact phone numbers allowed to control the panel and receive event notifications.
Minimum event severity for Signal notifications. Valid values:
DEBUG, INFO, WARN, ERROR, CRITICAL.Tag-based event filters for Signal.
Regexp whitelist for Signal events.
Regexp exclusion list for Signal events.
GSM
Enable the GSM/SMS interface.
Serial port path for the GSM modem, e.g.
/dev/ttyUSB0.Baud rate for the GSM modem serial connection. Range: 9600–115200.
Phone numbers allowed to receive SMS notifications and send panel control commands.
Minimum event severity for GSM/SMS notifications. Valid values:
DEBUG, INFO, WARN, ERROR, CRITICAL.Tag-based event filters for GSM.
Regexp whitelist for GSM events.
Regexp exclusion list for GSM events.
IP interface
Enable the IP socket interface that emulates an IP150 module.
Local address for the IP interface to listen on.
TCP port for the IP interface. Range: 1–65535.
Password for authenticating clients connecting to the IP interface.
Interfaces
Aliases for text-based interface commands (Signal, Pushbullet, GSM). Maps short alias strings to full PAI commands.See Command Alias Reference for full details and available commands.
Aliases for MQTT control topic commands. Maps external command names (e.g. Home Assistant / Homebridge state strings) to PAI partition commands.See Command Alias Reference for full details.