Full-featured Home Assistant integration for Ajax Security Systems.
Caution
When using a proxy, the proxy administrator can see all API requests/responses and your credentials hash. This means the proxy can impersonate you with the Ajax API. For a detailed threat model analysis, see Issue #47. For security considerations, see Security & Privacy.
Note
This is NOT an official Ajax Systems addon. It is a community-developed integration created in collaboration with Ajax Systems.
Special thanks to Ajax Systems for their support and assistance during development. Their help made this integration possible! 🙏
Warning
This integration requires API credentials that are not publicly available.
To use this integration, you need one of the following:
- An enterprise API key from Ajax Systems (Direct mode) - available through Ajax partnership program
- Access to a community proxy server (Proxy mode) - no public proxy currently available
For discussions and updates, join the community: HACF Forum
Warning
Due to Ajax Systems architecture, real-time events (SSE/SQS) are only received when the system is armed. When disarmed, the integration uses polling (30s for sensors, 5s for door sensors). This is an Ajax API limitation.
This integration is actively developed but I'm just getting started with Ajax security systems. I currently own and test with:
- ✅ Hub 2 Plus
- ✅ MotionCam (Motion detector with photo capture)
- ✅ DoorProtect Plus (Door/window contact sensor)
- ✅ GlassProtect (Glass break detector)
- ✅ HomeSiren (Indoor siren)
Users tested:
- ✅ Superior Hub Hybrid 4G
- ✅ KeyPad TouchScreen Jeweller (limited info available from API)
- ✅ Superior DoorProtect Plus Jeweller
- ✅ FireProtect 2 RB (Heat/Smoke Jeweller)
- ✅ Superior HomeSiren Jeweller
- ✅ ReX 2 Jeweller
- ✅ StreetSiren Jeweller
- ✅ Superior MotionCam (PhOD) Jeweller
- ✅ MultiTransmitter Fibra (with external contact state)
Since I don't have access to all Ajax devices, I cannot test every device type.
🤝 Community Help Needed: If you own other Ajax devices and want to help test and improve this integration, your contributions would be greatly appreciated! Together we can make this the best Ajax integration for Home Assistant.
Issues, pull requests, and feedback are welcome!
- Real-time security events - Arm/disarm, alarms, and intrusions in < 1 second
- Real-time sensor events - Motion/door events when system is armed or sensor in "Always Active" mode
- Multiple connection modes:
- Direct mode - Direct API connection with optional AWS SQS for real-time events
- Proxy mode - Connection via proxy server with SSE (Server-Sent Events) for real-time events
- Polling fallback - 30-second polling for all sensor states, plus 5-second fast polling for door sensors when disarmed or in night mode (for excluded sensors)
- ✅ Arm (Away mode)
- ✅ Disarm
- ✅ Night Mode
- ✅ Partial Arming - Group-based arming
- ✅ Force Arm - Arm with open sensors/problems
- ✅ Panic Button - Trigger emergency alarm from Home Assistant
- ✅ Real-time Notifications - Arming/disarming events with user name
- ✅ Persistent Notifications - Optional Home Assistant notifications
- ✅ Notification Filters - None, Alarms only, Security events, or All notifications
- ✅ Device Events - Motion detection, door/window opened (when armed or "Always Active")
| Category | Devices |
|---|---|
| Hubs | Hub, Hub Plus, Hub 2, Hub 2 Plus, Hub 2 (4G), Hub Hybrid |
| Motion Detectors | MotionProtect, MotionProtect Plus, MotionProtect Outdoor, MotionCam, CombiProtect |
| Door/Window | DoorProtect, DoorProtect Plus, MultiTransmitter (wired inputs) |
| Fire Safety | FireProtect, FireProtect Plus, FireProtect 2 |
| Flood | LeaksProtect |
| Glass Break | GlassProtect |
| Sirens | HomeSiren, StreetSiren, StreetSiren DoubleDeck |
| Keypads | KeyPad, KeyPad Plus, KeyPad TouchScreen |
| Smart Devices | Socket, WallSwitch, LightSwitch, Relay |
| Accessories | SpaceControl, Button, Tag, ReX, ReX 2 |
- Alarm Control Panel - Full security system control with support for groups/zones
- Binary Sensors - Motion, door/window, smoke, flood, glass break, tamper, power status, moisture
- Sensors - Battery level, signal strength, temperature, humidity, CO2, device counts, room assignment
- Switches - Device settings (always active, night mode, LED indicator, sensitivity, etc.)
- Button - Panic button for emergency situations
- Support for multiple Ajax Hubs in one Home Assistant instance
- Fully localized in Dutch, English, French, German, Spanish, Swedish, and Ukrainian
- All entities properly translated
- Open HACS in Home Assistant
- Go to "Integrations"
- Click the 3 dots in the top right corner
- Select "Custom repositories"
- Add this repository URL:
https://github.com/foXaCe/ajax-security-hass - Category: "Integration"
- Click "Add"
- Search for "Ajax Security System"
- Click "Download"
- Restart Home Assistant
- Download the latest release
- Copy the
custom_components/ajaxfolder to your Home Assistantconfig/custom_components/directory - Restart Home Assistant
- Go to Settings → Devices & Services
- Click "+ Add Integration"
- Search for "Ajax Security System"
- Choose your connection mode:
Connect via a community proxy server. Real-time events via SSE (Server-Sent Events).
- Proxy URL: URL of the community proxy server
- Email: Your Ajax account email
- Password: Your Ajax account password
Note: No API key required for end users, but requires access to a community proxy server. No public proxy is currently available - check the HACF Forum for updates.
⚠️ User accounts only: This integration only supports user accounts. PRO/Enterprise accounts are not supported.
Direct connection to the Ajax API. Requires an enterprise API key from Ajax Systems.
- API Key: Your enterprise API key from Ajax Systems
- Email: Your Ajax account email
- Password: Your Ajax account password
- AWS Credentials (optional): For real-time event notifications via SQS
Note: Enterprise API keys are only available through Ajax Systems partnership program.
In proxy mode, real-time events are automatically received via Server-Sent Events (SSE). No additional configuration required.
For instant updates (<1 second) in direct mode, configure AWS SQS credentials:
- AWS Access Key ID
- AWS Secret Access Key
- Queue Name
These credentials are provided by Ajax Systems with your enterprise API key.
Warning
Due to Ajax Systems architecture, real-time events (SSE/SQS) are only received when the system is armed.
When disarmed, Ajax does not send real-time events - this is an Ajax API limitation, not the integration.
- Motion and door events are not sent to SQS/SSE
- The integration uses fast polling (5 seconds) for door sensors
- Motion sensors fall back to standard polling (30 seconds)
Exception: Sensors with "Always Active" mode enabled will send real-time events even when disarmed.
Go to the integration options to configure:
- Persistent Notifications: Show notifications in Home Assistant UI
- Notification Filter: Choose which notifications to display
- Monitored Spaces: Select which hubs/spaces to monitor
- Local storage only: Credentials are stored in Home Assistant's encrypted config entry system
- Password hashing: Your password is hashed using SHA-256 before transmission
- Secure communication: All API communication uses HTTPS (TLS/SSL)
- Session tokens: Tokens are stored locally and refreshed automatically
- No third parties: The integration communicates directly with Ajax servers
- End-to-end encrypted communication between your Home Assistant and Ajax
When using a proxy, the proxy administrator can see:
- All API requests and responses (alarm state, arm/disarm actions, device status)
- Your email address
Important: This integration does not manage any proxy server. For security and trust considerations, contact the person or organization providing your proxy access.
- ❌ I (the developer) cannot access your credentials
- ❌ No analytics, telemetry, or tracking
- ❌ No data collection of any kind
- ✅ Fully open source - you can audit the code yourself
Use the Alarm Control Panel entity to control your security system:
# Example automation: Arm when leaving home
automation:
- alias: "Arm Ajax when leaving"
trigger:
- platform: state
entity_id: person.your_name
to: "not_home"
action:
- service: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.ajax_alarm_homeUse force arming to arm the system even with open sensors:
# Force arm (away)
service: ajax.force_arm
target:
entity_id: alarm_control_panel.ajax_alarm_home
# Force arm night mode
service: ajax.force_arm_night
target:
entity_id: alarm_control_panel.ajax_alarm_home# Trigger emergency alarm
service: button.press
target:
entity_id: button.ajax_panic_homeGenerate a diagnostic report to help improve the integration:
service: ajax.generate_device_infoThis creates an anonymized JSON file with device information (no sensitive data included).
The integration provides specific error messages to help diagnose login issues:
| Error | Cause | Solution |
|---|---|---|
| Invalid API key | API key is missing or incorrect | Check your enterprise API key |
| Invalid email or password | Wrong credentials | Verify your Ajax account email and password |
| Account type not supported | Using a PRO/Enterprise account | Use a standard user account instead |
- Check Home Assistant logs for errors
- Verify your Ajax credentials are correct
- Ensure you have an active internet connection
- Make sure you're using a user account (not PRO/Enterprise)
- Verify AWS SQS credentials are configured correctly
- Check that the queue name matches exactly
- Review logs for SQS connection errors
- Wait for initial sync to complete (up to 30 seconds)
- Check that devices are visible in the Ajax app
- Try reloading the integration
logger:
default: info
logs:
custom_components.ajax: debugContributions are welcome! Please feel free to submit a Pull Request.
If you have Ajax devices that aren't tested yet, your help would be invaluable in improving device support.
This integration is developed through a collaborative approach:
- Human expertise - Architecture, security decisions, and code review by @foXaCe
- AI assistance - Code generation using Claude (Anthropic)
- Community contributions - Bug reports, testing, and feature requests
All code is reviewed, tested with real hardware, and open source.
This project is licensed under the MIT License - see the LICENSE file for details.
This integration is not officially affiliated with Ajax Systems. It is a community project developed with support from Ajax Systems.
Use at your own risk. The developer is not responsible for any issues arising from the use of this integration.