Récupération de l'état de votre alarme Somfy

Discussion et échanges de scripts pour la box eedomus

Re: Récupération de l'état de votre alarme Somfy

Messagepar bubu » 05 Mars 2016 15:08

et pour la mettre sur ON, OFF,
creer un actionneur, et dans valeur mettre

POST

url:
http://"ipeedomus"/script/?exec=alarme_somfybeta.php&ip_alarme="ipalarme&password=xxxx&action=alarm_off
bubu
 
Messages : 134
Inscription : 05 Sep 2014

Re: Récupération de l'état de votre alarme Somfy

Messagepar Ludovic M » 06 Mars 2016 08:56

pour defaut2 c'est le capteur contact ouverture porte ou fenetre
pour les 1 et 3 je sais pas encore
il reste radio et contact boitier je pense mais pas encore eu le temps d'identifier
sinon j'ai le probleme aussi d'erreur impossible de parser le xml
Ludovic M
 
Messages : 9
Inscription : 01 Mars 2016

Re: Récupération de l'état de votre alarme Somfy

Messagepar bubu » 06 Mars 2016 09:13

defaut4= etat alarme
gsm=etat GSM
default0=etat piles
default2=intrusion
default1=etat des communications
zone0=zone A, ...


Concernant le probleme pour parser le xml:
est ce que quand tu "testes" le chemin XPATH cela fonctionne ou pas?
Mon probleme à l'époque venait d'un bug de la eedomus résolu par l'équipe eedomus mais le test marchait bien.

Pour info, il ne FAUT PAS cocher la case "convertir JSON en XML"

cdlt
bubu
 
Messages : 134
Inscription : 05 Sep 2014

Re: Récupération de l'état de votre alarme Somfy

Messagepar Ludovic M » 06 Mars 2016 10:04

Bonjour BUBU,
merci pour ta réponse.
du coup je pense que le defaut 3 correspond au capteur boitier?
quand j'ai testé le xpath cela marchait mais suite à ton post j'ai re-testé et il ne marche plus .....
je n'ai pas coché la case de conversion du json en xml.
bizarre car parfois cela marche, c'est aléatoire on dirait
pour la durée de connexion sur le portail alarme j'ai mis 99
je rafraîchit mon capteur toute les 2mn
Ludovic M
 
Messages : 9
Inscription : 01 Mars 2016

Re: Récupération de l'état de votre alarme Somfy

Messagepar bubu » 06 Mars 2016 10:31

peut etre que tout marche quand tu viens de te logger sur le site de ton alarme somfy... (ca reste connecté quelques minutes)

Si c'est le cas c'est que tu as un probleme de login sur le php
bubu
 
Messages : 134
Inscription : 05 Sep 2014

Re: Récupération de l'état de votre alarme Somfy

Messagepar stefanski » 09 Mars 2016 23:33

Bonjour,

Voici une version améliorée du script d'origine. Il marche avec les nouvelles alarmes Protexiom (celles qui ont une application mobile).

Comme indiqué dans un précédent post il y a quelques semaines, ça permet entre autres de :
- Récupérer le statut d'activation de chaque zone et l'afficher dans l'actionneur
- Armer tout ou seulement une seule zone
- Il gère la reprise d'erreur quand quelqu'un est déjà connecté pendant la récupération de statut
- On peut récupérer l'état de tous les périphériques Somfy, pratique pour intégrer les détecteurs d'ouvertures dans eedomus, même si malheureusement ça n'est pas du temps réel puisque les requêtes ne sont faisables que toutes les minutes au minimum.

Etant donné que beaucoup d'informations sont récupérées, il est possible de les afficher un peu comme on le souhaite. Voici un cas simple pour interpréter les données.

Lorsqu'un utilisateur est déjà connecté sur l'interface Web de l'alarme Somfy, le script ne met pas à jour son statut pendant 15 minutes, mais force la déconnexion de l'utilisateur au bout de 15 minutes. Cela permet de laisser l'utilisateur paramétrer l'alarme ou y accéder avec l'application mobile pendant 15 minutes maximum. Ce temps est paramétrable dans le fichier en changeant cette valeur :
$GLOBALS['force_login_after_minutes'] = 15;
A noter qu'une action du type Armement ou Désarmement de l'alarme force la déconnexion de l'utilisateur sans attendre les 15 minutes.

