Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

Script d'extinction de toutes mes lumières Zwave

Retrouvez ici des sujets concernant le protocole Z-Wave et les modules domotiques de type Z-Wave utilisés avec JEEDOM
Avatar de l’utilisateur
Laurent_R
Timide
Messages : 59
Inscription : 03 janv. 2016, 00:51
Localisation : Orgeval (78)

Script d'extinction de toutes mes lumières Zwave

Message par Laurent_R » 02 sept. 2019, 11:25

Bonjour,

J'avais obtenu et adapté un script qui listait tous les périphériques Zwave et lançait la commande OFF pour chacun d'eux.
Ce script à fonctionné durant quelques temps mais il ne fonctionne maintenant plus.

Deux questions :

1) N'étant pas un champion du PHP, j'aimerais à minima regarder ce qui se passe dans un log mais je n'en trouve pas. Pour info, ce script est écrit dans un bloc code d'un scénario.
Le seul log est celui du scénario qui mentionne une fonction indéfinie :

Code : Tout sélectionner

------------------------------------
[2019-09-02 02:00:03][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2019-09-02 02:00:03][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-09-02 02:00:03][SCENARIO] Exécution d'un bloc code
[2019-09-02 02:00:04][SCENARIO] Call to undefined function getConfiguration()
[2019-09-02 02:00:04][SCENARIO] Fin correcte du scénario
2) Est-ce que quelqu'un serait capable de corriger ce script ?

Voici le script php en question

Code : Tout sélectionner

// Limitation à certains objets (en fait des lieux dans la domotique)
$lieux = array('1er étage','Jardin - Rez de Jardin','Rez de Chaussée');

// recherche des equipements lumière ( basée sur catégorie = 'light' )
$lumieres = eqLogic::ByCategorie('light');

// balayage des équipements : de type lumière
foreach($lumieres as $lumiere)
{
     // ignorer lumière inactives
     if($lumiere->getIsEnable()== false) continue;
     $lieu = $lumiere->getObject()->getName();
   // ignorer les lumières n'appartenant pas à la liste des lieux retenus
     if(in_array($lieu, $lieux) )
     {
                 // récupérer toutes les actions pour cet équipement
        $cmds = cmd::byEqLogicId($lumiere->getId());
                 foreach($cmds as $cmd)
                 {
                // Commande de fermeture ?
                   if($cmd->getConfiguration('value') == 'data[0].Set(0)');
                   {
                   // noter quelle commande va être traitée
                       echo 'préparation cmd ' .  '#' . $lumiere->getHumanName() . '[' . $cmd->getName() . ']#' . PHP_EOL;
                       // éxecuter la commande
                       $cmd->execCmd();
                   }
                 }
     }
}
// log fin de traitement
echo 'fin extinction des lumieres';

Merci par avance pour votre aide

Mips2648
Actif
Messages : 932
Inscription : 08 sept. 2018, 17:09

Re: Script d'extinction de toutes mes lumières Zwave

Message par Mips2648 » 02 sept. 2019, 16:02

Salut,

ton script ne travaille pas sur le zwave mais sur la catégorie "light" (donc tout équipement ayant la catégorie lumière).

Mon avis: si tu ne sais pas le maintenir, reste sur du standard:
- soit un simple scénario dans lequel tu listes tes lumière à éteindre.
- soit regarde du coté du plugin groupe qui va te permettre de regrouper en un équipement une série d'autres équipements (et d'agir sur leur commande)
Développeur et auteur des plugins suivants, (entre autre Arlo, Solaredge, Design Image, Gotify...) et aidant sur plein d'autres!

Si vous voulez contribuer, un don fait toujours plaisir : https://paypal.me/mips2648

Avatar de l’utilisateur
Laurent_R
Timide
Messages : 59
Inscription : 03 janv. 2016, 00:51
Localisation : Orgeval (78)

Re: Script d'extinction de toutes mes lumières Zwave

Message par Laurent_R » 02 sept. 2019, 16:48

Mips2648 a écrit :
02 sept. 2019, 16:02
Salut,

ton script ne travaille pas sur le zwave mais sur la catégorie "light" (donc tout équipement ayant la catégorie lumière).

Mon avis: si tu ne sais pas le maintenir, reste sur du standard:
- soit un simple scénario dans lequel tu listes tes lumière à éteindre.
- soit regarde du coté du plugin groupe qui va te permettre de regrouper en un équipement une série d'autres équipements (et d'agir sur leur commande)
Merci Mips2648,

J'avais fait un raccourci en parlant de zwave mais le script utilise des commandes zwavles pour piloter les modules (exemple : data[0].Set(0))
J'avais crée un virtuel pour piloter les lampes mais le champs texte est difficile à maintenir lar la chaine de caractères est longue.

Je vais créer un fichier php sur la jeedom pour le lancer et afficher les commandes echo car je fonctionne en aveugle et je ne connais pas d'autre option, à moins que tu ais une idée à me donner.

Mips2648
Actif
Messages : 932
Inscription : 08 sept. 2018, 17:09

Re: Script d'extinction de toutes mes lumières Zwave

Message par Mips2648 » 02 sept. 2019, 20:31

