Skip to content

ibasebcast/ha-alarmdotcom

Repository files navigation

Maintained Fork

This repository is an actively maintained fork of the original Alarm.com for Home Assistant integration.

The goal of this fork is to maintain compatibility with modern Home Assistant releases while continuing development of the Alarm.com integration as the Home Assistant platform evolves.

Recent Home Assistant updates introduced architectural changes that affect older integrations. This fork adapts the integration to those changes and ensures continued functionality, including compliance with the Home Assistant device registry enforcement requirements introduced in Home Assistant 2025.12.

Repository and issue tracker:

https://github.com/ibasebcast/ha-alarmdotcom

The maintainer of this fork operates Alarm.com systems professionally and has access to multiple Alarm.com environments, allowing testing across a wider variety of devices and system configurations.

Community feedback, testing, and contributions are welcome.


Maintainer

This integration is currently maintained by:

Chris Pulliam GitHub: https://github.com/ibasebcast

The goal of this project is to ensure the Alarm.com ecosystem remains usable within Home Assistant as the platform evolves.

This fork exists to provide:

  • Continued compatibility with new Home Assistant versions
  • Expanded device support
  • Improved reliability and error handling
  • Long-term maintenance of the integration

Overview

This custom component allows Home Assistant to interface with Alarm.com using the Alarm.com web platform.

The integration focuses primarily on Alarm.com security system functionality and requires an Alarm.com service package that includes security system support.

Because this integration communicates with Alarm.com cloud services, functionality may change if Alarm.com modifies their platform.


Safety Notice

This integration is designed for convenience and automation, but it should not be relied upon for safety-critical functions.

Reasons include:

  1. This integration communicates with Alarm.com using unofficial endpoints.
  2. Alarm.com status updates may take time to propagate.
  3. Home Assistant automations may introduce unintended behavior.
  4. This code is community developed and may contain bugs.

For critical alerts such as:

  • Break-ins
  • Fire
  • Carbon monoxide
  • Water leaks
  • Freeze warnings

You should rely on Alarm.com's official monitoring services and mobile applications.

Where possible, use locally controlled Home Assistant integrations for automation. Local integrations continue functioning during internet outages, while this integration requires cloud communication.


Supported Devices

Device Type Actions Status Low Battery Malfunction Notes
Alarm System Arm Away, Arm Stay, Arm Night, Disarm
Garage Door Open, Close
Gate Open, Close
Light On / Off / Brightness
Lock Lock, Unlock
Sensor None Contact sensors will not report repeated changes within a 3 minute window
Thermostat Heat, Cool, Auto, Fan Fan-only mode runs for the maximum duration supported by Alarm.com
Camera Live WebRTC stream, Snapshot Requires the www/alarm-webrtc-card.js Lovelace card

Supported Sensor Types

Sensor Type Description
Contact Doors and windows
Freeze Temperature threshold sensors
Glass Break / Vibration Standalone or panel-integrated
Motion Motion detection sensors
Vibration Contact Doors, safes, windows
Water Leak sensors

Alarm.com may use different internal identifiers for some sensors. If a supported sensor does not appear in Home Assistant, please open an issue.

https://github.com/ibasebcast/ha-alarmdotcom/issues


Installation

Install Using HACS (Recommended)

  1. Open HACS
  2. Navigate to Integrations
  3. Click the three-dot menu
  4. Select Custom repositories
  5. Add the repository:
https://github.com/ibasebcast/ha-alarmdotcom
  1. Select Integration as the category
  2. Click Add
  3. Install Alarm.com
  4. Restart Home Assistant

After restarting:

Settings → Devices & Services → Add Integration → Alarm.com


Configuration

When adding the integration you will be prompted for:

Parameter Required Description
Username Yes Alarm.com account username
Password Yes Alarm.com account password
One-Time Password Optional Required if your account uses two-factor authentication

Integration Options

These settings can be modified later using the Configure button on the Alarm.com integration card.

Parameter Description
Code Code required for disarming or unlocking via Home Assistant
Force Bypass Bypass open zones when arming
No Entry Delay Skip entry delay sensors
Silent Arming Suppress panel beeps when arming

Some Alarm.com providers may restrict combinations of these options.



Camera Support

This integration includes WebRTC live-streaming support for Alarm.com cameras.

Setup

  1. Copy www/alarm-webrtc-card.js from this repository to your Home Assistant www/ folder.
  2. Add it as a Lovelace resource:
    • Go to Settings → Dashboards → Resources
    • Click Add Resource
    • URL: /local/alarm-webrtc-card.js
    • Type: JavaScript module
  3. Add the card to any Lovelace dashboard:
type: custom:alarm-webrtc-card
entity: camera.your_camera_name

How it works

When the card loads it calls the camera.turn_on service which fetches a fresh set of WebRTC tokens from Alarm.com. Tokens are refreshed automatically every 30 minutes in the background so the stream is always ready. If a token expires before the next scheduled refresh the card requests new tokens automatically.

Still image snapshots are also available, which means the camera will display a thumbnail in the Home Assistant media browser and picture-glance dashboard cards.


Development Status

This integration is under active maintenance. Version 2026.7.9.3 is the current stable release, consolidating a significant round of fixes and new features - see CHANGELOG.md for the complete, detailed history, but the highlights:

Security fix