En premier lieu, éditer le script pour paramétrer les codes de la carte et importer le script dans la box. Ensuite, procéder à la création de différents éléments.
Nommer le script somfy-alarme.php et l'enregistrer avec un encodage ANSI en faisant bien attention à ne pas laisser de ligne vide au début et à la fin du fichier :
Code : Tout sélectionner
<?
$GLOBALS['ip_alarme'] = getArg('ip_alarme');
$GLOBALS['password'] = getArg('password');
$GLOBALS['force_refresh'] = getArg('force_refresh', false, false);
$GLOBALS['force_login_after_minutes'] = 15;
$action = getArg('action');

$GLOBALS['code'] = array(
   'A1' => '', 'A2' => '', 'A3' => '', 'A4' => '', 'A5' => '',
   'B1' => '', 'B2' => '', 'B3' => '', 'B4' => '', 'B5' => '',
   'C1' => '', 'C2' => '', 'C3' => '', 'C4' => '', 'C5' => '',
   'D1' => '', 'D2' => '', 'D3' => '', 'D4' => '', 'D5' => '',
   'E1' => '', 'E2' => '', 'E3' => '', 'E4' => '', 'E5' => '',
   'F1' => '', 'F2' => '', 'F3' => '', 'F4' => '', 'F5' => ''
);

function sdk_somfy_login($force_login = false)
{
  $http_result = httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/login.htm");
  if (strpos($http_result, "Session déjà ouverte") > 0)
  {
      if ($force_login)
      {
         httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/error.htm", "POST", "btn_ok=OK", NULL, NULL, true);
         $http_result = httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/login.htm");
      }
     else
     {
        return false;
     }
  }

  $login_code = $GLOBALS['code'][substr($http_result, strpos($http_result, "Code d'authentification") + 27, 2)];
  httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/login.htm", 'POST', "login=u&password=" . $GLOBALS['password'] . "&key={$login_code}&btn_login=Connexion", NULL, NULL, true);
  return true;
}

function sdk_somfy_logout() {
  httpQuery("http://" . $GLOBALS['ip_alarme'] . "/logout.htm", "GET", NULL, NULL, NULL, true);
}

function sdk_somfy_get_status()
{
  $status = httpQuery("http://" . $GLOBALS['ip_alarme'] . "/status.xml", "GET", NULL, NULL, NULL, true);
  $status = str_replace("é", "é", $status);
  $statutZones = 0;
 
  if (strpos($status, "<zone0>on</zone0>") !== false)
  {
     $statutZones += 1;
  }
  if (strpos($status, "<zone1>on</zone1>") !== false)
  {
     $statutZones += 2;
  }
  if (strpos($status, "<zone2>on</zone2>") !== false)
  {
     $statutZones += 4;
  }
 
  $statutDefauts = 0;
  if (strpos($status, "<defaut0>nok</defaut0>") !== false) // Piles
  {
     $statutDefauts += 1;
  }
  if (strpos($status, "<defaut1>nok</defaut1>") !== false) // Communication
  {
     $statutDefauts += 2;
  }
  if (strpos($status, "<defaut2>nok</defaut2>") !== false) // Portes
  {
     $statutDefauts += 4;
  }
  if (strpos($status, "<defaut3>nok_int</defaut3>") !== false) // Intrusion
  {
     $statutDefauts += 8;
  }
  if (strpos($status, "<defaut3>nok_dom/defaut3>") !== false) // Domestic Default Detection
  {
     $statutDefauts += 8;
  }
  if (strpos($status, "<defaut4>nok</defaut4>") !== false) // Boitiers
  {
     $statutDefauts += 16;
  }
   
  $xml_items = sdk_somfy_get_items();
 
  if ($xml_items == null) // items retrieval has failed, we send back the previous successful status
  {
     saveVariable('last_alarm_access_try', time());
     $status = loadVariable('last_status');
  }
  else
  {
    $status = str_replace("</response>", "<statutzones>" . $statutZones . "</statutzones><statutdefauts>" . $statutDefauts . "</statutdefauts><maj>" . date("c", time()) . "</maj>" . $xml_items . "</response>", $status);
 
    saveVariable('last_alarm_access', time());
    saveVariable('last_alarm_access_try', time());
    saveVariable('last_status', $status);    
  }
 
  return $status;   
}

