New Integration: Paradox EVO alarm

Just working on a solution that will work for us guys with Paradox EVO alarm panels. Only spent a few hours on it but following works:

  • Configure Zones / Device classes
  • Automatically pull zone names from the panel
  • Get initial status
  • Update zone status

NEW

  • Multiple Areas are now supported
  • Virtual Zone Support. You can trigger panel PGMs with these or integrate HomeAssistant sensors with as a zone on the paradox panel.
  • Support for Virtual PGMs as binary sensors.

See github readme for example configurations.

Youā€™ll need to add the mqtt section to the configuration.yaml with the autodiscover option.

Enjoy!

2 Likes

Just updated the project - now supports arming home/away and disarming. Hereā€™s the mqqt configuration.yaml entry:

alarm_control_panel:

  • platform: mqtt
    state_topic: ā€œparadox_evo/alarm/area1ā€
    command_topic: ā€œparadox_evo/alarm/area1/setā€
    name: ā€œParadox Evoā€
    payload_disarm: ā€œDISARMā€
    payload_arm_home: ā€œARMā€

Updated with new functionality;

NEW

  • Multiple Areas are now supported
  • Virtual Zone Support. You can trigger panel PGMs with these or integrate HomeAssistant sensors with as a zone on the paradox panel.
  • Support for Virtual PGMs as binary sensors.

Hi DaveOke!

This looks amazing/promising :slight_smile:
What about the hardware requirements for this? How can I connect the PRT3 module to a pc/raspberry?
Thanks!

The Tech specs for the PRT3 module have listed compatibility for these panels:

Digiplex EVO48, EVO96, EVO192 control panels
DGP-848 control panel (V4.11 and up)
DGP-NE96 control panel (V1.60 and up)

Iā€™ve only tested against my EVO192 panel & a RasberryPi. The PRT3 port comes with a USB B port (e.g. the standard cable used to connect most printers to a PC). Just connect a USB cable between the PRT3 and your rasberry pi.

I have the EVO192 panel as well but donā€™t have a raspberry pi yet.
Thanks a lot for the info and the integration, Iā€™m looking forward to try it soon!

Hi @DaveOke,

I finally got a PRT3 module so I can try your script.
I can start it and it says:

Serial Port: ttyUSB0 opened.
MQTT Connected!

but thatā€™s it. I donā€™t get anything else.
Iā€™m using a serial (9 pin) to USB cable so I donā€™t use the USB B port, should I use USB B instead?
Or is there anything I could miss?
Thanks!

Iā€™ve tested with a USB B cable but a 9 pin should work as well. Have you configured PRT3 for home automation?

E.g.
Via Winload, configure PRT3 or using a keypad, section 4003 and then enter the prt3 serial number:
Section 016 option 4 needs to be set to on. (Enable serial / home automation mode)
Section 016 option 2/3 need to be set to on (57600 baud). Default should work, but just change the code to connect @ 2400.
Section 016 option 5/6 should be set to off.

After that, just ensure that the correct serial port is opened.

I did the configuration, but still nothing. As for the section 016 5/6, I cannot set it to off, I have ā€˜Asciiā€™, CBUS and ā€˜future useā€™ (I tried ascii and future use, no luck).
Port should be okay, if I unplug the cable from the pi and start the app, it says cannot open /dev/ttyUSB0 (opening works if I plug back in).
Do you have any other suggestion? Any other configuration I need?
I even tried with an USB B -> USB cable, the app said cannot open the port.

Ah - looks like youā€™re using winload. The correct option is Ascii Protocol. Make sure serial the port is enabled (016 - 1) as well.

If this doesnā€™t work, you can try sending codes by hand to the panel and see if itā€™s responding. E.g. try sending
RA001 to the serial port. This panel should return zone 1 status - something like RA001DOOOOOO

Hey guys, driving myself nuts trying to find a way to get paradox working with hassio anyone know of a working method?

RKor, whatā€™s your panel type? Evo?

It seems I donā€™t get anything from the panel: I never get into this._port.on('readable', () => {})
I tried manually send a command after ā€œSerial Port openedā€ log with this.SendCommand('RA001') but I got nothing. :frowning:
Any idea?

Just throwing ideas out thereā€¦

Do you see the bus lights flashing on the prt3?
Is the prt3 hooked to the combus properly?
Baud rates match?
If you open a zone, readable should also fire.

As soon as I start your script, the RX LED starts blinking rapidly (so it seems that the connection between the module and the rPI is fine) but the TX LED does not blink at all.
Baud rates are ok, do you think its possible that the module is not properly installed to the system?

Sorry for the delay Dave, didnā€™t know you had commented.

My panel type is SP550 v 4.99.19
Module is IP150 v1.34

Appreciate the help

@RKor - Thereā€™s another active project in the works that will work with the IP150. Would recommend trying that out first. This project only tested to work with the Evo/Prt3.

I finally figured it out!

I did the programming part in Babyware and sending the configuration does not get sent to the PRT3. I tried it multiple times, even tried to do it in the old program (Winload). Everything looked ok, but I finally tried to check if everything is correct with the old-school way: on the keypad! And it said nothing was configured, so I did the configuration on the keypad and it started working immediately.

I can see all my zones, statues working perfectly and its really fast! The only missing part is the alarm state itself, it does not get updated when I arm or disarm the system. I have 3 zones, non of them are working. In the app.js, I changed the areaCount to 3. Any ideas what could be the issue with this?

Thanks a lot for the great work!

This is my current config:

  mqttAddress: "mqtt://localhost",
  mqttUsername: "****",
  mqttPassword: "****",
  baudRate: 57600,
  device: "ttyUSB0",
  areaCount: 3,
  userCount: 3,
  panelUserCode: "****",
  zoneConfiguration:  {
    2: { "name": "", "device_class": "door"},
    3: { "name": "", "device_class": "motion"},
    5: { "name": "", "device_class": "motion"},
    10: { "name": "", "device_class": "motion"},
    11: { "name": "", "device_class": "motion"},
    19: { "name": "", "device_class": "motion" },
    20: { "name": "", "device_class": "door" },
    21: { "name": "", "device_class": "door" },
    22: { "name": "", "device_class": "door" },
    23: { "name": "", "device_class": "door" },
    24: { "name": "", "device_class": "motion" }
  },
  pgmConfiguration: {
  },
  virtualZoneConfiguration: {
  }
}

And in HASS:

   - platform: mqtt
     state_topic: "paradox_evo/alarm/area/1"
     command_topic: "paradox_evo/alarm/area/1/set"
     name: "Name1"
     payload_disarm: "DISARM"
     payload_arm_home: "ARM"
   - platform: mqtt
     state_topic: "paradox_evo/alarm/area/2"
     command_topic: "paradox_evo/alarm/area/2/set"
     name: "Name2"
     payload_disarm: "DISARM"
     payload_arm_home: "ARM"
   - platform: mqtt
     state_topic: "paradox_evo/alarm/area/3"
     command_topic: "paradox_evo/alarm/area/3/set"
     name: "Name3"
     payload_disarm: "DISARM"
     payload_arm_home: "ARM"

Sorry for not replying sooner - things have been busy. Do you have the latest version (I did some work to support multiple areas)? Can you post the log after trying to arm/disarm an area other than 1?