New Integration: Paradox EVO alarm

I got the code installed and can view sensor status and arm/disarm, but I can work out how to trigger a panel PGM to open my gate. Can anyone share sample setup code?

Updated the project. Just added unique_id, device registration entries. Paradox alarm will show as a device in MQTT config and you should now be able to customize entities from the HASS GUI.

Hi,

@DaveOke great script, thanks for it.

here are my steps to run nodeJS ParadoxHassMQTT app on hass.io ( in my case on RPI4)

  1. first step is to install portainer addon
    GitHub - hassio-addons/addon-portainer: Portainer - Home Assistant Community Add-ons

  2. create a portainer image
    portainer:
    add container
    name: pdx_for_image
    image: alpine
    commands&logging: interactive&tts
    restart policy: always
    runtime&resources.add devices: /dev/ttyUSB0 /dev/ttyUSB0
    => deploy

container.exec console
/bin/ash
root
=>connect to container

  1. test & run the app
    apk add --update npm
    adduser root dialout
    cd tmp
    apk add --no-cache nodejs
    apk add --no-cache make gcc g++ python2 linux-headers udev
    wget https://github.com/DaveOke/ParadoxHassMQTT/archive/master.zip
    unzip master.zip
    cd ParadoxHassMQTT-master
    npm install --unsafe-perm
    edit settings in app.js
    node app.js

now, the app should starts and shows something like this:

Serial Port: ttyUSB0 opened.
Registering Zone: home_door with HA with payload: {“name”:“PDX2_DOOR”,“device_class”:“door”,“state_topic”:“homeassistant/binary_sensor/dvere/state”,“unique_id”:“dvere”,“device”:{“identifiers”:[“Paradox_EVO_0x123abc”],“name”:“Paradox Alarm Panel”,“manufacturer”:“Paradox”,“model”:“EVO 192”}}
MQTT Connected!
Sending default status for: home_door, Status: C

done

troubleshooting hints, testing serialport library:
npx @serialport/list
npx @serialport/terminal -p /dev/ttyUSB0 (here you should see commands from Paradox)

  1. last step: how to start the script when hass restarts
    container stop
    in container detail → create image
    give it a name like pdx_image
    ->create

add container
image: pdx_image (our alpine image with the installed app)
name: pdx
command: node /tmp/ParadoxHassMQTT-master/app.js
this line starts the app when container starts
commands&logging: interactive&tts
restart policy: always
runtime&resources.add devices: /dev/ttyUSB0 /dev/ttyUSB0
=> deploy

that’s all
go to logs and there you can see console output

What is the process to update when we already have the setup working on an older version?
Thank you!

Thanks for this nice script and the update.
Unfortunately the log stops always after registering the zones and sending the default status without connecting to MQTT.
I have the following message between registering the zones and sending the default status
,Unknown message from panel: UL001Philippe
,Unknown message from panel: AL001
Any advice?

Same here, only with the « arm home ».
With « arm » or « arm away » it report correctly.

Hello,

I need some advice from you guys!
I want to pair the system so that it works together. Paradox with PRT3 module with HA on Pi3.
So I connect both systems with usbA-usbB cable.
From paradox “Babyware” settings:


From HA PAI settings:
PAI
And I get communication error from PAI logs:

2021-08-24 16:39:40,938 - INFO     - PAI.paradox.connections.serial_connection - Connecting to serial port /dev/ttyUSB0
2021-08-24 16:39:40,951 - INFO     - PAI.paradox.connections.serial_connection - Serial port open
2021-08-24 16:39:40,957 - INFO     - PAI.paradox.paradox - Connecting to Panel
2021-08-24 16:39:45,983 - ERROR    - PAI.paradox.paradox - Timeout while connecting to panel. Is an other connection active?
2021-08-24 16:39:45,986 - ERROR    - PAI - Unable to connect to alarm
2021-08-24 16:40:16,016 - INFO     - PAI - Starting...
2021-08-24 16:40:16,017 - INFO     - PAI.paradox.paradox - Disconnecting from the Alarm Panel
2021-08-24 16:40:16,026 - INFO     - PAI.paradox.paradox - Clean Session
2021-08-24 16:40:16,030 - INFO     - PAI.paradox.paradox - Cleaning previous session. Closing connection
2021-08-24 16:40:16,060 - ERROR    - PAI.paradox.connections.protocols - Connection was closed: None
2021-08-24 16:40:16,064 - ERROR    - PAI.paradox.connections.serial_connection - Connection to panel was lost
2021-08-24 16:40:16,071 - INFO     - PAI.paradox.paradox - Disconnected from the Alarm Panel
2021-08-24 16:40:16,073 - INFO     - PAI.paradox.paradox - Connecting to interface
2021-08-24 16:40:16,078 - INFO     - PAI.paradox.connections.serial_connection - Connecting to serial port /dev/ttyUSB0
2021-08-24 16:40:16,091 - INFO     - PAI.paradox.connections.serial_connection - Serial port open
2021-08-24 16:40:16,097 - INFO     - PAI.paradox.paradox - Connecting to Panel