function sdk_somfy_get_items()
{
   $http_result = httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/u_listelmt.htm", 'GET', NULL, NULL, NULL, true);
   $array_elt_code = sdk_somfy_get_item_array($http_result, "var elt_code");
   if ($array_elt_code == null)
   {
      return null;
   }
   $array_item_label = sdk_somfy_get_item_array(str_replace("Tél", "Tél", $http_result), "var item_label");
   $array_item_pause = sdk_somfy_get_item_array($http_result, "var item_pause");
   $array_elt_pile = sdk_somfy_get_item_array($http_result, "var elt_pile");
   $array_elt_maison = sdk_somfy_get_item_array($http_result, "var elt_maison");
   $array_elt_onde = sdk_somfy_get_item_array($http_result, "var elt_onde");
   $array_elt_porte = sdk_somfy_get_item_array($http_result, "var elt_porte");
   $array_elt_zone = sdk_somfy_get_item_array($http_result, "var elt_zone");
   
   $i = 0;
   $xml_items = "<items>";
   foreach ($array_elt_code as $elt_code)
   {
      $xml_items = $xml_items . "<item code = \"" . $elt_code . "\">";
      $xml_items = $xml_items . "<label>" . $array_item_label[$i] . "</label>";
      $xml_items = $xml_items . "<pause>" . $array_item_pause[$i] . "</pause>";
      $xml_items = $xml_items . "<pile>" . $array_elt_pile[$i] . "</pile>";
      $xml_items = $xml_items . "<maison>" . $array_elt_maison[$i] . "</maison>";
      $xml_items = $xml_items . "<onde>" . $array_elt_onde[$i] . "</onde>";
      $xml_items = $xml_items . "<porte>" . $array_elt_porte[$i] . "</porte>";
      $xml_items = $xml_items . "<zone>" . $array_elt_zone[$i] . "</zone>";      
      $xml_items = $xml_items . "</item>";
      $i++;
   }
   if ($i < 2)
   {
      return null;
   }
   $xml_items = $xml_items . "</items>";
   return $xml_items;
}

function sdk_somfy_get_item_array($str_to_search, $var_to_search, $start_char = "[", $stop_char = "]")
{
  $pos_var = strpos($str_to_search, $var_to_search);
  if ($pos_var === false) // string has not been found, we return NULL
  {
     return null;
  }
  $pos_var_start = strpos($str_to_search, $start_char, $pos_var);
  $pos_var_end = strpos($str_to_search, $stop_char, $pos_var);

  $var_value = substr($str_to_search, $pos_var_start + 1, $pos_var_end - $pos_var_start - 1);
  $var_value = str_replace("\"", "", $var_value);
  $var_value = str_replace(" ", "", $var_value);
  $var_array = explode(",", $var_value);
  return $var_array;   
}

