Community Add-on: Paradox Alarm Interface

Start with project’s wiki page. Home · ParadoxAlarmInterface/pai Wiki (

Tamper usually means somebody has disconnected wires from the sensor.

1 Like

Thank you. Sorry, I made a fool of myself :slight_smile: . Everything really worked out. Your project is great. :+1:

Hi all,

I’m trying to integrate my EvoHD control panel with an IP150+ module

This is the error it gives me. some advice?


2024-04-09 12:13:26,851 - INFO     - PAI - Starting...
2024-04-09 12:13:26,851 - INFO     - PAI.paradox.paradox - Disconnecting from the Alarm Panel
2024-04-09 12:13:26,851 - INFO     - PAI.paradox.paradox - Clean Session
2024-04-09 12:13:26,851 - INFO     - PAI.paradox.paradox - Cleaning previous session. Closing connection
2024-04-09 12:13:26,852 - ERROR    - PAI.paradox.connections.protocols - Connection was closed: None
2024-04-09 12:13:26,852 - ERROR    - PAI.paradox.connections.connection - Connection was lost
2024-04-09 12:13:26,852 - INFO     - PAI.paradox.paradox - Disconnected from the Alarm Panel
2024-04-09 12:13:26,852 - INFO     - PAI.paradox.paradox - Connecting to interface
2024-04-09 12:13:26,852 - INFO     - PAI.paradox.connections.ip.connection - Connecting. Try 1/3
2024-04-09 12:13:26,858 - INFO     - PAI.paradox.connections.connection - Connection established
2024-04-09 12:13:26,858 - INFO     - PAI.paradox.connections.ip.commands - Authenticating with IP Module
2024-04-09 12:13:26,865 - INFO     - PAI.paradox.connections.ip.commands - Authentication Success. IP(114) Module version 20, firmware: 5.6, serial: 72054ef7
2024-04-09 12:13:26,876 - INFO     - PAI.paradox.connections.ip.commands - Session successfully established with IP Module
2024-04-09 12:13:26,877 - INFO     - PAI.paradox.paradox - Connecting to Panel
2024-04-09 12:13:26,902 - INFO     - PAI.paradox.paradox - Panel Identified EVOHD version 7.31 build 1
2024-04-09 12:13:26,902 - INFO     - PAI.paradox.paradox - Initiating panel connection
2024-04-09 12:13:26,926 - ERROR    - PAI - Restarting
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/paradox/", line 81, in run_loop
    if await alarm.full_connect():
  File "/usr/local/lib/python3.9/site-packages/paradox/", line 212, in full_connect
    if not await self.connect():
  File "/usr/local/lib/python3.9/site-packages/paradox/", line 192, in connect
    result = await self.panel.initialize_communication(cfg.PASSWORD)
  File "/usr/local/lib/python3.9/site-packages/paradox/hardware/evo/", line 172, in initialize_communication
    payload =
  File "/usr/local/lib/python3.9/site-packages/construct/", line 356, in build
    self.build_stream(obj, stream, **contextkw)
  File "/usr/local/lib/python3.9/site-packages/construct/", line 368, in build_stream
    self._build(obj, stream, context, "(building)")
  File "/usr/local/lib/python3.9/site-packages/construct/", line 2024, in _build
    buildret = sc._build(subobj, stream, context, path)
  File "/usr/local/lib/python3.9/site-packages/construct/", line 2493, in _build
    return self.subcon._build(obj, stream, context, path)
  File "/usr/local/lib/python3.9/site-packages/construct/", line 4386, in _build
    buildret = self.subcon._build(value, stream, context, path)
  File "/usr/local/lib/python3.9/site-packages/construct/", line 2024, in _build
    buildret = sc._build(subobj, stream, context, path)
  File "/usr/local/lib/python3.9/site-packages/construct/", line 2493, in _build
    return self.subcon._build(obj, stream, context, path)
  File "/usr/local/lib/python3.9/site-packages/construct/", line 2761, in _build
    return self.subcon._build(obj, stream, context, path)
  File "/usr/local/lib/python3.9/site-packages/construct/", line 865, in _build
    stream_write(stream, data, length, path)
  File "/usr/local/lib/python3.9/site-packages/construct/", line 109, in stream_write
    raise StreamError("bytes object of wrong length, expected %d, found %d" % (length, len(data)), path=path)
construct.core.StreamError: Error in path (building) -> fields -> pc_password
bytes object of wrong length, expected 2, found 3

Here the PAI conf on Hassio:

  zone: auto
  user: 1-10
  door: ""
  pgm: 1-5
  partition: auto
  module: ""
  repeater: ""
  keypad: ""
  key-switch: ""
PASSWORD: "000000" (installer password)
MQTT_HOST: core-mosquitto
  arm: partition all arm
  disarm: partition all disarm
  armed_home: arm_stay
  armed_night: arm_sleep
  armed_away: arm
  disarmed: disarm
  - live,alarm,-restore
  - trouble,-clock
  - live,tamper
  - target_state
  - current_state
  - open
  - tamper
  - live,alarm,-restore
  - trouble,-clock
  - live,tamper
  - live,alarm,-restore
  - trouble,-clock
  - live,tamper
  - live,alarm,-restore
  - trouble,-clock
  - live,tamper
  - live,alarm,-restore
  - trouble,-clock
  - live,tamper
IP_INTERFACE_PASSWORD: "1234" (panel password)

I recommend reading the wiki. Home · ParadoxAlarmInterface/pai Wiki (

installer gave me wrong pc password (babyware)

Is there a possibility of disarming the alarm with a voice command by announcing the code or another solution with automation?

Hi, I’m using the PAI addon and so far it’s been great. I’m trying to get the notifications to work so I know when the alarm is armed or disarmed and by who from home assistant.

The notification part is working correctly to my mobile, but it doesn’t tell me who armed or disarmed.

I’m not sure if extra settings are required in the configuration of PAI, or where this setting comes from.

When I listed to “paradox/events/raw” in MQQT settings, I can see the arming and disarming, but no name of the person who did it.

Any ideas or tips appreciated. Thank you

Hi everyone,

I’m currently experiencing issues with setting up my Paradox SP5500 and IP150 module with PAI. It was working perfectly when connected directly via IP, but since the monitoring center connected to it, I can’t seem to connect through the local IP anymore. Additionally, I tried using the SWAN service, but it’s also failing. Note that I set-up Blue Eye since the beginning; when I was connected to it I could login through PAI, but as soon as I disconnected Blue Eye PAI was working normally. Now, Blue Eye works, but PAI doesn’t, even if I’m not connected to Blue Eye.


Local IP Connection Failure:
When trying to connect locally, it fails with the following logs:

2024-05-26 13:14:03,326 - INFO     - MainThread - PAI.paradox.connections.ip.connection - Connecting. Try 3/3
2024-05-26 13:14:03,329 - ERROR    - MainThread - PAI.paradox.connections.ip.connection - Connect failed (try 3/3): [Errno 111] Connect call failed ('', 10000)
2024-05-26 13:14:03,329 - ERROR    - MainThread - PAI.paradox.paradox - Failed to connect to interface
2024-05-26 13:14:03,330 - ERROR    - MainThread - PAI - Unable to connect to alarm
2024-05-26 13:14:03,330 - DEBUG    - MainThread - PAI.paradox.interfaces.mqtt.core - MQTT: paradox/interface/pai_status=error
2024-05-26 13:14:03,331 - DEBUG    - MainThread - PAI.paradox.interfaces.mqtt.core - MQTT: paradox/interface/availability=offline

SWAN Service Connection Failure:
When attempting to connect via SWAN, I receive the following error:

2024-05-25 14:34:05,169 - INFO     - PAI - Starting...
2024-05-25 14:34:05,170 - INFO     - PAI.paradox.paradox - Connecting to interface
2024-05-25 14:34:05,170 - INFO     - PAI.paradox.paradox - Using IP Connection
2024-05-25 14:34:05,381 - INFO     - PAI.paradox.connections.ip.connection - Connecting. Try 1/3
2024-05-25 14:34:05,381 - INFO     - PAI.paradox.connections.ip.stun_session - Connecting to Site: ****
2024-05-25 14:34:05,381 - INFO     - PAI.paradox.connections.ip.stun_session - Getting site info
2024-05-25 14:34:05,643 - ERROR    - PAI.paradox.connections.ip.connection - Unhandled exception while connecting (try 1/3): Unable to find module with desired  panel serial
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/paradox/connections/ip/", line 28, in connect
    await self._try_connect()
  File "/usr/local/lib/python3.11/site-packages/paradox/connections/ip/", line 148, in _try_connect
    await self.stun_session.connect()
  File "/usr/local/lib/python3.11/site-packages/paradox/connections/ip/", line 44, in connect
    raise ConnectToSiteFailed("Unable to find module with desired panel serial")
paradox.exceptions.ConnectToSiteFailed: Unable to find module with desired panel serial

Has anyone encountered similar issues after their alarm system was connected by a monitoring center? Could it be that the center’s connection settings are interfering with my local connection attempts? Any specific tips for connecting with SWAN?

Thanks in advance!

Hello everyone,

I am new to the PAI addon. Recently i managed to get the installation running on HA and all was working well until i decided to mess around with Babyware and label zones etc…

Now when i try to Arm the alarm i get the following errors:

2024-06-01 18:48:05,150 - INFO - PAI.paradox.interfaces.mqtt.core - MQTT Broker Connected

2024-06-01 18:48:07,405 - INFO - PAI.paradox.interfaces.mqtt.basic - message topic=paradox/control/partitions/Area_1, payload=arm

2024-06-01 18:48:07,406 - INFO - PAI.paradox.interfaces.mqtt.basic - Partition command: Area_1=arm user: None

2024-06-01 18:48:07,407 - ERROR - PAI.paradox.paradox - No partitions selected

2024-06-01 18:48:07,408 - WARNING - PAI.paradox.interfaces.mqtt.basic - Partition command refused: Area_1=arm user: None

So Area 1 is the entire house which consisits of 8 zones at the moment.

User from what i can see in babyware are the installer and user 001

Given that i have used autodiscovery in mqtt, I am not sure where i should select the partition if i have to and the user?

Any help on this would be appreciated.

Hey. Most probably you have renamed the partition. It used to be a name “Area 1” and now it has a different name. If you have renamed something I recommend you to delete whole device in HomeAssistant and restart PAI.

Thanks @yozik04. I ended it up doing that and starting from scratch

I use PAI and I would like to have the possibility of disarming the alarm with a voice command (the 4 digits of the code) which would be more practical when I arrive by car (my garage is protected). Is it possible ?

Not sure about voice, but i have the ability to arm and disarm the alarm as well as open and close garage (and other functions) through Home assistant for CarPlay. I am sure it is also possible for android auto.

I also open my garage door using a voice command with my iPhone and Home Assistant Companion but I don’t see how to arm or disarm the alarm?

With latest HA version, 2024.6.x, something has changed in alarm panel where you cannot arm or disarm without a code, while it was possible until 2024.5.x

This post is full of people with same error from various alarm integration or addon.

While when you defne a manual, template or mqtt alarm panel you can add a code_arm_required option set to false to bypass it, in the integration/addon alarm panel, you cannot.

My question is if this is something that has to be solved by HA team or not…
Or if there is a workaround


@woody4165 I have just tried and yes I got the same. So that messes up my watch and CarPlay actions!

However disarm doesn’t require a code. And I have noticed if you use the mushroom alarm card, when you arm, it comes up with a keypad to enter the code and that works for some reason.

@woody4165 I found this:

I can confirm it works! Go to your partition (s) and enter the code! That’s it!

1 Like


Very easy, but not easy to find.

Is there a way to have the code inserted every time, instead of updating the Default code field?


@woody4165 If you mean you want to enter the code every time to arm and disarm, then use the mushroom alarm panel. But then you would have to remove the code in default that was just entered.

Now that the code has been entered in the default, the mushroom card does not give the keypad option and doesn’t require a code.

I am not sure how do it through mqtt way.

1 Like