Arm/disarm code enforcement was silently broken. If you configured a code to require for arming/disarming, entering any correctly-formatted code - not necessarily the one you set - would still successfully arm or disarm. This is now fixed and covered by automated regression tests. If you rely on the code requirement, you should update as soon as practical.

New features

  • A diagnostics page (Settings → Devices & Services → Alarm.com → Download diagnostics) - a downloadable snapshot of everything the integration knows about your account or a specific device, with all credentials and session tokens automatically redacted. Useful for troubleshooting and for attaching to bug reports without needing to dig through logs or worry about leaking a live camera token.
  • Account-wide low/critical battery count sensors - two new entities that track how many devices currently report low or critical battery, with the specific device names available as an attribute, so you don't have to check every sensor individually.

Bug fixes

  • Two real bugs found while adding test coverage: duplicate config entries were never actually prevented, and a crash could occur in the reconnect-recovery path after enough failed connection attempts.
  • Camera diagnostics were silently missing all camera data due to cameras using a different internal discovery path than every other device type - now fixed and verified against a real account with real cameras.
  • Live camera session tokens were being written to Home Assistant's logs whenever debug logging was enabled - this is now off by default and opt-in only, and separately redacted anywhere else this data surfaces.
  • Carried-forward fixes from 2026.7.6: the iPhone/iPad/Safari black-screen camera issue, and a bug where entity state could silently stop updating until a full integration reload.

Under the hood

  • Vendored the pyalarmdotcomajax API client directly into this repository (see "Architecture Note" below) - this was previously a real HACS compliance blocker and a source of duplicated bug reports across two repos.
  • A real, automated test suite now runs in CI on every push and pull request, covering config flow, setup/unload lifecycle, the arm-code security fix, diagnostics (including the redaction itself), and the new battery sensors.
  • mypy now reports zero type errors across the entire codebase, for the first time - ruff, codespell, and taplo all pass cleanly as well.
  • A preemptive fix for a Home Assistant deprecation that becomes a hard error in December 2026 (a config-entry reload pattern used during reauthentication), verified directly against Home Assistant's own source code before shipping.

Architecture Note: Vendored pyalarmdotcomajax

As of 2026.7.6.1b0, the pyalarmdotcomajax Alarm.com API client lives directly in this repository, instead of being installed separately via a git+ URL in manifest.json. As of 2026.7.7.1b0, it's vendored under the deliberately collision-proof name _pyalarmdotcomajax at custom_components/alarmdotcom/_pyalarmdotcomajax/ (see below for why the name changed).

Why: pyalarmdotcomajax was previously a separate repository (ibasebcast/pyalarmdotcomajax) that this integration depended on via a git+ dependency. In practice, the two repos were never really independent — nearly every bug fix required a version bump in pyalarmdotcomajax, then a matching dependency-pin bump here, then a release of both. Bugs also frequently got reported in both repos as duplicates, since from a user's perspective it's one integration. On top of the coordination overhead, a git+ dependency in manifest.json is a HACS/hassfest compliance issue, since HACS/hassfest strongly prefer plain PyPI-resolvable requirements.

What changed:

  • The library's code (and its git history) now lives under custom_components/alarmdotcom/_pyalarmdotcomajax/. It's imported as _pyalarmdotcomajax (leading underscore), not pyalarmdotcomajax, deliberately: no legitimate PyPI package can use a leading underscore, so this name can never collide with a stray pip-installed pyalarmdotcomajax (e.g. one left over from before this vendoring change). Without that, a missing or broken vendored copy could silently fall back to a stale pip-installed copy instead of failing loudly - which is exactly what happened during beta testing of 2026.7.6.1b0.
  • manifest.json no longer has a git+ requirement; it now lists the library's actual runtime dependencies directly (mashumaro, phonenumbers, pyhumps, typer, beautifulsoup4), which were previously pulled in transitively.
  • The library's internal code is otherwise unchanged and still uses absolute imports internally (e.g. from _pyalarmdotcomajax.controllers.users import ..., updated from the original pyalarmdotcomajax. prefix as part of the rename). This integration's __init__.py adds the vendored directory to sys.path before anything imports it, so those imports keep resolving without needing every file in the library rewritten to relative imports.
  • No functional/runtime behavior changes are intended by this move — it's a packaging change only.

What this means going forward:

  • Bug reports and contributions related to the Alarm.com API client now belong in this repository, not a separate one.
  • The standalone pyalarmdotcomajax repository is no longer the source of truth for this integration; see that repository's own README for its current status.

Project Roadmap

Planned areas of development include:

  • Expanded device coverage across the Alarm.com ecosystem
  • Improved websocket reliability and reconnection handling
  • Expanded automation and scene support
  • Additional device diagnostics and status reporting
  • Continued compatibility updates for new Home Assistant releases

Community testing and feedback help guide development priorities.


Contributing

Issues and pull requests are welcome.

Please report bugs or feature requests here:

https://github.com/ibasebcast/ha-alarmdotcom/issues

When reporting issues include:

  • Home Assistant version
  • Integration version
  • Relevant Home Assistant logs

License

This project is licensed under the MIT License.

See the LICENSE file for details.

About

Modernized Alarm.com integration for Home Assistant with ongoing maintenance and fixes.

Topics

Resources

License

Stars

25 stars

Watchers

5 watching

Forks

Packages

 
 
 

Contributors