switch($action) {
  case 'status':
    $refresh_status = 0;
   if (time() > loadVariable('last_alarm_access_try') + 60) // every 60 seconds
   {
      $refresh_status++;
   }
   if ($GLOBALS['force_refresh'])
   {
      $refresh_status++;
   }
   if ($refresh_status > 0)
   {      
      $login_success = sdk_somfy_login($GLOBALS['force_refresh']);
       if ($login_success == false)
      {
         if (time() > loadVariable('last_alarm_access') + 60 * $GLOBALS['force_login_after_minutes'])
         {
            $login_success = sdk_somfy_login(true);
         }
      }
      if ($login_success)
      {
           $status = sdk_somfy_get_status();      
         sdk_somfy_logout();
      }
      else
      {
         saveVariable('last_alarm_access_try', time());
         $status = loadVariable('last_status');
      }
    }
   else
   {
      $status = loadVariable('last_status');
   }
    sdk_header('text/xml');
    echo $status;
    break;
  case 'alarm_off':
    $login_success = sdk_somfy_login(true);
   if ($login_success)
   {
        httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/u_pilotage.htm", 'POST', "hidden=hidden&btn_zone_off_ABC=Arr%C3%AAt+A+B+C", NULL, NULL, true);
       $status = sdk_somfy_get_status();   
        sdk_somfy_logout();
   }
   else
   {
      $status = loadVariable('last_status');
   }
    sdk_header('text/xml');
    echo $status;
    break;
  case 'alarm_on':
    $login_success = sdk_somfy_login(true);
   if ($login_success)
   {
        httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/u_pilotage.htm", 'POST', "hidden=hidden&btn_zone_on_ABC=Marche+A+B+C", NULL, NULL, true);
       $status = sdk_somfy_get_status();   
        sdk_somfy_logout();
   }
   else
   {
      $status = loadVariable('last_status');
   }
   sdk_header('text/xml');
    echo $status;
    break;
  case 'alarm_on_zone_a':
    $login_success = sdk_somfy_login(true);
   if ($login_success)
   {
        httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/u_pilotage.htm", 'POST', "hidden=hidden&btn_zone_on_A=Marche+A", NULL, NULL, true);
       $status = sdk_somfy_get_status();   
        sdk_somfy_logout();
   }
   else
   {
      $status = loadVariable('last_status');
   }
   sdk_header('text/xml');
    echo $status;
    break;
  case 'alarm_on_zone_b':
    $login_success = sdk_somfy_login(true);
   if ($login_success)
   {
        httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/u_pilotage.htm", 'POST', "hidden=hidden&btn_zone_on_B=Marche+B", NULL, NULL, true);
       $status = sdk_somfy_get_status();   
        sdk_somfy_logout();
   }
   else
   {
      $status = loadVariable('last_status');
   }
   sdk_header('text/xml');
    echo $status;
    break;
  case 'alarm_on_zone_c':
    $login_success = sdk_somfy_login(true);
   if ($login_success)
   {
        httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/u_pilotage.htm", 'POST', "hidden=hidden&btn_zone_on_C=Marche+C", NULL, NULL, true);
       $status = sdk_somfy_get_status();   
        sdk_somfy_logout();
   }
   else
   {
      $status = loadVariable('last_status');
   }
   sdk_header('text/xml');
    echo $status;
    break;
  case 'reset_defauts_alarmes':
    $login_success = sdk_somfy_login(true);
   if ($login_success)
   {
        httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/u_listelmt.htm", 'POST', "btn_del_alm=Alarmes", NULL, NULL, true);
       $status = sdk_somfy_get_status();   
        sdk_somfy_logout();
   }
   else
   {
      $status = loadVariable('last_status');
   }
   sdk_header('text/xml');
    echo $status;
    break;
   case 'reset_defauts_piles':
    $login_success = sdk_somfy_login(true);
   if ($login_success)
   {
        httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/u_listelmt.htm", 'POST', "btn_del_pil=Piles", NULL, NULL, true);
       $status = sdk_somfy_get_status();   
        sdk_somfy_logout();
   }
   else
   {
      $status = loadVariable('last_status');
   }
   sdk_header('text/xml');
    echo $status;
    break;
   case 'reset_defauts_comm':
    $login_success = sdk_somfy_login(true);
   if ($login_success)
   {
        httpQuery("http://" . $GLOBALS['ip_alarme'] . "/fr/u_listelmt.htm", 'POST', "btn_del_lia=Liaisons", NULL, NULL, true);
       $status = sdk_somfy_get_status();   
        sdk_somfy_logout();
   }
   else
   {
      $status = loadVariable('last_status');
   }
   sdk_header('text/xml');
    echo $status;
    break;
  break;
}
?>


Création d'un actionneur HTTP pour l'armement de alarme
Il permettra d'activer une ou plusieurs zones et de récupérer l'état.
Appeler l'actionneur "Etat" ou "Armement".

Pour simplifier la configuration, il est conseillé d'utiliser les variables :
  • [VAR1] : IP de l'alarme Somfy
  • [VAR2] : Code d'authentification de l'utilisateur

IMPORTANT, il faut que ce soit un code d'authentification d'un utilisateur, pas d'un installateur, car les pages ne sont pas les mêmes dans l'interface Somfy pour un installateur et utilisateur.

Configurer la requête de mise à jour dans les paramètres expert ainsi :

