Awesome Open Source
Awesome Open Source


This project uses an ESP32 to read the events of the serial bus on Paradox alarm systems and send them to an MQTT server

Making a connection

Connect the panel: -Connect Alarm system serial to ESP32 using RX2/TX2 of ESP32

Arduino IDE settings

Set the Hassio flag to 1 for Home assistant, and check out the wiki (Home Assistant in V2)

The 37 byte message is broken down into a json message with "Event Group" and "Sub-group", and one more dummy attribute which is the zone/partition label.

See the wiki for more info on Groups and Sub-groups

After flashing the ESP board, connect to it's Wi-Fi (paradox32CTL password: configParadox32), open the IP address in your browser, input your Wi-Fi credentials and MQTT server address. That's all.

MQTT Topics

Topic Notes
paradox32CTL/out All alarm event messages
paradox32CTL/status The program messages
paradox32CTL/status/ACFailure ACFailure if true there is a ACFailure
paradox32CTL/in Input topic

HomeAssistant MQTT Topics

Topic Notes
paradox32CTL/hassio/y/zoneX Where x is zone number from 1-32
paradox32CTL/hassio/y/zoneX Gives values ON/OFF
paradox32CTL/hassio/Arm/y Gives values: disarmed, armed_home, armed_away, triggered
y is the partition always 0 in single partition systems

Sending commands

The command payloads are in JSON. Template:


The password is the user's 4/6 digit password. set USE6DigitCode true in main.h file

A command can be any of the following:

  • arm
  • disarm
  • sleep
  • stay
  • bypass
  • armstate
  • panelstatus
  • setdate
  • PGM_ON

Subcommands depending on the main command

Main Command Subcommand
arm,sleep,disarm 0-1 partition
bypass 0-31 zone number -1
panelstatus '0' panel data
panelstatus '1' Partition state & zone status

Release Logs


  1. Added datetime to E0 message
  2. code cleanup and bug fixes


  1. Swaped out for tzapu/WiFiManager as ESP_Wifimanager was causing wifi dorps
  2. Added support for 6 digit codes.


  1. Added ACFailure topic. Can be used to get ACfailure events.


  1. Fixed partition reporting
  2. Fixed bypass command not bypassing zones above 10
  3. Fixed Setdate command, uses NTP to get date and sets panel date time.
  4. Moved Status messages command to new topics under topic/status
  5. Added partition to topics
  6. Many bugs squashed.
  7. Fixed OTA (over the air) updating.


  1. Added ArmStatus: pending when exit delay
  2. Added Event 29 (because of change pending status to arm_away after exit delay)


  • Added retain message on hassio/Arm topic
  • Added the ability to add credentials to mqtt.
  • Added Homekit topic for Homebridge plugin. (comming soon).

20190130: added PGM support (command "PGM_ON" subcomand "0-31)

20190114: V2 Live (Homeassistant)

20190104: Added wiki Node-red v2 flow

20190103: Added v2 test branch (stable working)

20180804: Wiki added Home Assistant Config (works with node-red)

20180721: Changed to user based password, use the same 4 digit code used on panel for control.

Continue reading the wiki for more information.

Next Steps

  1. Add homekit support
  2. Add support for sim700 GSM so project can be used as gsm dialer.
  3. Add ademco signaling for reporting station support.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
C Plus Plus (369,427
Mqtt (2,995
Esp32 (2,746
Home Assistant (2,501
Serial (604
Homebridge (514
Homekit (484
Serialport (439
Alarm (327
Hassio (220
Rs232 (106
Spectra (53
Pgm (51
Paradox (50
Mqtt Topics (9
Homekit Support (8
Sp4000 (2
Sp6000 (2
Related Projects