[Store] Script - Etat des ouvertures pour notification

Discussion et échanges de scripts pour la box eedomus

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar zebess » 04 Juin 2020 16:01

Bonjour,
Je voudrais savoir quel valeur je dois mettre devant critère (dans une règle) pour avoir une notification de type push/mail/sms si ma porte reste ouverte plus de 7H (par exemple).
Si périphérique "ouverture porte" "est égale" 0 ou 1 ou autre chose?
Merci
zebess
 
Messages : 94
Inscription : 17 Déc 2015

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar soundfab » 28 Sep 2021 22:58

@Influman,

Bonjour J'ai bien procédé comme expliqué, J'ai créé un état avec 2 valeurs : 0 et 100 puis j'ai mis le code API de cet état dans l'URL du plugin.
Quand au moins une fenêtre est ouverte , mon état passe bien en ouvert , mais toute les minutes il repasse en fermé pendant environ 2 secondes et revient ensuite a ouvert .ainsi de suite ...

Il me manque quelque chose ?
Merci d'avance
soundfab
 
Messages : 127
Inscription : 27 Nov 2017

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar opa95 » 28 Sep 2021 23:21

Bonjour Soundfab ou peut-être bonsoir
C'est parce qu'il y a une erreur de conception dans ouvertures.php.
Je l'ai modifié.
Il y a une première instruction
setValue($resultPeriphId, 0);
puis une modification éventuelle dans l'instruction
if (($nbouvert > 0) && $resultPeriphId)
{
setValue($resultPeriphId, 100);
}

Mais l'instruction est effectuée à chaque fois, puis éventuellement corrigée.
Il faut qu'il n'y ait qu'un seul setValue dans le programme.
On peut donc supprimer le premier et remplacer le bloc if par
if (($nbouvert > 0) && $resultPeriphId)
{
$alarme=100;
}
else $alarme=0;
setValue($resultPeriphId, $alarme);

Ainsi il n'y a qu'un appel à setValue et il n'y a plus de problème
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar soundfab » 30 Sep 2021 12:45

Merci pour ton aide ! ça fonctionne parfaitement bien .
Cordialement , Fabien.



opa95 a écrit:Bonjour Soundfab ou peut-être bonsoir
C'est parce qu'il y a une erreur de conception dans ouvertures.php.
Je l'ai modifié.
Il y a une première instruction
setValue($resultPeriphId, 0);
puis une modification éventuelle dans l'instruction
if (($nbouvert > 0) && $resultPeriphId)
{
setValue($resultPeriphId, 100);
}

Mais l'instruction est effectuée à chaque fois, puis éventuellement corrigée.
Il faut qu'il n'y ait qu'un seul setValue dans le programme.
On peut donc supprimer le premier et remplacer le bloc if par
if (($nbouvert > 0) && $resultPeriphId)
{
$alarme=100;
}
else $alarme=0;
setValue($resultPeriphId, $alarme);

Ainsi il n'y a qu'un appel à setValue et il n'y a plus de problème
soundfab
 
Messages : 127
Inscription : 27 Nov 2017

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar opa95 » 30 Sep 2021 14:02

Tant mieux si ça marche :D
J'avais testé; en toute rigueur le dernière instruction devrait être
if ($resultPeriphId) {setValue($resultPeriphId, $alarme)};
au lieu de setValue($resultPeriphId, $alarme);
pour éviter une erreur éventuelle si $resultPeriphId n'a pas été défini (mais je n'ai pas testé).
Cordialement
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar Razor » 19 Déc 2021 16:41

Bonjour,
J'utilise depuis pas mal de temps ce script de façon très satisfaisante,mais je cherche a 'utiliser différemment maintenant.
Comment procéder pour 1/ tester que tout est fermé et 2/ utiliser la string créée par ce script pour faire parler mon google home ?

merci
EEDOMUS+ / RFXcom / IPX800 / Objets ZWAVE (75) / ZIGATE + 70 objets Zigbee / Onduleur APC / ZIBASE 1 (de-commissionnée)/ Controleur Zwave ACT Homepro ZCS201 **
Razor
 
Messages : 151
Inscription : 11 Déc 2015

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar opa95 » 19 Déc 2021 16:59

Bonjour Razor
Pour savoir que tout est fermé, il faut mettre dans XPATH
\OUVERTURES\ALARME ou \\ALARME et tester si la valeur est 0
ou
\OUVERTURES\NBOUVERT ou \\NBOUVERT et tester si la valeur est 0
:)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar Razor » 19 Déc 2021 17:35

