Exemple d’intégration d'une alarme AJAX dans Jeedom avec le plugin siapro

Exemple d’intégration d’une alarme AJAX dans Jeedom avec le plugin siapro

Le but de ce tutoriel est de vous faire mon retour d’expérience d’intégration de l’alarme AJAX dans Jeedom.
Il ne prétend pas être la solution et n’est probablement pas exempt de défauts ou d’optimisations possibles.

Préambule

L’interface SIA entre AJAX et Jeedom permet de remonter les évènements du système AJAX vers Jeedom. Il y a cependant des limitations au protocole implémenté par AJAX (dans sa version 2.10):

  • Le dialogue ne se fait que dans le sens AJAX vers Jeedom. Il n’est donc pas possible d’armer ou de désarmer l’alarme depuis Jeedom
  • Les détecteurs de type intrusion ne remonte par l’interface SIA des évènements que si l’alarme est activée (ou le groupe auquel ils appartiennent est activé). Il n’est donc pas possible de se servir de ces détecteurs dans d’autres situations que la détection d’intrusion
  • Les détecteurs d’incendie, de CO et d’inondation remontent par l’interface SIA les alarmes que le HUB soit armé ou pas.
  • Les malfonctions des appareils AJAX remontent par l’interface SIA que le HUB soit armé ou pas.

Installation plugin siapro

Le plugin de [thanaus] est disponible sur le market

Il n’y a pas de difficulté particulière dans son installation.

Pour la configuration, saisir le Port SIA ( par exemple 9868 ). C’est ce port qui sera utilisé pour la liaison en AJAX et Jeedom

Ne pas utiliser la clé de cryptage car ce n’est pas, pour le moment, implémenté dans le plugin

Liaison avec le Hub AJAX

Dans l’application AJAX sur votre smartphone.

  • Allez dans Appareils et cliquez sur votre Hub
  • Cliquez sur l’engrenage pour configuré le Hub
  • Dans la liste, cliquez sur Centre de télésurveillance :
    • Dans Protocole, choisir SIA Protocol
    • Dans Numéro de compte, saisir un numéro quelconque (il n’y pas de vérification autre que le champ soit non vide), par exemple A001
    • Dans Adresse IP principale, saisir l’adresse IP locale de notre Jeedom et dans Port, saisir le même numéro de port que celui saisi dans le plugin, par exemple 9868
    • Comme Canal, choisir Ethernet
    • Sélectionner Rapport de test périodique et sélectionné un intervalle de ping (ceci sert à vérifier que le lien avec Jeedom est bien établi)
  • Sauver et retourné à la page Appareils. Normalement auprès un petit moment vous devriez voir apparaitre ceci :

hub_ajax

De retour dans Jeedom, dans Plugins->Protocole Domotique->SIA Pro, vous devriez avoir un nouvel équipement de créé correspondant à votre système AJAX, nommé par défaut Nri0 préfixé avec le Numéro de compte, donc A001.Nri0 dans notre exemple. Renommez-le pour plus de compréhension : ici Ajax Hub 2

Maintenant, générez un évènement dans AJAX, par exemple activez l’alarme. Dans Jeedom, un ou plusieurs équipements apparaissent, nommés par défaut Nri1, Nri2… Ils correspondent à chacun des groupes définis dans AJAX. Renommez-les, là encore, pour plus de compréhension. Dans mon exemple, j’ai deux groupes : Ajax Protection Intérieure et Ajax Protection Périmétrique

equipements sia-pro

Pour la suite, il faut comprendre à quoi servent chacun des équipements :

  • Ajax Hub 2 recoit uniquement les évènements de test de vie envoyés par AJAX
  • Ajax Protection Intérieure et Ajax Protection Périmétrique recoivent tous les évènements liés au système (activation/désactivation, alarmes, malfonctions)

Gérer les codes AJAX dans Jeedom

Etat synthétique d’AJAX

Afin de gérer les codes envoyé par AJAX dans Jeedom et avoir un widget de synthèse de l’état de l’alarme, je définie un virtuel.

La première partie du virtuel est utilisée pour l’affichage dans le Widget

