This is an unofficial project that is not affiliated with Alarm.com.
Forked from Daren Lord's pyalarmdotcom.
To install use pip:
pip install pyalarmdotcomajaxOr clone the repo:
git clone https://github.com/uvjustin/pyalarmdotcomajax.git
python setup.py installSee examples/basic_sensor_data.py for a basic usage example.
Pyalarmdotcomajax supports core features (monitoring and using actions) of the device types listed below.
- As of v0.2, multiples of all devices are supported.
- All devices include the attributes:
name,id_,state,battery_low,battery_critical,malfunctioning,parent_ids, and a few others.
| Device Type | Notable Attributes | Actions | Notes |
|---|---|---|---|
| Garage Door | (none) | open, close | |
| Gate | supports_remote_close |
open, close | |
| Image Sensor | images |
peek_in | |
| Light | brightness |
turn_on (with brightness), turn_off | No support for RGB/W, effects, temperature, etc. |
| Locks | lock, unlock | ||
| Partition | uncleared_issues |
arm away, arm stay, arm night, disarm | |
| Sensor | device_subtype |
(none) | |
| System | unit_id |
(none) | |
| Thermostat | temp_average, temp_at_tstat, step_value, supports_fan_mode, supports_fan_indefinite, supports_fan_circulate_when_off, supported_fan_durations, fan_mode, supports_heat, supports_heat_aux, supports_cool, supports_auto, min_heat_setpoint, min_cool_setpoint, max_heat_setpoint, max_cool_setpoint, heat_setpoint, cool_setpoint, supports_humidity, humidity, supports_schedules, supports_schedules_smart, schedule_mode |
set_attribute | |
| Water Sensor | (none) |
This list identifies deviceTypes used in the alarm.com API and is incomplete. Please help by submitting missing values.
| deviceType | Description |
|---|---|
| 1 | Contact Sensor |
| 2 | Motion Sensor |
| 5 | Smoke Detector |
| 6 | CO Detector |
| 8 | Freeze Sensor |
| 9 | Panic Button |
| 10 | Fixed Panic Button |
| 14 | Siren |
| 19 | Glass Break Detector |
| 52 | Vibration Contact Sensor |
| 68 | Panel Image Sensor |
| 69 | Mobile Phone (for Bluetooth Disarming) |
| 83 | Panel Glass Break Sensor |
| 89 | Panel Motion Sensor |
Pyalarmdotcomajax supports changing configuration options for the devices listed below.
| Configuration Option | Slug | Supported Values | Notes |
|---|---|---|---|
| Indoor Chime | indoor-chime |
on, off |
|
| Outdoor Chime | outdoor-chime |
off, low, medium, high |
|
| LED Brightness | led-brightness |
0 - 100 |
|
| LED Color | led-color |
#000000 - #FFFFFF |
Must include # at start. |
| Motion Sensor Sensitivity | motion-sensitivity |
low, medium, high, very_high |
The CLI is available by running adc from anywhere in your terminal. Use adc --help, adc get --help, and adc set --help for more information.
usage: adc [-h] [-d] [-ver] [-v] -u USERNAME -p PASSWORD [-n DEVICE_NAME] [-c COOKIE | -o ONE_TIME_PASSWORD] {get,set} ...
basic command line debug interface for alarm.com via pyalarmdotcomajax. shows device states in various formats.
options:
-h, --help show this help message and exit
-d, --debug show pyalarmdotcomajax's debug output.
-ver, --version show program's version number and exit
-v, --verbose show verbose output. -vv returns base64 image data for image sensor images.
-u USERNAME, --username USERNAME
alarm.com username
-p PASSWORD, --password PASSWORD
alarm.com password
-n DEVICE_NAME, --device-name DEVICE_NAME
registers a device with this name on alarm.com and requests the two-factor authentication cookie for the device.
-c COOKIE, --cookie COOKIE
two-factor authentication cookie. cannot be used with --one-time-password!
-o ONE_TIME_PASSWORD, --one-time-password ONE_TIME_PASSWORD
provide otp code for accounts that have two-factor authentication enabled. if not provided here, adc will prompt user for otp. cannot be used with --cookie!
actions:
{get,set}
get get data from alarm.com. use 'adc get --help' for parameters.
set set device configuration option. use 'adc set --help' for parameters
get options:
-h, --help show this help message and exit
-x, --include-unsupported
return basic data for all known unsupported devices. always outputs in verbose format.
set options:
-h, --help show this help message and exit
-i DEVICE_ID, --device-id DEVICE_ID
Numeric Alarm.com device identifier.
-s SETTING_SLUG, --setting-slug SETTING_SLUG
Identifier for setting. Appears in parenthesis after setting name in adc set human readable output.
-k NEW_VALUE, --new-value NEW_VALUE
New value for setting.- Get human-readable status (and device IDs) for all devices:
adc -u "your_username" -p "your_password" get - Get raw JSON output from Alarm.com for all devices:
adc -v -u "your_username" -p "your_password" get - Turn off Skybell HD indoor chime (assume Skybell device ID is 283431032-1520):
adc -u "your_username" -p "your_password" set -i "283431032-1520" -s "indoor-chime" -k "off"
This repository includes a full development environment for VS Code:
- VS Code dev container. Automatically installs extensions and Python dependencies and registers Git pre-commit scripts.
- Configuration files for type checking (mypy), linting (ruff and black), etc.
- Pre-commit checks run all of the above when committing to Git and on demand via VS Code tasks.
- Some API definitions are available in the node-alarm-dot-com repository.
- Support additional components (lights, irrigation, etc.).
- Support more sensor types (see list above in this README).
- Add
debug_infoproperty toADCControllerthat returns aggregate of raw JSON from all endpoints. This will allow users to export the entity model of unsupported devices to help maintainers implement support in this library. - Similar to above, proactively populate
unsupported_device_typesproperty forADCBaseElementto show users device id, device name, and device type for available but unsupported devices. - More granular exception handling when logging in. Should report discrete error types for authentication failures due to wrong credentials, connection issues, or other.