Merci de ce retour rapide. Je ne suis pas un expert du php mais le script retourne "Valeur Lue vide" ?
EEDOMUS+ / RFXcom / IPX800 / Objets ZWAVE (75) / ZIGATE + 70 objets Zigbee / Onduleur APC / ZIBASE 1 (de-commissionnée)/ Controleur Zwave ACT Homepro ZCS201 **
Razor
 
Messages : 151
Inscription : 11 Déc 2015

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar opa95 » 19 Déc 2021 17:51

Bonsoir Razor
Pour aller plus loin, il faut montrer le résultat.
Tu vas dans le panneau du plugin et tu appuies sur tester.
Dans le nouveau panneau, tu relance tester et du décris ou copie le résultat du XPATH dans la fenêtre pour qu'on puisse aller plus loin
:)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar Razor » 19 Déc 2021 17:58

Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1" ?><OUVERTURES><OUVERTURE_1><TYPE>Fenêtre SdB Salle De Bain</TYPE><ETAT>0</ETAT></OUVERTURE_1>
<OUVERTURE_2><TYPE>Porte Garage Detecteur Sous-Sol</TYPE><ETAT>0</ETAT></OUVERTURE_2>
<OUVERTURE_3><TYPE>Porte D'entrée Entrée</TYPE><ETAT>0</ETAT></OUVERTURE_3>
<OUVERTURE_4><TYPE></TYPE><ETAT>0</ETAT></OUVERTURE_4>
<OUVERTURE_5><TYPE></TYPE><ETAT>0</ETAT></OUVERTURE_5>
<OUVERTURE_6><TYPE>Fenêtre chambre parents Chambre Parent</TYPE><ETAT>0</ETAT></OUVERTURE_6>
<OUVERTURE_7><TYPE>Fenêtre Toilette  Maison</TYPE><ETAT>0</ETAT></OUVERTURE_7>
<MESSAGE>Apres vérification, tout est bien fermé</MESSAGE></OUVERTURES>
Pièces jointes
EEdomus.png
EEdomus.png (61.15 Kio) Consulté 5614 fois
EEDOMUS+ / RFXcom / IPX800 / Objets ZWAVE (75) / ZIGATE + 70 objets Zigbee / Onduleur APC / ZIBASE 1 (de-commissionnée)/ Controleur Zwave ACT Homepro ZCS201 **
Razor
 
Messages : 151
Inscription : 11 Déc 2015

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar opa95 » 19 Déc 2021 18:20

Bonsoir Razor
Tu mets dans le XPATH
Code : Tout sélectionner
sum(//ETAT)

si le résultat est nul, c'est OK
:)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar Eido » 24 Juil 2022 11:40

Hello, j'ai parcouru le topique, sauf si j'ai raté qq chose, je n'ai pas trouvé façon d'avoir le résultat final en état 0 ou 100 pour utiliser dans une règle. Sur l'info d'installation il est mentionné cette option, mais j'ai pas capté.
Quelqu'un?
Chez moi, c'est moi qui contrôle la maison, pas le contraire... et puis y a ma femme qui contrôle... tout... oui chérie j'arrive!...
Eido
 
Messages : 203
Inscription : 16 Mars 2018
Localisation : Var, FRANCE

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar opa95 » 24 Juil 2022 17:16