On défini un virtuel Alarme :

  • Zone Intérieure : Indicateur de l’état de la Zone 0: Désarmé, 1: Armé, 2: Incident (Alarme ou Malfonction), 3: Mode Nuit
  • Zone Intérieure_bak : Sauvegarde l’état précédent
  • Zone Périmétrique : Indicateur de l’état de la Zone 0: Désarmé, 1: Armé, 2: Incident (Alarme ou Malfonction), 3: Mode Nuit
  • Zone Périmétrique_bak : Sauvegarde l’état précédent
  • Hub Link : Indicateur de l’état de la connexion au Hub AJAX
  • Intrusion : Indicateur d’alarme de type intrusion. Associé à une variable par zone variable(IntrusionAlarm_ZI), variable(IntrusionAlarm_ZP)
  • Feu : Indicateur d’alarme de type Incendie. Associé à une variable par zone variable(FireAlarm_ZI), variable(FireAlarm_ZP)
  • CO : Indicateur d’alarme de type Monoxyde de carbone. Associé à une variable par zone variable(GasAlarm_ZI), variable(GasAlarm_ZP)
  • Inondation : Indicateur d’alarme de type inondation. Associé à une variable par zone variable(WaterAlarm_ZI), variable(WaterAlarm_ZP)
  • Info : message contenu dans la variable(infoStatutAJAX)
  • DescriptionEvent : description du dernier évènement reçu par AJAX
  • Etat : Indique que l’état du virtuel
  • Réinit : permet de réinitialiser le virtuel à son état par défaut. Appel le scénario ResetAjaxStatut

la seconde partie du virtuel est utiliséé pour le stokage des infos reçues par le Hub

Pour chaque zone :

  • Code : Dernier code SIA reçu pour la zone
  • Description : Description reçue
  • Zone : ID de l’équipement AJAX concerné par le dernier évènement reçu
  • Utilisateur : ID de l’utilisateur AJAX ayant déclenché l’évènement reçu

A noter que l’ont a soit Zone, soit Utilisateur pour un évènement mais pas les deux en même temps

Widget du virtuel

Pour la disposition des infos, j’utilise un Tableau de 4x1 :

Ce qui donne le résultat suivant :

widget_ajax

J’utilise des widgets personnalisées pour chaque commande afin d’améliorer le rendu.

Scénarios associés

Afin de donner l’intelligence au virtuel, j’ai défini les scénarios suivants :

  • ResetAjaxStatut : permet de remettre à zéro le virtuel de l’Alarme AJAX
  • Check Ping AJAX : permet de vérifier l’état de la connexion avec le Hub
  • Ajax Utilisateur : permet de décoder l’ID de l’utilisateur AJAX
  • Ajax Appareil : permet de décoder les ID des appareils AJAX
  • Code Alarme ZI et Code Alarme ZP : la gestion des codes reçu par les équipements AJAX pour chaque groupe : Ajax Protection Intérieure et Ajax Protection Périmétrique

Pour la suite je vous donne les scénarios sous forme de texte, plus simple à visualiser

ResetAjaxStatut

Scénario ultra simple, qui remet aux valeurs par défaut les commandes du virtuel :

- Nom du scénario : ResetAjaxStatut
- Mode du scénario : provoke
    - Evènement : 
    
    ACTION
     event - Options : {"enable":"1","background":"0","cmd":"#[S\u00e9curit\u00e9][Alarme][Zone Int\u00e9rieure]#","value":"0"}
     event - Options : {"enable":"1","background":"0","cmd":"#[S\u00e9curit\u00e9][Alarme][Zone P\u00e9rim\u00e9trique]#","value":"0"}
     event - Options : {"enable":"1","background":"0","cmd":"#[S\u00e9curit\u00e9][Alarme][DescriptionEvent]#","value":""}
     (variable) Affectation de la variable : IntrusionAlarm_ZI à 0
     (variable) Affectation de la variable : IntrusionAlarm_ZP à 0
     (variable) Affectation de la variable : FireAlarm_ZI à 0
     (variable) Affectation de la variable : GasAlarm_ZI à 0
     (variable) Affectation de la variable : WaterAlarm_ZI à 0
     (variable) Affectation de la variable : WaterAlarm_ZP à 0
     (variable) Affectation de la variable : infoStatutAJAX à 

Check Ping AJAX

Encore un scénario simple, qui vérifie le liene avec AJAX. A noter que la valeur 900 doit être adapté en fonction de la valeur mise dans l’intervalle de Rapport de test périodique dans AJAX et adapter également la fréquence de lancement du scénario.

Ajax Hub 2 correspond au premier équipement dans SIA Pro (i.e Nri0)
Alarme est le virtuel