Créer les valeurs suivantes, avec à chaque fois l'URL "http://localhost/script/" et le type "GET":
  • Valeur : 0
    • Description : Off
    • Visible : Coché
    • Paramètres : ?exec=somfy-alarme.php&ip_alarme=[VAR1]&password=[VAR2]&action=alarm_off
  • Valeur : 1
    • Description : On - Zone A
    • Visible : Coché
    • Paramètres : ?exec=somfy-alarme.php&ip_alarme=[VAR1]&password=[VAR2]&action=alarm_on_zone_a
  • Valeur : 2
    • Description : On - Zone B
    • Visible : Coché
    • Paramètres : ?exec=somfy-alarme.php&ip_alarme=[VAR1]&password=[VAR2]&action=alarm_on_zone_b
  • Valeur : 3
    • Description : On - Zones A+B
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 4
    • Description : On - Zone C
    • Visible : Coché
    • Paramètres : ?exec=somfy-alarme.php&ip_alarme=[VAR1]&password=[VAR2]&action=alarm_on_zone_c
  • Valeur : 5
    • Description : On - Zones A+C
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 6
    • Description : On - Zones B+C
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 7
    • Description : On
    • Visible : Coché
    • Paramètres : ?exec=somfy-alarme.php&ip_alarme=[VAR1]&password=[VAR2]&action=alarm_on

Création d'un actionneur HTTP pour gérer les défauts de l'alarme
Il permettra de récupérer l'état des défauts de l'alarme et de réinitialiser la valeur en cas de déclenchement. Cela permet d'avoir un seul capteur qui remonte tous les défauts d'un coup. Si vous préférez remonter chaque défaut individuellement, voir après pour les explications succintes.
Appeler l'actionneur "Défauts Alarme".

Pour plus de simplicité, il est possible de lier ce capteur à celui créé précédemment, afin de récupérer automatiquement les valeurs [VAR1] et [VAR2].

Configurer la requête de mise à jour dans les paramètres expert ainsi :

Créer les valeurs suivantes, avec à chaque fois l'URL "http://localhost/script/" et le type "GET":
  • Valeur : 0
    • Description : Aucun
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 1
    • Description : Piles
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 2
    • Description : Communication
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 3
    • Description : Piles & Comm.
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 4
    • Description : Portes
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 5
    • Description : Piles & Portes
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 6
    • Description : Comm. & Portes
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 7
    • Description : Piles & Comm. & Portes
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 8
    • Description : Intrusion
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 9
    • Description : Piles & Intrusion
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 10
    • Description : Comm. & Intrusion
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 11
    • Description : Piles & Comm. & Intrusion
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 12
    • Description : Portes & Intrusion
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 13
    • Description : Piles & Portes & Intrusion
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 14
    • Description : Comm. & Portes & Intrusion
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 15
    • Description : Piles & Comm. & Portes & Intrusion
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 16
    • Description : Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 17
    • Description : Piles & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 18
    • Description : Comm. & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 19
    • Description : Piles & Comm. & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 20
    • Description : Portes & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 21
    • Description : Piles & Portes & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 22
    • Description : Comm. & Portes & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 23
    • Description : Piles & Comm. & Portes & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 24
    • Description : Intrusion & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 25
    • Description : Piles & Intrusion & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 26
    • Description : Comm. & Intrusion & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 27
    • Description : Piles & Comm. & Intrusion & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur :
    • Description :
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 28
    • Description : Portes & Intrusion & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 29
    • Description : Piles & Portes & Intrusion & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 30
    • Description : Comm. & Portes & Intrusion & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 31
    • Description : Piles & Comm. & Portes & Intrusion & Boitiers
    • Visible : Décoché
    • Paramètres : (laisser le champ vide)
  • Valeur : 101
    • Description : Reset Défaut Alarme
    • Visible : Coché
    • Paramètres : ?exec=somfy-alarme.php&ip_alarme=[VAR1]&password=[VAR2]&action=reset_defauts_alarmes
  • Valeur : 102
    • Description : Reset Défaut Piles
    • Visible : Coché
    • Paramètres : ?exec=somfy-alarme.php&ip_alarme=[VAR1]&password=[VAR2]&action=reset_defauts_piles
  • Valeur : 103
    • Description : Reset Défaut Comm.
    • Visible : Coché
    • Paramètres : ?exec=somfy-alarme.php&ip_alarme=[VAR1]&password=[VAR2]&action=reset_defauts_comm