Bonjour eido
La réponse est dans le post du 28 septembre 2021
https://forum.eedomus.com/viewtopic.php?f=50&t=3421&start=140#p100405.
La version 1.11 du script n'a pas été corrigée, je vais le signaler aux auteurs.
En attendant, tu peux utiliser la version ci-jointe, qui va renvoyer 0 ou 100 à ton widget d'état, sans qu'il y ait de problème de passage à 0 temporaire.
Si tu as des problèmes, dis le moi.
:)
Code : Tout sélectionner
<?php
  $xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>";     
  //***********************************************************************************************************************
  // V1.0 : Script qui fournit l'etat des ouvertures parametrees et le message vocal associe : Influman & Madoma73
  // V1.1 : Version sans appel API à l'utilisation
  // V1.11 : enregistrement du tableau des ouvertures en mémoire (4 avril 2019)
  // V1.12 : correction bug : lignes 49/55 (double setValue), sortie possible //ALARME et //NBCAPTEURS ouverts Opa95
  //*************************************** API eedomus ******************************************************************
  //*************************************** Messages personnels***********************************************************
  $msg_allclosed = "Apres vérification, tout est bien fermé"; //  permet de gérer les traductions dans d'autres langues
  $msg_open = "Je detecte que"." "; //  permet de gérer les traductions dans d'autres langues
  $tabouvertures = array();

  $mode = getArg("mode");
   
  if ($mode == 'list')
  {
    $url = "https://api.eedomus.com/get?api_user=API_USER&api_secret=API_SECRET&action=periph.list";
    $periph_list = sdk_json_decode(utf8_encode(httpQuery($url,'GET')));
   
    foreach($periph_list["body"] as $device)
    {
      if (
         $device['usage_id'] == 10 // Porte
      || $device['usage_id'] == 11 // Fenêtre
      || $device['usage_id'] == 12 // Portail
      )
      {
        $device_list .= $device['periph_id'].",";
        $devices_names .= $device['periph_id']." = ".utf8_decode($device['name'])."<br>";
      }
    }
   
    $device_list = trim($device_list, ",");
   
    echo "Votre liste de contacteurs :"."<br>"."<br>";
    echo "<input id=\"device_list\" type=\"text\" size=\"100\" name=\"device_list\" value=\"$device_list\" onclick=\"this.select();\" >";
    echo "<br>"."<br>";
    echo $devices_names;
   
    die();
  }
     
   // recuperation des ID depuis la requete
   $periphs = getArg("periphIds", $mandatory = true, $default = '');
   $resultPeriphId = getArg("resultPeriphId", $mandatory = false, $default = '');
   $tabPeriphs = explode(",", $periphs);
   $alarme = 0;//Opa95
/* Opa95 eviter le changement d'etat
   //reset de l'indicateur 'portes ouverte'
   if ($resultPeriphId)
   {
      setValue($resultPeriphId, 0);
   }
*/ //Opa95   
   // recuperation du nom des peripheriques
   foreach($tabPeriphs as $periphId)
   {
     //$urlValue =  $urlBase.$periphId;
     $arrValue = getValue($periphId, /*$value_text*/ true);

     $tabouvertures[] = array("NAME" => $arrValue["full_name"], "API" => $periphId, "ETAT" => $arrValue["value"], "ETAT_TXT" => $arrValue["value_text"]);
   }

   //**********************************************************************************************************************
   $xml .= "<OUVERTURES>";
   $idoors = 1;
   $nbouvert = 0;
   $annonce = $msg_allclosed;
   saveVariable("OUVERTURES", $tabouvertures);
   foreach($tabouvertures as $ouvertures) {
      $arrValue = $ouvertures["ETAT"];
      if ($arrValue <> 0) {
         $ouvertures["ETAT"] = 1;
         $nbouvert++;
         if ($nbouvert == 1) {
            $annonce = $msg_open.$ouvertures["NAME"];
         }
         else {
            $annonce = $annonce." "."et"." ".$ouvertures["NAME"];
         }
      }
      $xml .= "<OUVERTURE_".$idoors."><TYPE>".$ouvertures["NAME"]."</TYPE>";
      $xml .= "<ETAT>".$ouvertures["ETAT_TXT"]."</ETAT></OUVERTURE_".$idoors.">\n";
      $idoors++;
   }
   if ($nbouvert == 1) {
      $annonce .= " "."est ouverte.";
   } else if ($nbouvert > 1) {
      $annonce .= " "."sont ouvertes.";
   }
   if (($nbouvert > 0) && $resultPeriphId)
   {
       $alarme = 100;
   }
   if ($resultPeriphId) {// Opa95
       setValue($resultPeriphId, $alarme);
   }
   $xml .= "<MESSAGE>".$annonce."</MESSAGE>";
   $xml .= PHP_EOL."<NBOUVERT>".$nbouvert."</NBOUVERT>".PHP_EOL; //Opa95
   $xml .= "<ALARME>".$alarme."</ALARME>".PHP_EOL; //Opa95
   $xml .= "</OUVERTURES>";
   sdk_header('text/xml');
   echo $xml;
?>
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Script - Etat des ouvertures pour notification

Messagepar Eido » 28 Juil 2022 20:51

Impeccable, ça marche nickel. merci bien
Chez moi, c'est moi qui contrôle la maison, pas le contraire... et puis y a ma femme qui contrôle... tout... oui chérie j'arrive!...
Eido
 
Messages : 203
Inscription : 16 Mars 2018
Localisation : Var, FRANCE

Précédent

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 15 invité(s)