- Nom du scénario : Check Ping AJAX
- Objet parent : Sécurité
- Mode du scénario : schedule
    - Programmation : */5 * * * *
    
    SI #timestamp#  - strtotime(collectdate(#[Sécurité][Ajax Hub 2][Code]#)) > 900
    ALORS
     message - Options : {"enable":"1","background":"0","message":"Ping en échec avec Hub AJAX"}
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Hub Link]#","value":"0"}
    SINON
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Hub Link]#","value":"1"}

Ajax Utilisateur

Toujours un scénario simple, pour décoder l’ID de l’utilisateur. Les ID d’utilisateurs dans AJAX commencent à 501 et sont incrémentés de 1 pour chaque nouvel utilisateur.

Ajax Protection Intérieure est l’équipement SIA Pro correspondant au groupe Nri1
Ajax Protection Périmétrique est l’équipement SIA Pro correspondant au groupe Nri2
Alarme est le virtuel

- Nom du scénario : Ajax utilisateur
- Objet parent : Sécurité
- Mode du scénario : provoke
    - Evènement : 
    
    SI #[Sécurité][Ajax Protection Intérieure][Utilisateur - Zone]# == 501  
    ALORS
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][UtilisateurI]#","value":"Aegis"}
    SINON
    
    SI #[Sécurité][Ajax Protection Périmétrique][Utilisateur - Zone]# == 501  
    ALORS
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][UtilisateurP]#","value":"Aegis"}
    SINON

Ajax Appareil

Le scénario permet de décoder les ID des appareils AJAX émettant un évènement. Les ID commence à 0 (le Hub AJAX) et sont incrémentés de 1 pour chaque nouvel appareil.
Il convient de remplir la bonne commande en fonction du groupe dans lequel est ajouté l’appareil.

Ajax Protection Intérieure est l’équipement SIA Pro correspondant au groupe Nri1
Ajax Protection Périmétrique est l’équipement SIA Pro correspondant au groupe Nri2
Alarme est le virtuel

- Nom du scénario : Ajax Appareil
- Objet parent : Sécurité
- Mode du scénario : provoke
    - Evènement : 
    
    SI #[Sécurité][Ajax Protection Intérieure][Utilisateur - Zone]# == 0
    ALORS
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][ZoneI]#","value":"Hub AJAX"}
     (stop) Arret du scenario
    SINON

    SI #[Sécurité][Ajax Protection Intérieure][Utilisateur - Zone]# == 1
    ALORS
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][ZoneI]#","value":"Salon - Fenètre Droite"}
     (stop) Arret du scenario
    SINON

    SI #[Sécurité][Ajax Protection Périmétrique][Utilisateur - Zone]# == 12  
    ALORS
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][ZoneP]#","value":"Garage - Porte jardin"}
     (stop) Arret du scenario
    SINON	

Code Alarme ZI et Code Alarme ZP

Le plus gros morceau, le traitement des évènements reçus. Je ne décris qu’un scénario pour un groupe, le principe est le même pour les autres.

Le Scénario est provoqué par la réception d’un évènement sur l’équipement SIA Pro correspondant au groupe :

- Nom du scénario : Code Alarme ZI
- Objet parent : Sécurité
- Mode du scénario : provoke
    - Evènement : #[Sécurité][Ajax Protection Intérieure][Code]#

La première partie concerne le décodage des ID utilisateurs et ID d’appareils AJAX, ainsi que le formatage de la description de l’évènement :

    ACTION
     (scenario) startsync de [Sécurité][Sécurité][Ajax Utilisateur]
     (scenario) startsync de [Sécurité][Sécurité][Ajax Appareil]
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][DescriptionEvent]#","value":"#[Sécurité][Alarme][ZoneI]# : #[Sécurité][Alarme][Description ZI]# - #jour# #smois# formatTime(#time#)"}

Cette partie traite de l’armement ou du désarmement de l’alarme :

    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'CG' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'CA' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'CB' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'CL' 
    ALORS
     log - Options : {"enable":"1","background":"0","message":"Alarme armée dans la zone intérieure"}
     (variable) Affectation de la variable : infoStatutAJAX à Alarme armée par #1031# #sjour# #jour# #smois# formatTime(#time#)
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"1"}
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][DescriptionEvent]#","value":""}
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"1"}
     (stop) Arret du scenario
    SINON
    
    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'NC' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'NL'
    ALORS
     log - Options : {"enable":"1","background":"0","message":"Alarme armée en mode Nuit dans la zone intérieure"}
     (variable) Affectation de la variable : infoStatutAJAX à Alarme armée en mode Nuit par #1031# #sjour# #jour# #smois# formatTime(#time#)
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"3"}
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][DescriptionEvent]#","value":""}
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"3"}
     (stop) Arret du scenario
    SINON
    
    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'OG' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'OA'   OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'OB'  OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'OP' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'NO'  OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'NP' 
    ALORS
     log - Options : {"enable":"1","background":"0","message":"Alarme désarmée dans la zone intérieure"}
     (variable) Affectation de la variable : infoStatutAJAX à Alarme désarmée par #1031# #sjour# #jour# #smois# formatTime(#time#)
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"0"}
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][DescriptionEvent]#","value":""}
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"0"}
     (stop) Arret du scenario
    SINON

