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 = Trueand the panel's PC password. See #337. - Add initial MG6250 serial support for authentication and session decryption, with configurable
MG6250_USERNAMEand 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
bypassandclear_bypasscommands 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
cryptographylibrary 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
0x1Dis not resolved by these diagnostic improvements. See #602. - Correct Signal dependency-installation guidance to recommend PyGObject for the
gimodule. - 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, andlinux/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