Création d'un capteur HTTP indépendant pour chaque défaut
Si vous souhaitez disposer d'un capteur HTTP par type de défaut (Piles, Boitiers, Intrusion, Communication, Portes), il suffit de créer un capteur HTTP qui appelle l'URL http://localhost/script/?exec=somfy-ala ... ip_alarme=[VAR1]&password=[VAR2]&action=status et qui lit le chemin XPATH suivant en fonction de ce que vous souhaitez récupérer :
  • Chemin XPATH: /response/defaut0
    • Défaut : Piles
    • Valeur "ok" : Aucun défaut piles
    • Valeur "nok" : Défaut piles présent
  • Chemin XPATH: /response/defaut1
    • Défaut : Communication
    • Valeur "ok" : Aucun défaut communication
    • Valeur "nok" : Défaut communication présent
  • Chemin XPATH: /response/defaut2
    • Défaut : Portes
    • Valeur "ok" : Aucun défaut portes
    • Valeur "nok" : Défaut portes présent
  • Chemin XPATH: /response/defaut3
    • Défaut : Intrusion
    • Valeur "ok" : Aucun défaut intrusion
    • Valeur "nok_int" : Défaut intrusion présent
    • Valeur "nok_dom" : Défaut intrusion présent
  • Chemin XPATH: /response/defaut4
    • Défaut : Boitiers
    • Valeur "ok" : Aucun défaut boitiers
    • Valeur "nok" : Défaut boitiers présent


Récupération de l'état des détecteurs Somfy
Le XML généré par le script récupère également l'état des détecteurs Somfy. Pour les afficher dans l'interface, il suffit de créer un capteur HTTP par détecteur, de le lier au premier actionneur créé pour récupérer les variables et de requêter :
Les valeurs retournées sont "itemdoornok" si la porte/fenêtre est ouverte et "itemdoorok" si la porte/fenêtre est fermée.
Cette récupération d'information n'est utile que pour les portes et fenêtres mais pas pour les détecteurs de mouvement car du fait du polling 1 fois par minute, ça ne fait pas du temps réel.

Grosso modo, ça donne ça en affichage normal :
Affichage.JPG
Affichage.JPG (21.73 Kio) Consulté 23270 fois


Les actions possibles sont :
Actions.JPG
Actions.JPG (50.46 Kio) Consulté 23270 fois


Et la récupération du capteur d'ouverture d'une porte :
Porte.JPG
Porte.JPG (14.79 Kio) Consulté 23270 fois


Voilà, ça devrait permettre à certains de s'amuser.
Dernière édition par stefanski le 29 Fév 2020 15:58, édité 1 fois.
StefanSki
eedomus+
stefanski
 
Messages : 31
Inscription : 04 Jan 2016

Re: Récupération de l'état de votre alarme Somfy

Messagepar micka83 » 10 Mars 2016 06:59

Merci pour ton script et les explications qui sont très claires. Je test ça ce week-end :D
Eedomus +, WES, Hue, station Netatmo
micka83
 
Messages : 64
Inscription : 31 Déc 2015

Re: Récupération de l'état de votre alarme Somfy

Messagepar Ludovic M » 15 Mars 2016 08:32

merci, tout simplement parfait ! tout fonctionne nickel.
Ludovic M
 
Messages : 9
Inscription : 01 Mars 2016

Re: Récupération de l'état de votre alarme Somfy

Messagepar bubu » 15 Mars 2016 09:12

Super tuto. Merci pour ce nouveau script! J'installe ca bientot.

Beau boulot!

Ps: quand je pense que la tahoma n'arrive meme pas a avoir de retour d'info de l'alarme somfy!! C'est vraiment pas le meme niveau chez eedomus... et sa communauté
bubu
 
Messages : 134
Inscription : 05 Sep 2014

Re: Récupération de l'état de votre alarme Somfy

Messagepar micka83 » 15 Mars 2016 16:08

Je l'utilise depuis 4 jours et sa fonctionne super bien, il n'y a aucune erreur. C'est un script super abouti et bravo pour le boulot. Et encore merci pour le partage.
Eedomus +, WES, Hue, station Netatmo
micka83
 
Messages : 64
Inscription : 31 Déc 2015

Re: Récupération de l'état de votre alarme Somfy

