I recently decided to integrate my 10+ year old Paradox SP6000 based alarm system into Home Assistant.
Marageli’s ParadoxRs232toMqtt code is the base of this integration. It is relatively well documented but some key things to note:
- You will need ArduinoJson lib v5.x (in addition to the other libraries). V6.xx does not work.
- The “subcode” to disarm my SP6000 was 2 instead of 3.
I made a small PCB that would connect to the serial header on the alarm’s PCB. I used a LD33CV for the 3.3v rail and then added a voltage divider (2k2ohm and 4k7ohm) onto the RX line from the alarm to get the 5v logic down to about 3.4v as shown here:
After downloading, compiling and uploading the code onto a generic ESP 8266, I put the ESP onto the daughterboard that I made and connected it onto the connector labeled “serial” on the top right hand side of the alarm PCB.
On first boot, the ESP will boot into AP mode so you’ll need to connect to the “paradoxdCTL” network and feed it your WiFi and MQTT server details. Once this is complete, I used MQTT Explorer to confirm that it was communicating with the MQTT broker.
Woohoo! We have communication!
Then, all that was left was to setup the alarm in HA. I setup six zones (including their names) and added a switch to arm/disarm the alarm. I managed to arm the alarm from HA but could not disarm it. Thanks to MQTT Explorer, I noticed that the subcommand 2 was sent back to the broker when I manually disarmed the alarm so I updated that (from 3) and it worked!
switch:
- platform: mqtt
unique_id: alarm_control
name: "Alarm Status"
state_topic: "paradoxdCTL/hassio/Arm"
command_topic: "paradoxdCTL/in"
payload_off: '{"password":"1234","Command":"disarm","Subcommand":"2"}'
payload_on: '{"password":"1234","Command":"arm","Subcommand":"0"}'
state_on: "armed_away"
state_off: "disarmed"
sensor:
- platform: mqtt
name: "Alarm Status"
state_topic: "paradoxdCTL/hassio/Arm"
- platform: mqtt
name: "Front Door"
state_topic: "paradoxdCTL/hassio/zone1"
- platform: mqtt
name: "Lounge Beam"
state_topic: "paradoxdCTL/hassio/zone2"
- platform: mqtt
name: "Bedroom Beam"
state_topic: "paradoxdCTL/hassio/zone3"
- platform: mqtt
name: "Balcony Door"
state_topic: "paradoxdCTL/hassio/zone4"
- platform: mqtt
name: "Bedroom windows"
state_topic: "paradoxdCTL/hassio/zone5"
- platform: mqtt
name: "Balcony Beam"
state_topic: "paradoxdCTL/hassio/zone6"
The money shot!