Là on attaque les types évènements. Ici les déclenchements d’alarmes incendie. Vous pouvez y ajouter des actions comme allumer les lumières et les faire clignoter, ouvrir tous les volets…

    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'FA' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'KA' 
    ALORS
     log - Options : {"enable":"1","background":"0","message":"Alarme incendie: #[Sécurité][Ajax Protection intérieure][Code]# #[Sécurité][Alarme][DescriptionEvent]#"}
     (variable) Affectation de la variable : FireAlarm_ZI à 1
         
        SI #[Sécurité][Alarme][Zone Intérieure]# != 2
        ALORS
         event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"#[Sécurité][Alarme][Zone intérieure]#"}
        SINON
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"2"}
     (stop) Arret du scenario
    SINON
    
    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'FC' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'FH' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'FC' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'KH' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'KJ' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'KR'
    ALORS
     (variable) Affectation de la variable : FireAlarm_ZI à 0
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"#[Sécurité][Alarme][Zone intérieure_bak]#"}
     (stop) Arret du scenario
    SINON

La partie pour les alarmes de type monoxyde de carbone :

    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'GA'
    ALORS
     log - Options : {"enable":"1","background":"0","message":"Alarme CO : #[Sécurité][Ajax Protection intérieure][Code]# #[Sécurité][Alarme][DescriptionEvent]#"}
     (variable) Affectation de la variable : GasAlarm_ZI à 1      
        
		SI #[Sécurité][Alarme][Zone Intérieure]# != 2	
        ALORS
         event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"#[Sécurité][Alarme][Zone intérieure]#"}
        SINON
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"2"}
     (stop) Arret du scenario
    SINON
    
    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'GH' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'GR' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'GJ'
    ALORS
     (variable) Affectation de la variable : GasAlarm_ZI à 0
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"#[Sécurité][Alarme][Zone intérieure_bak]#"}
     (stop) Arret du scenario
    SINON

La partie pour les alarmes de type inondation :

    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'WA'
    ALORS
     log - Options : {"enable":"1","background":"0","message":"Alarme inondation : #[Sécurité][Ajax Protection intérieure][Code]# #[Sécurité][Alarme][DescriptionEvent]#"}
     (variable) Affectation de la variable : WaterAlarm_ZI à 1
         
        SI #[Sécurité][Alarme][Zone Intérieure]# != 2
        ALORS
         event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"#[Sécurité][Alarme][Zone intérieure]#"}
        SINON
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"2"}
     (stop) Arret du scenario
    SINON
    
    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'WH' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'WJ' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'WR' 
    ALORS
     (variable) Affectation de la variable : WaterAlarm_ZI à 0
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"#[Sécurité][Alarme][Zone intérieure_bak]#"}
     (stop) Arret du scenario
    SINON

La partie pour les alarmes de type intrusion :

    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'BA' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'JA' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'SM'
    ALORS
     log - Options : {"enable":"1","background":"0","message":"Alarme intrusion : #[Sécurité][Ajax Protection intérieure][Code]# #[Sécurité][Alarme][DescriptionEvent]#"}
     (variable) Affectation de la variable : IntrusionAlarm_ZI à 1
         
        SI #[Sécurité][Alarme][Zone Intérieure]# != 2
        ALORS
         event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"#[Sécurité][Alarme][Zone intérieure]#"}
        SINON
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"2"}
     (stop) Arret du scenario
    SINON
    
    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'BC' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'BH' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'BJ' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'BR'
    ALORS
     (variable) Affectation de la variable : IntrusionAlarm_ZI à 0
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"#[Sécurité][Alarme][Zone intérieure_bak]#"}
     (stop) Arret du scenario
    SINON
    
    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'PA'
    ALORS
     log - Options : {"enable":"1","background":"0","message":"Panic Button press\u00e9 par #[Sécurité][Alarme][UtilisateurI]# :  #[Sécurité][Ajax Protection intérieure][Code]# #[Sécurité][Alarme][DescriptionEvent]#"}
     (variable) Affectation de la variable : IntrusionAlarm_ZI à 1
         
        SI #[Sécurité][Alarme][Zone Intérieure]# != 2
        ALORS
         event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"#[Sécurité][Alarme][Zone intérieure]#"}
        SINON
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"2"}
     alert - Options : {"enable":"1","background":"0","level":"danger","message":"Bouton Panic d\u00e9clench\u00e9 par #[Sécurité][Alarme][UtilisateurI]#"}
     (stop) Arret du scenario
    SINON
    
    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'PH'
    ALORS
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"#[Sécurité][Alarme][Zone intérieure_bak]#"}
     (stop) Arret du scenario
    SINON

