100% Open Source Home Assistant integration for Ajax Systems security devices.
- Alarm Control Panel - Arm/disarm your Ajax security system
- Motion Sensors - MotionProtect, MotionCam, CombiProtect
- Door/Window Sensors - DoorProtect devices
- Smoke Sensors - FireProtect devices
- Water Leak Sensors - LeaksProtect devices
- Glass Break Sensors - GlassProtect devices
- Switches - Socket, WallSwitch, Relay devices
- Battery & Signal Monitoring - For all devices
- Temperature Sensors - Devices with temperature capability
- Group/Zone Support - Manage multiple security zones
You need API credentials from Ajax Systems to use this integration.
- Go to ajax.systems/api-request
- Fill out the request form:
- Select "User API" as the access type
- Provide your contact information
- Describe your use case (e.g., "Home automation integration with Home Assistant")
- Wait for approval (typically 1-5 business days)
- Once approved, you'll receive an API Key by email
If you have a security company managing your Ajax system:
- Contact your Ajax installer
- Ask them to provide API credentials from the PRO Dashboard
- They can generate Company ID and Company Token for you
| Authentication Mode | Who Should Use | Required Credentials |
|---|---|---|
| User API | Home users with API access | API Key + Email + Password |
| Company/PRO API | Installers with PRO dashboard | API Key + Company ID + Company Token |
- Open HACS in Home Assistant
- Click on Integrations
- Click the three dots menu → Custom repositories
- Add
https://github.com/exabird/ha-ajax-systemswith category Integration - Search for "Ajax Systems" and install
- Restart Home Assistant
- Download the latest release from GitHub
- Extract and copy
custom_components/ajax_systemsto your HA config folder - Restart Home Assistant
- Go to Settings → Devices & Services
- Click Add Integration
- Search for "Ajax Systems"
- Choose your authentication mode:
- User API - For home users with API key
- Company/PRO API - For installers
- Enter your credentials
- Select your hub
| Option | Default | Description |
|---|---|---|
| Update Interval | 30s | How often to poll the Ajax API (10-300 seconds) |
- Hub, Hub 2, Hub Plus, Hub 2 Plus
- Hub Hybrid, Hub 4G variants
- MotionProtect (all variants: S, Plus, Fibra, Outdoor)
- MotionCam (all variants: Phod, Outdoor)
- CombiProtect (all variants)
- DoorProtect (all variants: S, Plus, U, Fibra)
- FireProtect, FireProtect Plus
- FireProtect 2, FireProtect 2 Plus
- LeaksProtect
- WaterStop
- GlassProtect (all variants)
- Socket
- WallSwitch
- Relay
- LightSwitch
- HomeSiren (all variants)
- StreetSiren (all variants)
- Keypad (all variants)
- KeypadTouchscreen
automation:
- alias: "Arm Ajax when leaving"
trigger:
- platform: state
entity_id: zone.home
to: "0"
action:
- service: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.ajax_hubautomation:
- alias: "Motion alert when armed"
trigger:
- platform: state
entity_id: binary_sensor.motionprotect_motion
to: "on"
condition:
- condition: state
entity_id: alarm_control_panel.ajax_hub
state: "armed_away"
action:
- service: notify.mobile_app
data:
message: "Motion detected while system is armed!"- Verify your API Key is correct and approved
- Check your email/password (User mode) or Company credentials (PRO mode)
- Ensure your account has access to the hub
- Verify your hub is online in the Ajax app
- Check that your API credentials have access to this hub
- Increase the update interval in integration options
- Check your internet connection
- Verify Ajax Systems API is accessible
- Check your internet connection
- Try restarting Home Assistant
- Re-authenticate the integration if needed
This integration uses the Ajax Systems API. Complete documentation is available in the docs folder:
- API Reference - Complete API endpoint documentation
- Authentication Guide - Detailed authentication modes and flows
- Device Types - All supported device types and their properties
- Code Examples - Python, JavaScript, and cURL examples
| Aspect | Details |
|---|---|
| Base URL | https://api.ajax.systems/api |
| Auth Modes | User (session token) / Company (long-lived token) |
| Session TTL | 15 minutes (refresh at 10 min) |
| Password | SHA-256 hashed |
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes
- Push to the branch
- Open a Pull Request
- Issues: GitHub Issues
- Discussions: GitHub Discussions
If you find this integration useful, consider buying me a coffee!
This project is licensed under the MIT License - see the LICENSE file for details.
This integration is not officially affiliated with or endorsed by Ajax Systems. Use at your own risk.
Made with ❤️ for the Home Assistant community
