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 :

virtuel_ajax_part1

  • 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

virtuel_ajax_part2

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 :

layout_virtuel_ajax

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

11 « 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!

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 ?