Messagepar stefanski » 15 Mars 2016 16:30

J'ai mis en place un mécanisme de détection d'erreur car des fois, l'interface Web de l'alarme n'affiche pas l'état des périphériques donc quand ça se produit (en général une cinquantaine d'erreur par jour avec un polling toutes les minutes) le script renvoie l'état du précédent polling fonctionnel.
StefanSki
eedomus+
stefanski
 
Messages : 31
Inscription : 04 Jan 2016

Re: Récupération de l'état de votre alarme Somfy

Messagepar Hibou » 03 Juil 2016 15:17

Bonjour,

Ce script a l'air vraiment très complet !
Je dois m'équiper d'une alarme pour ma maison, et j'ai un Eedomus.

J'hésite entre une Somfy et une MyFox.

Somfy : semble plus fiable et plus efficace ; mais pas d'api et pilotage par eedomus plus compliqué.
MyFox : très simple de mise en place et api complète ; semble moins sécurisante.

Je pensais m'orienter vers la MyFox, mais bien que plus cher et plus compliqué à mettre en place, avec ce script je pense plus à une Smofy. Mais j'ai trois questions :

- le pilotage par Eedomus grâce à ce script est-il perenne dans le temps ou dépend-t-il beaucoup de ce que Somfy décidera dans ses mises à jour et évolutions ?
- ce script impose-t-il à l'usage des désagréments notables ? Qui a un retour d'expérience assez long ?
- Quelqu'un a-t-il un avis favorable pour MyFox ?

Merci !
Hibou
 
Messages : 18
Inscription : 19 Juin 2015

Re: Récupération de l'état de votre alarme Somfy

Messagepar bubu » 03 Juil 2016 16:06

Somfy ne fait aucune mise jour de cette page http interne à l'alarme.
Le script est très fiable a l'usage. Aucun soucis.
Concernant l'alarme myfox, je l'ai installé chez un proche. C'est très simple et efficace. Mais il n'existe pas d'api encore à la connaissance pour myfox alarm. La solution étant de passer par ifttt.
Le rapport qualité prix de myfox est très supérieur à somfy et l'offre promet encore d'evokuer avec de nouveaux capteurs.

Pour conclure je dirais que je suis très content de ma solution protexiom somfy couplée à l'eedomus (sachant que j'avais déjà cette alarme avant la eedomus).
neanmoins, si je devais m'equiper aujourd'hui d'une alarme je prendrais une myfox pour son tarif.
bubu
 
Messages : 134
Inscription : 05 Sep 2014

Re: Récupération de l'état de votre alarme Somfy

Messagepar Hibou » 04 Juil 2016 01:46

Merci Bubu de ce retour vraiment intéressant.

Pour l'API MyFox, en effet ils en parlent un peu partout mais il semblerait qu'elle ne soit pas encore disponible. Outre le fait que IFTTT remplisse plus ou moins le même rôle, on peut donc compter dessus à terme. Enfin sauf s'ils font le même coup que Somfy et nous laisse finalement en plan !

Par contre, en comparant un peu mieux les deux solutions, j'ai quelques réserves que tu pourras peut-être lever ou confirmer concernant la MyFox :
- Pas de sirène extérieure pour MyFox (je ne suis pas en appartement).
- Une seule caméra, sans possibilité d'ajouter de simples détecteurs. Seulement des caméras supplémentaires onéreuses. Donc pour en mettre par exemple 3 (et comparer avec les packs Somfy) il faut ajouter 400€ : ça reste moins cher, mais plus tant que ça pour un équipement moins fournis.
- Il faut les caser ces caméras : elles sont belles mais pas du tout discrètes ! Et surtout, il faut les alimenter en filaire non ?
- Pas de solution GSM, à moins d'un bricolage logiciel.
- J'ai un chat ; Somfy propose des capteurs adaptés, mais je n'ai pas trouvé d'info concernant celui de MyFox à ce propos.

J'étais déjà très tenté par la MyFox, surtout après avoir lu ton avis qui est un vrai retour d'expérience sur les deux systèmes. Prix, simplicité et facilité de coupler à la domotique me séduisent. Mais ces points me refroidissent un peu...
Hibou
 
Messages : 18
Inscription : 19 Juin 2015

Re: Récupération de l'état de votre alarme Somfy

