Homebridge security system platform for ADT Pulse

Usage no npm install needed!

<script type="module">
  import homebridgeAdtPulse from 'https://cdn.skypack.dev/homebridge-adt-pulse';


ADT Pulse for Homebridge

NPM Version NPM Downloads GitHub License Become a GitHub Sponsor

This is a verified Homebridge plugin for ADT Pulse users that allow homeowners to control their security system and view sensor status through HomeKit. The API relies on the ADT Pulse Web Portal (by Icontrol One).

To use this plugin, here are three simple steps you need to follow:

  1. Run npm install homebridge-adt-pulse
  2. Configure the plugin using the configuration example
  3. Restart Homebridge

You can also search adt-pulse using HOOBS or Onzu's Homebridge Config UI. Then proceed to configure the plugin using the included settings in the plugin page.


When configuring this plugin, simply add the platform to your existing config.json file. Mind that the platform name must always be ADTPulse.

  "platforms": [
      "platform": "ADTPulse",
      "name": "ADT Pulse",
      "username": "email@email.com",
      "password": "1234567890",
      "fingerprint": "abcdef1234567890=",
      "overrideSensors": [
          "name": "Sample Sensor 1",
          "type": "sensor,doorWindow"
          "name": "...",
          "type": "..."
      "country": "us",
      "logLevel": 30,
      "logActivity": true,
      "removeObsoleteZones": true,
      "resetAll": false
      "platform": "...",
      "name": "..."

Plugin Limitations

Even though the plugin name is "ADT Pulse for Homebridge", this Homebridge plugin supports certain ADT hardware. In addition, this plugin is NOT a complete replacement to the official ADT Pulse app.

The hardware configurations supported by this plugin are:

  1. ADT Security Panel (system)
  2. ADT Door/Window Sensors (doorWindow)
  3. ADT Glass Break Detectors (glass)
  4. ADT Motion Sensors (motion)
  5. ADT Carbon Monoxide Detector (co)
  6. ADT Fire (Smoke/Heat) Detector (fire)

If you have a sensor that is unsupported by this plugin, please submit an issue so I can add support for it.

Due to ADT Pulse limitations, accessories that are connected to the Z-Wave Platform cannot be supported. Consider using other Homebridge plugins.

Configure 2-Factor Authentication

With the recent updates, ADT Pulse now requires 2-factor authentication for your account. In the near future, this fingerprint will be required.

  1. Open a Chrome browser tab
  2. Open Developer Tools (using ViewDeveloperDeveloper Tools menu)
  3. Click on the Network tab (make sure Preserve log checkbox is checked)
  4. In the filter box, enter signin.jsp
  5. Go to https://portal.adtpulse.com or https://portal-ca.adtpulse.com and login to your account
  6. Click on the network call (beginning with signin.jsp) appearing in the DevTools window
  7. In the Headers tab, under Form Data, copy the entire fingerprint (after fingerprint:, do not include spaces)
  8. Paste the copied text into the fingerprint field into your config.json

Force Arming (Arm Away/Stay/Night)

Due to the nature of how HomeKit and ADT Pulse processes setDeviceStatus commands, this plugin will force arm when it detects active motion or open sensors.

Without force arm, arm away/stay/night may stall and reset to Disarm with no errors.

Before arming, please check the status of your Home (instructions below), as HomeKit will not check if your devices are in an active state.

  1. Open the Home app
  2. Tap the Status Details (listed in the Home tab below the title)
  3. View the ATTENTION area of your home

Arm Night Support

As for ADT Pulse systems, Arm Night is only available for use through the panel itself. Although it is not visible on the Web Portal or the mobile app, you can still place your system in Arm Night mode with this plugin.

Because of the force arming procedure (above), please make sure no devices are open or reporting motion as this may render the Arm Night mode less effective.

Manually Override Sensors

Due to ADT Pulse portal limitations, sensors may be inaccurately detected. Use this setting to manually override default detection features. Optional.

The default is []. Configure overrideSensors[] with the values below:

  • Set name to the name that is displayed in the ADT Pulse portal
  • Set type to sensor,doorWindow, sensor,glass, sensor,motion, sensor,co, or sensor,fire

NOTE: Examples are noted above in the configuration section.

Set Country

ADT Pulse is available both in the United States and Canada. Use this setting to toggle which country you will be using the plugin in. Optional.

The default is us. Configure country with the values below:

  • Set country to us for United States
  • Set country to ca for Canada

NOTE: If the country setting has been specified incorrectly, a warning will be shown then subsequently set to us.

Log Level (Debugging)

Debugging is difficult without the proper information, in such, this plugin offers a way to filter out messages sent to the logs. Optional.

The default is 30. Configure logLevel with the values below:

  • Set logLevel to 10 for errors only
  • Set logLevel to 20 for warnings (and the above)
  • Set logLevel to 30 for info (and the above)
  • Set logLevel to 40 for debugging (and the above)
  • Set logLevel to 50 for verbose (and the above)

NOTE: If the logLevel setting has been specified incorrectly, a warning will be shown then subsequently set to 30.

NOTE 2: Don't forget to enable Homebridge Debug Mode when setting logLevel to 40 or above or else debug messages won't be shown.

Log Activity

While the plugin is running, it has the ability to record alarm and sensor activity from the ADT Pulse portal to the Homebridge logs. Optional.

The default is true. Configure logActivity with the values below:

  • Set logActivity to true for active mode
  • Set logActivity to false for passive mode

NOTE: Logging alarm and sensor activity requires the logLevel setting to be set to 30 or greater.

Remove Obsolete Zones

The plugin offers a way to automatically detect and remove obsolete zones. If you have recently experienced sensor reset issues, you may disable this setting. Optional.

The default is true. Configure removeObsoleteZones with the values below:

  • Set removeObsoleteZones to true for removal mode
  • Set removeObsoleteZones to false for notification mode

NOTE: If recently, you had sensors removed from ADT Pulse, the plugin will not remove these sensors unless removeObsoleteZones is set to true.

Resetting the Plugin

Managing many accessories in a Homebridge environment is already a seemingly hard task, and sometimes you might want to step back and do a reset. Optional.

The default is false. Configure resetAll with the values below:

  • Set resetAll to true for reset mode
  • Set resetAll to false for normal mode

NOTE: Once reset is complete, remember to set the resetAll setting back to false or else the plugin will just repeat reset mode again.

Developer Information

The script provides an active connection to the ADT Pulse portal. Here is a list of must-knows, just in case you might want to debug (or improve) the plugin:

  1. Device and zone statuses will be fetched every 3 seconds. If logins have failed more than 2 times, portal sync will pause for 10 minutes.
  2. Supported versions are 20.0.0-221 and 20.0.0-244. If this plugin does not support either version, a warning will appear in the logs. Please submit an issue to let me know!

Credits and Appreciation

If you would like to show your appreciation for its continued development, you can optionally become my supporter on GitHub Sponsors!

Also, thank you to @kevinmkickey for providing the ADT Pulse script and @Danimal4326 for finding the solution for ADT Pulse's 2-factor authentication.