Интеграция Ajax API: подключение Ajax к KNX, Home Assistant и сторонним системам
Ajax предоставляет облачный REST API с аутентификацией OAuth 2.0 для партнёрских интеграций. В этом руководстве рассматриваются возможности API, интеграция Home Assistant через HACS, паттерны привязки KNX через xknx, обработка событий через вебхуки и ограничения архитектуры, работающей только через облако.
Обзор Ajax API
Ajax API – это RESTful-облачный API, размещённый на инфраструктуре Ajax Systems. Всё взаимодействие проходит через Ajax Cloud – сам Hub 2 Plus не имеет локального API. Аутентификация использует поток Authorization Code OAuth 2.0 и требует зарегистрированного партнёрского приложения в портале разработчиков Ajax.
API доступен партнёрам Ajax (Certified Integrators и выше). Потребительские аккаунты не имеют прямого доступа к API – интеграция всегда осуществляется через приложение, зарегистрированное у партнёра. Интеграция Home Assistant HACS абстрагирует это, используя предварительно зарегистрированный токен приложения.
Нет локального API: Ajax Hub 2 Plus не предоставляет локальный REST или WebSocket-эндпоинт. Все вызовы API идут на api.ajax.systems через HTTPS. Это означает, что для любой сторонней интеграции – включая Home Assistant, даже если он работает в той же локальной сети, что и хаб – требуется подключение к интернету.
Возможности API
| Категория эндпоинта | Доступные операции | Примечания |
|---|---|---|
| Хабы | Список хабов, состояние хаба (на охране/снят) | Включён статус онлайн/офлайн хаба |
| Устройства | Список устройств, состояние, уровень заряда | Уровень сигнала, статус вскрытия |
| Группы | Список групп, постановка/снятие группы | Управление на уровне разделов |
| Постановка/снятие | POST постановка, POST снятие, POST ночной режим | Требует токен аутентификации пользователя |
| Пользователи | Список пользователей, управление доступом | Только для администратора-партнёра |
| Поток событий | Webhook push-события (тревога, вскрытие, постановка) | Подписка на хаб в портале |
| Камеры | Список камер, запрос снимка | Интеграция Ajax NVR и IP-камер |
Интеграция Home Assistant
Официальная интеграция Ajax Security для Home Assistant доступна через HACS (Home Assistant Community Store). Она использует партнёрский API Ajax и создаёт стандартные сущности HA для всех устройств Ajax на подключённом хабе.
Интеграция Ajax в Home Assistant – настройка
Prerequisites: - Ajax account with hub registered - Partner API token (from Ajax PRO Desktop API Keys) - Home Assistant 2024.1+ with HACS installed Installation: 1. HACS Integrations Search "Ajax Security" 2. Install integration, restart HA 3. Settings Integrations Add Integration Ajax Security 4. Enter API token and select hub(s) Entities created per hub: alarm_control_panel.ajax_hub_[id] – arm/disarm/night mode binary_sensor.[device_name]_motion – PIR detectors binary_sensor.[device_name]_door – door/window contacts binary_sensor.[device_name]_glass – glass break detectors binary_sensor.[device_name]_tamper – tamper on all devices sensor.[device_name]_battery – battery level (%) sensor.[device_name]_signal – signal strength (%) Polling interval: 30 seconds (HA polls Ajax Cloud) Alarm events via webhook: real-time push (see below)
Интеграция KNX через Home Assistant
При наличии сущностей Ajax в Home Assistant привязки групповых адресов KNX создаются с помощью интеграции KNX (библиотека xknx). Триггеры движения от детекторов Ajax записывают телеграммы DPT 1.001 на групповые адреса KNX; сущность панели сигнализации Ajax сопоставляется с общим групповым адресом тревоги KNX.
configuration.yaml – движение Ajax телеграмма KNX
# Home Assistant configuration.yaml (KNX integration) knx: tunnel: host: 192.168.1.10 # KNX IP Interface address port: 3671 # automations.yaml – Ajax motion detector KNX automation: - alias: "Ajax MotionCam hallway KNX lights" trigger: platform: state entity_id: binary_sensor.ajax_motioncam_hallway_motion to: "on" action: service: knx.send data: address: "3/0/5" # KNX hallway lights GA payload: true type: "1byte" - alias: "Ajax MotionCam hallway OFF KNX lights off" trigger: platform: state entity_id: binary_sensor.ajax_motioncam_hallway_motion to: "off" for: "00:02:00" # 2-minute hold-off action: service: knx.send data: address: "3/0/5" payload: false type: "1byte" - alias: "Ajax alarm KNX general alarm" trigger: platform: state entity_id: alarm_control_panel.ajax_hub_main to: "triggered" action: service: knx.send data: address: "8/0/1" # KNX general alarm GA payload: true type: "1byte"
Примеры сценариев Ajax + KNX
Мост Ajax-HA-KNX позволяет реализовывать сценарии, при которых физическое состояние охраны управляет автоматизацией здания. Распространённый паттерн – постановка Ajax на охрану при активации сцены KNX «ухожу» и снятие при возвращении с определённым кодом клавиатуры.
Сцена KNX «Ухожу» постановка Ajax на охрану
# KNX "I'm leaving" button press (GA 1/0/10 = true) # triggers HA automation arms Ajax automation: - alias: "KNX leaving scene Ajax arm away" trigger: platform: event event_type: knx_event event_data: address: "1/0/10" # KNX leaving button GA value: true action: - service: knx.send data: address: "3/0/0" # Lights off (all zones) payload: false type: "1byte" - service: knx.send data: address: "4/0/0" # HVAC setback mode payload: false type: "1byte" - delay: "00:00:30" # 30-second exit delay - service: alarm_control_panel.alarm_arm_away target: entity_id: alarm_control_panel.ajax_hub_main data: code: "1234" # Master code - alias: "Ajax armed KNX confirmation" trigger: platform: state entity_id: alarm_control_panel.ajax_hub_main to: "armed_away" action: service: knx.send data: address: "1/0/11" # KNX armed indicator LED payload: true type: "1byte"
Webhook-события
Ajax поддерживает push-события через вебхуки для уведомлений о тревоге в реальном времени. Вебхуки настраиваются в портале Ajax PRO для каждого хаба и доставляют JSON-пакеты на публичный HTTPS-эндпоинт. Для Home Assistant используется URL вебхук-триггера HA.
JSON-пакет вебхука Ajax – событие тревоги
// Ajax webhook POST body (alarm event)
{
"hubId": "HUB-XXXXXXXX",
"eventType": "ALARM",
"deviceId": "DEV-12345678",
"deviceName": "MotionCam Hallway",
"deviceType": "MotionCam",
"zoneId": 3,
"zoneName": "Ground Floor",
"timestamp": "2025-04-15T14:32:10Z",
"alarmReason": "MOTION_DETECTED"
}
// Event types:
// ALARM – motion, door open, glass break
// TAMPER – device opened or removed
// ARM – system or group armed
// DISARM – system or group disarmed
// POWER_LOSS – hub external power lost
// BATTERY_LOW – device battery below 10%
// SIGNAL_LOSS – device communication lost
// Test webhook (curl):
curl -X POST https://your-ha-instance.duckdns.org/api/webhook/ajax_test \
-H "Content-Type: application/json" \
-d '{"eventType":"ALARM","deviceName":"Test","alarmReason":"TEST"}'Доступ к партнёрскому API Ajax
Для доступа к REST API Ajax требуется партнёрский аккаунт. Потребительские аккаунты Ajax не могут генерировать токены API. Партнёры классифицируются по уровням, и возможности API расширяются на более высоких уровнях.
| Уровень партнёра | Доступ к API | Лимит запросов |
|---|---|---|
| Certified Installer | Базовый – список устройств, опрос состояния | 60 запросов/мин |
| Certified Integrator | Полный – постановка/снятие, вебхуки, камеры | 300 запросов/мин |
| Technology Partner | Полный + массовое управление несколькими хабами | Индивидуальный SLA |
Для получения доступа к партнёрскому API зарегистрируйтесь на ajax.systems/partners. Процесс одобрения занимает 3–10 рабочих дней. Для личного использования Home Assistant интеграция HACS использует общий токен приложения – личная регистрация API не требуется.
Ограничения и требования
Архитектура, работающая только через облако, имеет важные последствия для надёжности и обработки данных. Специалистам по безопасности следует оценить их, прежде чем использовать API-автоматизацию в критически важных объектах.
| Ограничение | Детали | Меры |
|---|---|---|
| Нет локального API | Hub 2 Plus не имеет LAN-эндпоинта | Принять облачную зависимость; использовать надёжный интернет с ИБП на маршрутизаторе |
| Задержка опроса состояния | Стандартный интервал опроса в HA – 30 секунд | Использовать вебхуки для событий тревоги; опрос только для отображения статуса |
| Отключение интернета | API недоступен при отключении | Автономная защита Ajax продолжает работать; только мост автоматизации отказывает |
| Обработка данных (GDPR) | Данные событий обрабатываются на серверах Ajax в ЕС | Подтвердить соглашение об обработке данных с Ajax для коммерческих проектов |
| Обновление токена OAuth | Токен доступа истекает, требует обновления | HACS-интеграция обрабатывает обновление; пользовательские интеграции должны реализовать это самостоятельно |
Автономная защита Ajax не зависит от отключения API/интернета. Hub 2 Plus продолжает обнаруживать угрозы, поднимать тревогу и уведомлять через GSM, даже если облачный API недоступен. Уровень интеграции API является дополнительным – не проектируйте систему автоматизации здания, которая зависит от Ajax API для функций жизнеобеспечения.
Ajax + KNX + Home Assistant – интегрировано и протестировано
Мы настраиваем Ajax Hub 2 Plus с KNX-мостом Home Assistant, вебхук-автоматизацией и интеграцией сцен здания – поставляем как работающую систему с полной документацией.
Запросить предложение