github ParadoxAlarmInterface/pai 3.8.0

latest release: 3.8.1
3 hours ago

What's Changed

New hardware and connection support

  • Add PRT3 ASCII serial connections, including partition arm/disarm, zone and partition status, labels, MQTT/Home Assistant discovery, and utility-key buttons. Includes setup and usage documentation. PRT3 does not support zone bypass, direct PGM control, or panel time synchronization. See #596 and #599.
  • Add AES-256 encrypted serial communication for EVO panels with firmware 7.50 and newer, including serial-over-TCP connections and offline serial capture decryption. Enable with SERIAL_ENCRYPTED = True and the panel's PC password. See #337.
  • Add initial MG6250 serial support for authentication and session decryption, with configurable MG6250_USERNAME and PC password. This is initial support, not full panel functionality. See #622.
  • Add EVO Combus expansion-module PGM control and Home Assistant switches through MODULE_PGM_ADDRESSES. Module output state is tracked optimistically because the panel does not expose a corresponding status block. See #591.

MQTT and Home Assistant

  • Group each zone's sensors and bypass switch under its own Home Assistant device, linked to the parent panel. Existing entity unique IDs are preserved so entity IDs, customizations, and history can remain intact. See #619.
  • Add automatic discovery of system trouble sensors, including AC failure, low battery, and telephone-line troubles on Spectra/Magellan panels. See #603.
  • Stabilize panel device identifiers using the panel serial number and remove padding characters from displayed panel names/models, preventing model-text changes from creating duplicate devices. See #601.
  • Fix MQTT readiness notifications across threads and initialize interfaces that register after the broker connection is established. See #628 and #596.
  • Support paho-mqtt 2.x and its updated callback signatures. See #582.

Reliability, performance, and diagnostics

  • Fix Spectra/Magellan bypass and clear_bypass commands to check cached zone state before sending the panel's toggle command. Already-matching states succeed without toggling; unknown states are refused with a warning. Disable automatic toggle retries so a lost acknowledgement cannot undo a command. EVO behavior is unchanged. See #631.
  • Improve serial and IP packet framing: recover from malformed encrypted serial data without unbounded buffering or stalled links, correctly handle IP payloads of 256 bytes or more, retain pipelined packets, and handle empty callbacks and unencrypted payload lengths. See #610.
  • Fix startup/event-loop handling and connection lifecycle issues, including startup crashes in Docker/on newer Python versions, synchronization primitives bound to the wrong loop, and stale connection state. See #610.
  • Restore reliable outbound GSM SMS, serialize modem commands, recover from modem disconnects, bound serial-open timeouts, and fix echo suppression and overlong-line resynchronization. See #613 and #615.
  • Improve PRT3 arm/disarm state tracking, command handling, and reconnect behavior. See #596 and #599.
  • Speed up periodic status processing by approximately 2.4x, including status conversion, event creation, and zone/module flag parsing. See #625.
  • Replace the custom AES implementation with the maintained cryptography library while retaining Paradox protocol compatibility. See #624.
  • Redact sensitive identifiers in logs, add connection and uptime context, and reduce misleading error-level messages for expected non-fault conditions. See #616.
  • Report checksum failures as warnings and include hexadecimal values for unknown panel error codes. The EVO192 PGM rejection reported as error 0x1D is not resolved by these diagnostic improvements. See #602.
  • Correct Signal dependency-installation guidance to recommend PyGObject for the gi module.
  • Stop automatically making inaccessible serial devices world-writable; configure the service user's serial-port permissions explicitly.

Installation and upgrade notes

  • Python 3.9 or newer is now required, with support through Python 3.15. Upgrade Python before installing if you currently use Python 3.8 or older.
  • Published Docker images now target linux/amd64, linux/arm/v7, and linux/arm64/v8. 32-bit x86 and ARMv6 images are no longer published. Raspberry Pi 1 and the original Pi Zero/Zero W cannot use the ARMv7 image.
  • Docker builds use a Python 3.15 Debian slim multi-stage image with cached dependencies and no compiler toolchain in the runtime image.
  • Modernize Python packaging and declare runtime dependencies and optional YAML, Pushbullet, and Signal extras in pyproject.toml.
  • Home Assistant panel device identifiers change to serial-only identifiers. Check device associations and device-based automations after upgrading; zone grouping preserves existing entity unique IDs.

Routine action-version bumps, test/development dependency updates, and internal test-only changes are omitted.

Full Changelog: 3.7.0...3.8.0

Don't miss a new pai release

NewReleases is sending notifications on new releases.