What I’m doing wrong?
Do I need USB-TTL adapter?
Maybe my PRT configuration is incorrect?
I try with different baud rate settings and change different protocols, try with disabled LAN on IP150


I also had communications issues at first and it turned out that the settings that I was entering into the alarm system through the software wasn’t actually applying on the system.
It finally worked when I entered them directly on the control panel.

FYI, I’m also using a USB cable A-B and it’s working correctly.
I’m currently running Home Assistant Core on a Pi4, but I also runned with success on a Pi3 in the past.
Also, see bellow my config in app.js file for serial communication.

Good luck!

1 Like

Hey guys, I’m noob at this and was wondering if I could use Shelly UNI to connect it to serial (EVO192) and then connect it to HA by mqtt or regular shelly integration. Found few other solutions by using official IP150+ which is very expensive or building up Eth/USB with Arduino dmylnka/Paradox-Ethernet-USB-Interface: Paradox Ethernet - USB Interface(github.com)

worked perfectly! Great Manual.

Only thing that is not working: any arm or disarm from the Blue Eye App or at the panel does not refresh the status in HA. Any idea?

npx @serialport/terminal -p /dev/ttyUSB0 (here you should see commands from Paradox)
what kind of commands do you see?

same problem here. Any idea?

Hello [GiZMoSK], when I activate the serial port I cannot listen parallel npx @serialport/terminal -p /dev/ttyUSB0. It says the serial port is already connected. Any idea?

One more thing: I have figured out that activation and deactivation my BlueEye or by Babyware is done by a User “Software” I think this leads to a different message, such as “disarmed by Software”. I guess this is the reason.

I git it working with well with the setup from [GiZMoSK] in Portainer, some minor adjustments.

  1. I use normal Hassio setup on RPi4 and Hassio Image.
  2. you need to install Node and npm in your Docker otherwise “npm install --unsafe-perm” won`t work. I used this https://www.instructables.com/Install-Nodejs-and-Npm-on-Raspberry-Pi/
  3. for the final Container I used instead of “command: node /tmp/ParadoxHassMQTT-master/app.js” following “command: /usr/bin/node /tmp/ParadoxHassMQTT-master/app.js”

My app.js (i only got mqtt working with full server link, no localhost):

var configuration = {                                                          
    mqttAddress: "mqtt://core-mosquitto.local.hass.io",                        
    mqttUsername: "xxx",                                                      
    mqttPassword: "xxx",                            
    baudRate: 57600,                                                           
    device: "ttyUSB0",                                                         
    areaCount: 2,                                    
    userCount: 10, // NOT CURRENTLY USED (just reads user names from the panel)
    panelUserCode: "xxxx",                                  
    zoneConfiguration: {                                               
        1: {"name": "", "device_class": "moisture"},                   
        2: {"name": "", "device_class": "moisture"},                   
        4: {"name": "", "device_class": "smoke"},                      
        8: {"name": "", "device_class": "tamper"},                     
        10: {"name": "", "device_class": "door"},                        
        11: {"name": "", "device_class": "motion"},                      
        12: {"name": "", "device_class": "motion"},                      
        13: {"name": "", "device_class": "motion"},                      
        14: {"name": "", "device_class": "motion"},                            
        15: {"name": "", "device_class": "motion"},                                              
        16: {"name": "", "device_class": "smoke"},                                               
        17: {"name": "", "device_class": "smoke"},                             
        18: {"name": "", "device_class": "moisture"},                                            
        19: {"name": "", "device_class": "moisture"},                  
        20: {"name": "", "device_class": "window"},                            
        21: {"name": "", "device_class": "window"},                            
        22: {"name": "", "device_class": "window"},                            
        23: {"name": "", "device_class": "window"},                            
        25: {"name": "", "device_class": "smoke"},   
        26: {"name": "", "device_class": "smoke"},                             
        26: {"name": "", "device_class": "moisture"},                          
    },                                               
    pgmConfiguration: {                                                        
        1: {"name": "Haus (Area1)", "device_class": "safety"},
        2: {"name": "Wasser/Feuer (Area 2)", "device_class": "safety"},
        3: {"name": "Trouble", "device_class": "problem"},             
        4: {"name": "vZone30", "device_class": "motion"},              
    },                                                        
    virtualZoneConfiguration: {                                        
        1: {"virtuelle Zone": 30} // delete this line if no virtual zones
    }                                                                    
}                                                                        
                                                              
// Start the paradox bridge                                              
var connector = new ParadoxConnector(configuration); 

great work from GiZMoSK.

glad to hear, that manual still works. However it is interesting :slight_smile: I’m not able tu run it on rpi4 with hassio in container. Hassio refuses using USB port.
So i’m using this approach on dedicated rpi4 for paradox