Ajax Systems · REST API · OAuth 2.0 · Home Assistant · KNX · 9 min de lecture

Intégration API Ajax : Connexion d'Ajax à KNX, Home Assistant et systèmes tiers

Ajax fournit une REST API cloud avec authentification OAuth 2.0 pour les intégrations partenaires. Ce guide couvre les capacités de l'API, l'intégration Home Assistant via HACS, les patterns de liaison KNX via xknx, le traitement des événements webhook et les limites de l'architecture cloud uniquement.

Vue d'ensemble de l'API Ajax

L'API Ajax est une API cloud RESTful hébergée sur l'infrastructure Ajax Systems. Toutes les communications transitent par l'Ajax Cloud — le Hub 2 Plus lui-même ne dispose d'aucune API locale. L'authentification utilise le flux OAuth 2.0 Authorization Code et nécessite une application partenaire enregistrée dans le portail développeur Ajax.

L'API est accessible aux partenaires Ajax (Certified Integrators et au-dessus). Les comptes grand public n'ont pas d'accès direct à l'API — l'intégration passe toujours par une application enregistrée par un partenaire. L'intégration Home Assistant HACS abstrait cela en utilisant un token d'application pré-enregistré.

Pas d'API locale : Ajax Hub 2 Plus n'expose pas d'endpoint REST ou WebSocket local. Tous les appels API transitent par api.ajax.systems via HTTPS. Cela signifie qu'une connexion internet est requise pour toute intégration tierce — y compris Home Assistant, même s'il s'exécute sur le même réseau local que le hub.

Capacités de l'API

Catégorie d'endpointOpérations disponiblesNotes
HubsListe des hubs, état du hub (armé/désarmé)Statut en ligne/hors ligne du hub inclus
AppareilsListe des appareils, état, niveau de batterieForce du signal, état de sabotage
GroupesListe des groupes, armement/désarmement de groupeContrôle au niveau des partitions
Armement/DésarmementPOST armement, POST désarmement, POST mode nuitNécessite un token d'authentification utilisateur
UtilisateursListe des utilisateurs, gestion des accèsAdministrateur partenaire uniquement
Flux d'événementsÉvénements push webhook (alarme, sabotage, armement)Abonnement par hub dans le portail
CamérasListe des caméras, demande de snapshotIntégration Ajax NVR et caméra IP

Intégration Home Assistant

L'intégration officielle Ajax Security pour Home Assistant est disponible via HACS (Home Assistant Community Store). Elle utilise l'API partenaire Ajax en arrière-plan et crée des entités HA standard pour tous les appareils Ajax sur le hub connecté.

Intégration Ajax dans Home Assistant — configuration

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)

Intégration KNX via Home Assistant

Avec les entités Ajax disponibles dans Home Assistant, les liaisons d'adresses de groupe KNX sont créées en utilisant l'intégration KNX (bibliothèque xknx). Les déclencheurs de mouvement des détecteurs Ajax écrivent des télégrammes DPT 1.001 sur les adresses de groupe KNX ; l'entité du panneau d'alarme Ajax est mappée sur une adresse de groupe d'alarme générale KNX.

configuration.yaml — mouvement Ajax → télégramme 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"

Exemples de scénarios Ajax + KNX

Le pont Ajax-HA-KNX permet des scénarios où l'état de sécurité physique pilote l'automatisation du bâtiment. Un pattern courant est l'armement d'Ajax lorsqu'une scène KNX "départ" s'active, et le désarmement à l'arrivée avec un code de clavier spécifique.

Scène KNX "Je pars" → armement 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"

Événements webhook

Ajax prend en charge les événements push webhook pour les notifications d'alarme en temps réel. Les webhooks sont configurés dans le portail Ajax PRO par hub et délivrent des payloads JSON à un endpoint HTTPS public. Pour Home Assistant, l'URL de déclenchement webhook HA est utilisée.

Payload JSON webhook Ajax — événement alarme

// 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"}'

Accès à l'API partenaire Ajax

L'accès à la REST API Ajax nécessite un compte partenaire. Les comptes Ajax grand public ne peuvent pas générer de tokens API. Les partenaires sont catégorisés par niveau, avec des capacités API s'élargissant aux niveaux supérieurs.

Niveau partenaireAccès APILimite de taux
Certified InstallerBasique — liste des appareils, polling d'état60 requêtes/min
Certified IntegratorComplet — armement/désarmement, webhooks, caméras300 requêtes/min
Technology PartnerComplet + gestion multi-hubs en masseSLA personnalisé

Pour demander l'accès à l'API partenaire, inscrivez-vous sur ajax.systems/partners. Le processus d'approbation prend 3 à 10 jours ouvrables. Pour un usage personnel avec Home Assistant, l'intégration HACS utilise un token d'application partagé — aucune inscription API personnelle n'est requise.

Limitations et considérations

L'architecture API exclusivement cloud a des implications importantes pour la fiabilité et le traitement des données. Les professionnels de la sécurité doivent les évaluer avant de s'engager dans une automatisation basée sur l'API pour des installations critiques.

LimitationDétailAtténuation
Pas d'API localeHub 2 Plus n'a pas d'endpoint LANAccepter la dépendance cloud ; utiliser une connexion internet fiable avec UPS sur le routeur
Latence de polling d'étatPolling par défaut de 30 secondes dans HAUtiliser les webhooks pour les événements d'alarme ; polling uniquement pour l'affichage d'état
Coupure internetAPI indisponible pendant la coupureLa sécurité autonome Ajax continue ; seul le pont d'automatisation tombe
Traitement des données (RGPD)Données d'événements traitées sur les serveurs Ajax EUConfirmer l'accord de traitement des données avec Ajax pour les projets commerciaux
Rafraîchissement du token OAuthLe token d'accès expire, nécessite un rafraîchissementL'intégration HACS gère le rafraîchissement ; les intégrations personnalisées doivent l'implémenter

La sécurité autonome Ajax n'est pas affectée par une coupure API/internet. Le Hub 2 Plus continue de détecter, d'alarmer et de notifier via GSM même lorsque l'API cloud est inaccessible. La couche d'intégration API est complémentaire — ne concevez pas un système domotique qui repose sur l'API Ajax pour des fonctions de sécurité des personnes.

Ajax + KNX + Home Assistant — intégré et testé

Nous configurons Ajax Hub 2 Plus avec le pont KNX Home Assistant, l'automatisation webhook et l'intégration de scènes bâtiment — livré comme système fonctionnel avec documentation complète.

Demander un devis →
Chargement...
Retour en haut