La gestion des malfonctions :

    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'TA' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'TB' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'QB' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'XL'
    ALORS
     log - Options : {"enable":"1","background":"0","message":"Dysfonctionnement  : #[Sécurité][Ajax Protection intérieure][Code]# #[Sécurité][Alarme][DescriptionEvent]#"}
         
        SI #[Sécurité][Alarme][Zone Intérieure]# != 2
        ALORS
         event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"#[Sécurité][Alarme][Zone intérieure]#"}
        SINON
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"2"}
     (stop) Arret du scenario
    SINON
    
    SI #[Sécurité][Ajax Protection Intérieure][Code]# == 'TR' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'TU' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'QU' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'XC'
    ALORS
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"#[Sécurité][Alarme][Zone intérieure_bak]#"}
     (stop) Arret du scenario
    SINON

Enfin le traitement des codes non gérés :

    ACTION
     log - Options : {"enable":"1","background":"0","message":"Code non pris en compte : #[Sécurité][Ajax Protection intérieure][Code]#  #[Sécurité][Ajax Protection intérieure][Message]# #[Sécurité][Ajax Protection intérieure][Description]#"}
         
        SI #[Sécurité][Alarme][Zone Intérieure]# != 2
        ALORS
         event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure_bak]#","value":"#[Sécurité][Alarme][Zone intérieure]#"}
        SINON
     event - Options : {"enable":"1","background":"0","cmd":"#[Sécurité][Alarme][Zone intérieure]#","value":"2"}

Voilà j’espère que ce n’est pas trop indigeste, j’ai essayé d’être le plus didactique possible. N’hésitez pas à me faire des retours constructifs pour améliorer les choses.

Pour ceux qui veulent aller plus loin et représenter chacun de leurs appareils AJAX dans Jeedom ainsi que leur l’état associé, la suite est là : Exemple d’intégration d'une alarme AJAX dans Jeedom avec le plugin siapro - pour allez plus loin

Bonne lecture

13 « J'aime »

Quel boulot de dingue, merci @Aegis :pray:

1 « J'aime »

Bravo @Aegis,
tres beau travail d’integration, et merci pour le partage

Benoit

1 « J'aime »

La suite du tutoriel est disponible : Exemple d’intégration d'une alarme AJAX dans Jeedom avec le plugin siapro - pour allez plus loin :slight_smile:

Super merci beaucoup!

1 « J'aime »

Super boulot, je suis impressionné par la qualité du rendu et du niveau de détails que t’as pu remonter aussi proprement ! Je te remercie pour ton travail ainsi que ton partage.

J’en suis à intégrer tes scripts, et je suis un peu perdu.
Peux-tu mettre un screenshot pour celui-ci ? Que je puisse comprendre où va dans quoi ?
Je ne suis pas encore tout à faire à l’aise avec jeedom.
Je te remercie encore une fois.
Et j’ai déjà commencé à intégrer ton 2ème tuto :slight_smile:

Pourrais-tu également nous montrer comment atteindre le résultat visuel de ton widget ?

EDIT : je vais me répondre, j’ai fait un export d’un scénario existant, j’ai compris comment cela marchait …
dommage que l’on puise pas faire d’import (en faisant attention au nommage, ta convention est très bonne … juste un peu de mélange anglais / fr).

