ADT Pulse bridge for Home Assistant using MQTT.
Integrates ADT Pulse with Home Assistant. You can also choose to expose ADT devices associated with your ADT Pulse alarm system to SmartThings using MQTT Discovery.
NEW: This version supports local testing without Docker! Perfect for development and debugging.
- Setup: Run
./test-local-setup.shto verify your environment - Configure: Edit
local-config.jsonwith your ADT Pulse and MQTT settings - Run: Use
npm run startto start the application locally
See LOCAL_TESTING.md for detailed instructions.
- ✅ Modern Dependencies: Migrated from deprecated
requesttoaxios - ✅ Local Testing: Run without Docker for development
- ✅ Same Functionality: Full compatibility with existing setups
- First, add the repository (https://github.com/BigThunderSR/adt-pulse-mqtt) using the Add-on Store in the Home Assistant Supervisor. This is the easiest way to run this add-on, but it can also run as an independent container using Docker. In both cases, communication is through MQTT.
- Install ADT Pulse MQTT from the store. Don't forget to configure
pulse_loginwith your ADT Pulse Portal username and password. A separate login for Home Assistant is recommended. - Configure Add-on Options
The pulse_login options are:
username: The ADT Pulse Portal Usernamepassword: The ADT Pulse Portal Passwordfingerprint: The fingerprint of trusted device authenticated with 2-factor authentication (see below)
ADT Pulse now requires 2-factor authentication and you will need to provide a device fingerprint:
- Open a Chrome browser tab (under Incognito mode)
- Open Developer Tools (using Menu ➜ More tools ➜ Developer tools menu or Ctrl+Shift+I)
- Click on the Network tab (make sure Preserve log checkbox is checked)
- In the filter box, enter
signin.jsp?networkid= - Go to
https://portal.adtpulse.comorhttps://portal-ca.adtpulse.comand login to your account - Click Request Code, type in the requested code, and then click Submit Code
- Click Trust this device and name the device
Homebridge - Click Save and Continue
- Click Sign Out in the top right corner of the webpage
- Login to your account (once again)
- Click on the network call (beginning with
signin.jsp?networkid=) appearing in the DevTools window. Select the last one. - In the Payload tab, under Form Data, copy the entire fingerprint (after
fingerprint:, do not include spaces) - Paste the copied text into the
fingerprintfield into yourconfig.json - Close the Chrome window (DO NOT sign out)
You'll need an MQTT broker. The Mosquitto add-on broker (https://www.home-assistant.io/addons/mosquitto/) is the easiest to implement.
In most cases, only the mqtt_options are needed:
mqtt_host: core-mosquitto (if using Mosquitto add-on, otherwise hostname or IP address)- mqtt_connection_options:
username: MQTT broker usernamepassword: MQTT broker password
In most cases, these options are sufficient. Alternatively, the mqtt_url can be specified instead which allows more advanced configurations (see https://www.npmjs.com/package/mqtt#connect).
This add-on uses the Home Assistant integrations for MQTT Alarm Control Panel and MQTT Binary Sensor.
To configure these, you must edit your configuration.yaml:
To add the control panel:
mqtt:
alarm_control_panel:
- name: "ADT Pulse"
unique_id: adt_pulse_alarm_panel ## Required to configure the panel using the HA GUI. Make sure this value is unique to your environment.
state_topic: "home/alarm/state"
command_topic: "home/alarm/cmd"
payload_arm_home: "arm_home"
payload_arm_away: "arm_away"
payload_disarm: "disarm"
code_arm_required: false ## Needs to be added starting with HA Core 2024.6 ##After running the add-on, get a list all the zones found. There are a couple of ways to do this, but they all involve subscribing to the wildcard topic "adt/zones/#".
I recommend the MQTT Snooper app on Android or just use the mosquito command-line command:
# mosquitto_sub -h YOUR_MQTT_IP -v -t "adt/zone/#"
Once you know the names of MQTT topics for your zones, add the following to the configuration.yaml for each zone in binary_sensor:
mqtt:
binary_sensor:
- name: "Kitchen Door"
unique_id: adt_pulse_kitchen_door ## Required to configure the sensor using the HA GUI. Make sure this value is unique to your environment.
state_topic: "adt/zone/Kitchen Door/state"
payload_on: "devStatOpen"
payload_off: "devStatOK"
device_class: door
retain: trueThis will provide basic support for door sensors. You can add additional binary sensors for other possible state values. As an example, you can add support for a low battery condition on a sensor.
mqtt:
binary_sensor:
- name: "Kitchen Door Sensor Battery"
unique_id: adt_pulse_kitchen_door_sensor_battery ## Required to configure the sensor using the HA GUI. Make sure this value is unique to your environment.
state_topic: "adt/zone/Kitchen Door/state"
payload_on: "devStatLowBatt"
payload_off: "devStatOK"
device_class: batteryNote: State topic names come from your Pulse configuration.
The possible state values are:
devStatOK(device okay)devStatOpen(door/window opened)devStatMotion(detected motion)devstatLowBatt(low battery condition)devStatTamper(glass broken or device tamper)devStatAlarm(detected CO/Smoke)devStatUnknown(device offline)
If a device type is not listed, open an issue containing your MQTT dump which lists your zones.
If you want to run this add-on independently using Docker, here is a sample Docker Compose file:
version: '3'
services:
pulse-adt-mqtt:
container_name: pulse-adt-mqtt
image: bigthundersr/adt-pulse-mqtt
network_mode: host
restart: always
volumes:
- /local/path/to/config-directory:/data~~
Sample config.json placed in the config-directory:
{
"pulse_login" : {
"username": "username",
"password": "password"
},
"mqtt_host" : "mqtt_host"
"mqtt_connect_options" : {
"username" : "username",
"password" : "password",
},
"alarm_state_topic": "home/alarm/state",
"alarm_command_topic": "home/alarm/cmd",
"zone_state_topic": "adt/zone",
"smartthings_topic": "smartthings",
"smartthings": false
}ADT Pulse contact (door, window, etc.) and motion detection devices may be exposed to SmartThings for one-way status updates using the MQTT Discovery edge driver driver.
ⓘ Note that the MQTT Discovery edge driver does not currently support security panel devices, so there is no current support for either status or configuration of the ADT Pulse alarm system ("armed", "disarmed", "home", "away", etc.) via SmartThings. Only contact and motion devices are currently supported, though siren and/or panel support may come in a future update.
- Make sure an MQTT server is set up and available.
- Follow instructions to set up the MQTT Discover edge driver to subscribe to that MQTT server.
- Set up and ensure the
adt-mqtt-pulseapplication is configured and running properly, pointing to the same MQTT server. - Upon refresh in the MQTT Discovery device in SmartThings application as per setup instructions, you should see ADT devices appear.