Messagepar stefanski » 04 Juil 2016 07:51

Bonjour,

J'avais eu la même réflexion en fin d'année dernière, entre Somfy et MyFox. Mais ce qui m'avait gené c'était justement le manque de sirène extérieure et de capteurs de mouvements, du coup j'avais choisi Somfy et j'ai modifié le script pour l'eedomus pour faire ce que je voulais (voir un des messages dans ce thread pour le script).

Mais en regardant maintenant, ils indiquent sur leur site que ces périphériques vont arriver à l'automne. Ca peut valoir le coup de regarder coté MyFox et de se renseigner pour en apprendre plus sur ces nouveaux périphériques.

J'avais posé une question par mail à leur support, ils répondent vite, tu peux essayer.
StefanSki
eedomus+
stefanski
 
Messages : 31
Inscription : 04 Jan 2016

Re: Récupération de l'état de votre alarme Somfy

Messagepar micka83 » 04 Juil 2016 11:35

Bonjour,

Pour ma pars, j'ai une alarme somfy (que j'avais avant d'avoir l'eedomus) et le script fonctionne à merveille. Pas d'erreur, je remonte l'état de mes capteurs, j'ai pu l’intégrer facilement dans mes scénario. Après je ne connais pas My fox donc je ne peux pas comparer.
Eedomus +, WES, Hue, station Netatmo
micka83
 
Messages : 64
Inscription : 31 Déc 2015

Re: Récupération de l'état de votre alarme Somfy

Messagepar Hibou » 04 Juil 2016 12:44

Merci à tous.
Je pense toujours que MyFox est une solution séduisante par sa simplicité et son design, et bien moins onéreuse...
Mais je pense tout de même partir sur une Somfy : large gamme d'accessoires, un usage couplé à l'eedomus éprouvé et un historique d'expertise. Ça me paraît moins hasardeux que de parier sur le devenir de MyFox.
Hibou
 
Messages : 18
Inscription : 19 Juin 2015

Re: Récupération de l'état de votre alarme Somfy

Messagepar Hibou » 04 Juil 2016 12:47

stefanski a écrit:Bonjour,

J'avais eu la même réflexion en fin d'année dernière, entre Somfy et MyFox. Mais ce qui m'avait gené c'était justement le manque de sirène extérieure et de capteurs de mouvements, du coup j'avais choisi Somfy et j'ai modifié le script pour l'eedomus pour faire ce que je voulais (voir un des messages dans ce thread pour le script).

Mais en regardant maintenant, ils indiquent sur leur site que ces périphériques vont arriver à l'automne. Ca peut valoir le coup de regarder coté MyFox et de se renseigner pour en apprendre plus sur ces nouveaux périphériques.

J'avais posé une question par mail à leur support, ils répondent vite, tu peux essayer.


Ça a l'air d'être une tuerie ton script, bravo ! Je commence juste à mettre les doigts dans la domotique. Pour le moment rien que d'avoir soudé un module à une télécommande de volet roulant j'ai l'impression d'être un dieu ! Alors le jour où je serai capable de faire un script comme le tien je vais m'écrire un poème ^^
Hibou
 
Messages : 18
Inscription : 19 Juin 2015

Re: Récupération de l'état de votre alarme Somfy

Messagepar stefanski » 04 Juil 2016 13:32

Je n'ai pas tout fait, j'ai repris le script posté à l'origine dans ce thread, je l'ai juste amélioré pour prendre en compte des cas d'usage que je souhaitais.
StefanSki
eedomus+
stefanski
 
Messages : 31
Inscription : 04 Jan 2016

Re: Récupération de l'état de votre alarme Somfy

Messagepar Hibou » 04 Juil 2016 15:30

stefanski a écrit:Je n'ai pas tout fait, j'ai repris le script posté à l'origine dans ce thread, je l'ai juste amélioré pour prendre en compte des cas d'usage que je souhaitais.


A ton avis, dans le but de l'intégrer à la domotique, ça présente un intérêt d'opter pour la gamme Protexial plutôt que Protexiom ? Le script est-il par ailleurs à ta connaissance compatible avec les deux ?
Hibou
 
Messages : 18
Inscription : 19 Juin 2015

PrécédentSuivant

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Google [Bot] et 11 invité(s)