EDIT2 : à quoi fait référence cette chaine de caractères ? ```
#1031#

Hello,

Le #1031#, c’est la commande correspondant à l’utilisateur dans le virtuel « Alarme »

Et pour le mélange anglais/français c’est que dans AJAX j’ai mis les termes en français pour la famille… :wink: mais j’utilise l’anglais comme la plupart de ceux qui codent c’est plus concis en général

Super, je comprends mieux, j’ai réussi à réparer ça. Merci pour ton retour rapide.
Quand tu auras un peu de temps, pourras-tu nous expliquer comment améliorer le visuel du virtuel « Alarme » ?

Bonjour,

Je rencontre une difficultés dans la mise en place de ce processus, est ce que quelqu’un peux m’aider.

Ma problématique viens de Ajax, lorsque je mets le protocole SIA. je n’ai pas la remonter. Le centre de télésurveillance restent en : Pas connecté

Voici ce que j’ai rentrer en paramètre dans centre de télésurveillance

Protocole : SIA DC 09 (SIA-DCS)
Numéro du site : A001
Adresse Ip principale : n° de l’IP de ma Jeedom
Port : 9868

Ethernet Activé
rapport de test périodique activé
Intervalle de ping : 1 minutes

Cryptage: désactivé
Envoyer les coordonnées : désactivé

Pouvez vous me dire si éventuellement j’ai fais une erreur.

Merci par avance pour votre aide

@Caubril : peux-tu activer les logs en mode DEBUG, relancer le daemon du plugin et m’envoyer les logs ?

Salut, concernant les Ajax Appareil… tu indiques qu’ils ont un numéro qui s’incrémente à partir de 0.

Je ne sais pas comment trouver les ID des équipements. Dans l’outil SIAPRO je ne vois que 2 appareils
image
et dedans il n’y à pas grand chose


Du coup faut les trouver comment les ID ?
Merci :slight_smile:

1 « J'aime »

Salut
Tu trouveras l id des appareils sur ton appli Ajax sur ton téléphone mobile, il suffit d aller dans la configuration d un détecteur d’ouverture par exemple et de descendre en fin de page. Tu verras alors « appareil no x ». Tu devras le faire pour chaque appareil.
Jmm

Bonjour, merci déjà pour ce tutoriel. Je suis sur la première partie avant de passer à la deuxième.

J’ai quelques soucis. ça peut venir de copier coller ou d’erreur chez moi.
Quand j’active l’alarme en mode dysfonctionnement (CF/NF fenêtre ouvert), le code n’est pas trouvé.

A quelle étape dois-je l’ajouter Pour les codes CF et NF? En mettant le code suivant avec le CF, cela ne donne pas le DescriptionEvent donc ça doit être ailleurs étant donnée qui est mis vierge dans le code? Faut-il mieux faire deux SI avec le texte armé et dysfonctionnement si pas présent.

#[Sécurité][Ajax Protection Intérieure][Code]# == 'CG' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'CA' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'CB' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'CL'

J’ai vu en même temps que l’information de la variable « infoStatutAjax » reste sur la dernière valeur connu si le code n’est pas reconnu.
Donc je peux avoir Alarme désarmé … alors que le DescriptionEvent dit que l’alarme est armé.

J’ai déclenché une intrusion mais reste à enclenché si on désactive l’alarme avant que supprimé l’intrusion (comme refermé la porte de l’intrusion).
Est ce qu’il serait mieux de mettre aussi le code « OP » pour réinitialiser la variable IntrusionAlarm.
Est ce que c’est lié au scénario ResetAjaxStatut qui n’est démarré ou ça doit se mettre à jour ailleurs. Ce scénario est prévu qu’en manuel peut-être?

Si je déclenche un panique, aucun log n’est envoyé à Jeedom. Donc je ne peux pas tester. Je me suis mis en temps réel et je ne vois rien.
Avez-vous le même syndrome?

‹ FC › marqué deux fois dans le code:

#[Sécurité][Ajax Protection Intérieure][Code]# == 'FC' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'FH' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'FC' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'KH' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'KJ' OR #[Sécurité][Ajax Protection Intérieure][Code]# == 'KR' 

Vivement que le plugin Ajax refonctionne bien. J’ai testé 2 fenetres ouvertes et j’en referme une, le SIA la description Event à Alarm/trouble condition has been eliminated alors qu’il reste encore une fenêtre ouverte. Mais là, on pourra pas faire grand chose.

Connaissez vous d’autres textes de DescriptionEvent? J’ai fais un Widget info pour traduire les textes en français mais j’en ai pas énormément encore. Savez-vous où je pourrais récupérer ces textes?

HS: si c’est mieux que je fasse un sujet ailleurs pour éviter de polluer le tutoriel, ça me dérange pas.
Je peux fournir d’autres captures au besoin.

Merci top. Je comprends mieux :slight_smile: