Miss any of our Open RFC calls?Watch the recordings here! »


1.8.10 • Public • Published

ADT Pulse for Homebridge

NPM Version NPM Downloads GitHub License Become a GitHub Sponsor Become a Patreon

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",
      "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.

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.

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: To prevent accidental removal of all accessories, the resetAll setting can be configured manually in the config.json file.

NOTE 2: 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 18.0.0-78 and 19.0.0-89. 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 or Patreon!

Also, thank you to @kevinmkickey for providing the ADT Pulse script.


npm i homebridge-adt-pulse

DownloadsWeekly Downloads






Unpacked Size

79.7 kB

Total Files


Last publish


  • avatar