oui, deux idées comme dit:
- soit un simple scénario dans lequel tu listes tes lumière à éteindre => une suite de commande action ou tu actionnes la commande off de chaque lampe, l'une à la suite des autres.
- soit regarde du coté du plugin groupe (plutôt qu'un virtuel) qui va te permettre de regrouper en un équipement une série d'autres équipements (et d'agir sur leur commande); c'est exactement ce que tu cherches à faire avec ton script (plus quelques autres trucs dont tu trouveras p-e une utilité)
Développeur et auteur des plugins suivants, (entre autre Arlo, Solaredge, Design Image, Gotify...) et aidant sur plein d'autres!

Si vous voulez contribuer, un don fait toujours plaisir : https://paypal.me/mips2648

Avatar de l’utilisateur
Laurent_R
Timide
Messages : 59
Inscription : 03 janv. 2016, 00:51
Localisation : Orgeval (78)

Re: Script d'extinction de toutes mes lumières Zwave

Message par Laurent_R » 10 sept. 2019, 10:55

Laurent_R a écrit :
02 sept. 2019, 11:25
Bonjour,

J'avais obtenu et adapté un script qui listait tous les périphériques Zwave et lançait la commande OFF pour chacun d'eux.
Ce script à fonctionné durant quelques temps mais il ne fonctionne maintenant plus.

Deux questions :

1) N'étant pas un champion du PHP, j'aimerais à minima regarder ce qui se passe dans un log mais je n'en trouve pas. Pour info, ce script est écrit dans un bloc code d'un scénario.
Le seul log est celui du scénario qui mentionne une fonction indéfinie :

Code : Tout sélectionner

------------------------------------
[2019-09-02 02:00:03][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2019-09-02 02:00:03][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-09-02 02:00:03][SCENARIO] Exécution d'un bloc code
[2019-09-02 02:00:04][SCENARIO] Call to undefined function getConfiguration()
[2019-09-02 02:00:04][SCENARIO] Fin correcte du scénario
2) Est-ce que quelqu'un serait capable de corriger ce script ?

Voici le script php en question

Code : Tout sélectionner

// Limitation à certains objets (en fait des lieux dans la domotique)
$lieux = array('1er étage','Jardin - Rez de Jardin','Rez de Chaussée');

// recherche des equipements lumière ( basée sur catégorie = 'light' )
$lumieres = eqLogic::ByCategorie('light');

// balayage des équipements : de type lumière
foreach($lumieres as $lumiere)
{
     // ignorer lumière inactives
     if($lumiere->getIsEnable()== false) continue;
     $lieu = $lumiere->getObject()->getName();
   // ignorer les lumières n'appartenant pas à la liste des lieux retenus
     if(in_array($lieu, $lieux) )
     {
                 // récupérer toutes les actions pour cet équipement
        $cmds = cmd::byEqLogicId($lumiere->getId());
                 foreach($cmds as $cmd)
                 {
                // Commande de fermeture ?
                   if($cmd->getConfiguration('value') == 'data[0].Set(0)');
                   {
                   // noter quelle commande va être traitée
                       echo 'préparation cmd ' .  '#' . $lumiere->getHumanName() . '[' . $cmd->getName() . ']#' . PHP_EOL;
                       // éxecuter la commande
                       $cmd->execCmd();
                   }
                 }
     }
}
// log fin de traitement
echo 'fin extinction des lumieres';

Merci par avance pour votre aide
J'ai trouvé que qui ne fonctionnait plus dans mon bloc code PHP
Tout d'abord, j'ai trouvé la commande qui me permet de debugger une commande en voyant son résultat dans le log du scénarion (ce n'était pas évident pour moi) ==> $scenario->setLog( inscrire la commande ici )
Ca m'a permis de voir que getConfiguration('value') avait probablement chang dans sa valeur de retour car j'attendais 'data[0].Set(0)' alors que la valeur correspondant était devenue 'type=setvalue&value=0'

J'ai donc pu corriger mon script avec cette nouvelle valeur atede et tout refoncionne. Pas besoin de plugin dédié ni besoin de mettre à jour un virtuel à chaque evolution de mes lumières.

J'espère que ce code pourra servir à d'autre.

Voici la version qui fonctonne :

Code : Tout sélectionner

// Limitation à certains objets (en fait des lieux dans la domotique)
$lieux = array('1er étage','Jardin - Rez de Jardin','Rez de Chaussée');

// recherche des equipements lumière ( basée sur catégorie = 'light' )
$lumieres = eqLogic::ByCategorie('light');

// balayage des équipements : de type lumière
foreach($lumieres as $lumiere)
{
     // ignorer lumière inactives
     if($lumiere->getIsEnable()== false) continue;
     $lieu = $lumiere->getObject()->getName();
   // ignorer les lumières n'appartenant pas à la liste des lieux retenus
     if(in_array($lieu, $lieux) )
     {
                 // récupérer toutes les actions pour cet équipement
                 $cmds = cmd::byEqLogicId($lumiere->getId());
                 foreach($cmds as $cmd)
                 {
                     // Commande de fermeture ?
                     // Ancienne version de la valeur : if($cmd->getConfiguration('value') == 'data[0].Set(0)')
                     if($cmd->getConfiguration('value') == 'type=setvalue&value=0')
                     {
                         // éxecuter la commande
                         $cmd->execCmd();
                     }
                 }
     }
}

Répondre

Revenir vers « [Plugin Officiel] Z-Wave »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité