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 !

Intégrer une IPX800v3 sans passer par le plugin

Pour échanger sur les plugins classés en catégorie "Protocoles domotiques"
Répondre
Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Intégrer une IPX800v3 sans passer par le plugin

Message par Seb82 » 21 août 2019, 23:03

Bonjour à tous,

Un peu échaudé par un nouveau problème sur le plugin de l'IPX800v3, je me suis décidé à voir comment l'intégrer (assez simplement) sans passer par ce dernier. Je partage ci-dessous ce que j'ai fait :

- Créer à la racine un objet nommé "IPX800" (Outils > Objets > Ajouter)
- Créer un virtuel nommé "IPX800_virtuel" (Plugins > Programmation > Virtuel > Ajouter) et choisir "Test" comme objet parent
- Dans ce virtuel, créer 4 commandes virtuelles nommées AN1 à AN4 avec comme sous-type "Numérique" => ce sont les entrées analogiques
- Dans ce virtuel, créer 4 commandes virtuelles nommées C1 à C4 avec comme sous-type "Numérique" => ce sont les compteurs
- Dans ce virtuel, créer 8 commandes virtuelles nommées R1 à R8 avec comme sous-type "Binaire" => ce sont l'état des relais
- Dans ce virtuel, créer 8 commandes virtuelles nommées I1 à I8 avec comme sous-type "Binaire" => ce sont les entrées digitales
- Créer un nouveau scénario (Outils > Scénarios > Ajouter)
- Choisir comme mode du scénario "Programmé" puis dans programmation mettre */5 * * * * (exécution toutes les 5 minutes, à vous de voir), et cocher "Multi-lancement"
- Dans l'onglet "Scénario", cliquer sur "Ajouter un bloc" et choisir "Code"
- Ajouter le code suivant en n'oubliant pas de modifer la partie configuration

Code : Tout sélectionner

/* IPX800v3

Ce code permet de mettre à jour un objet virtuel réprésentant l'IPX800 de deux manières :
- Soit par lecture du fichier globalstatus.xml sur l'IPX
- Soit par lancement par le push de l'IPX de ce scénario en transmettant un tag nommé push (permet d'avoir un retour immédiat)

Plus d'informations ici : https://www.jeedom.com/forum/viewtopic.php?f=133&t=47112

*/

/* Configuration */

$IP_IPX800 = "192.168.1.100";	  // Changer par l'IP de l'IPX800
$PORT_IPX800 = "80"; 		  // Port de l'IPX800 si modifié, sinon laisser 80
$IDENTIFIANT = "";			  // Identifiant s'il y a en a un, sinon vide
$MOT_DE_PASSE = "";			  // Mot de passe s'il y a en a un, sinon vide

/* Pour le push, dans la configuration de l'IPX aller dans M2M > Push, mettre l'IP de Jeedom dans Server et dans Path mettre /core/api/jeeApi.php?apikey=CLE_API&type=scenario&id=XX&action=start&tags=push%3De$O$I
 CLE_API est à remplacer par le clé API de Jeedom (roue crantée en haut à droite > Configuration > API > Clef API )
 XX est à remplacer par l'ID de ce scénario
 $O contient l'état des 32 relais (8 de l'IPX800 et les éventuelles extensions)
 $I contient l'état des 32 entrées digitales (8 de l'IPX800 et les éventuelles extensions)
*/

// On récupère les tags du scénario
$tags = $scenario->getTags();
// On extrait l'éventuel tag push
$push = $tags['#push#'];

// S'il n'y a pas de tag "push", on lit le fichier xml de l'IPX800

if (!$push) {
  
  $scenario->setLog("Pas de tag push, lecture du fichier globalstatus.xml sur l'IPX800");

  // Url du fichier globalstatus.xml de l'IPX800
  $Url = "http://".(($IDENTIFIANT == "")?"":($IDENTIFIANT.":".$MOT_DE_PASSE."@")).$IP_IPX800.":".$PORT_IPX800."/globalstatus.xml";
  $scenario->setLog("Url du fichier : ".$Url);

  // Récupération du fichier avec curl
  $InitPage = curl_init();
  curl_setopt($InitPage, CURLOPT_URL, $Url);
  curl_setopt($InitPage, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($InitPage, CURLOPT_USERAGENT, 'Jeedom');
  $resultat = curl_exec ($InitPage);
  //$scenario->setLog($resultat); // Décommenter cette ligne pour vérifier dans le log du scénario le contenu récupéré 
  $response_code = curl_getinfo($InitPage,CURLINFO_RESPONSE_CODE); // Récupération du statut de réponse de la requête http
  curl_close($InitPage);
  
  if ($response_code == 200) { // Vérifie si la récupération s'est bien passée
    
    // Conversion du XML en objet PHP 
    $xml = simplexml_load_string($resultat);
    
    // Extraction de la version pour voir si le fichier est valide
    $version = (string)$xml->version;
    $scenario->setLog("Version : ".$version);
    
	if ($version == "") {
      $scenario->setLog("Fichier globalstatus.xml non valide");
      log::add('ipx800','error',"Fichier globalstatus.xml non valide");
    } else {

      // Extraction des valeurs analogiques depuis XML
      $scenario->setLog("Mise à jour des valeurs analogiques depuis XML");
      cmd::byString("#[IPX800][IPX800_virtuel][AN1]#")->event((string)$xml->analog0);
      cmd::byString("#[IPX800][IPX800_virtuel][AN2]#")->event((string)$xml->analog1);
      cmd::byString("#[IPX800][IPX800_virtuel][AN3]#")->event((string)$xml->analog2);
      cmd::byString("#[IPX800][IPX800_virtuel][AN4]#")->event((string)$xml->analog3);

      // Extraction des compteurs depuis XML
      $scenario->setLog("Mise à jour des compteurs depuis XML");
      cmd::byString("#[IPX800][IPX800_virtuel][C1]#")->event((string)$xml->count0);
      cmd::byString("#[IPX800][IPX800_virtuel][C2]#")->event((string)$xml->count1);
      cmd::byString("#[IPX800][IPX800_virtuel][C3]#")->event((string)$xml->count2);
      cmd::byString("#[IPX800][IPX800_virtuel][C4]#")->event((string)$xml->count3);

      // Extraction des états des relais depuis XML
      $scenario->setLog("Mise à jour de l'état des relais depuis XML");
      cmd::byString("#[IPX800][IPX800_virtuel][R1]#")->event((string)$xml->led0);
      cmd::byString("#[IPX800][IPX800_virtuel][R2]#")->event((string)$xml->led1);
      cmd::byString("#[IPX800][IPX800_virtuel][R3]#")->event((string)$xml->led2);
      cmd::byString("#[IPX800][IPX800_virtuel][R4]#")->event((string)$xml->led3);
      cmd::byString("#[IPX800][IPX800_virtuel][R5]#")->event((string)$xml->led4);
      cmd::byString("#[IPX800][IPX800_virtuel][R6]#")->event((string)$xml->led5);
      cmd::byString("#[IPX800][IPX800_virtuel][R7]#")->event((string)$xml->led6);
      cmd::byString("#[IPX800][IPX800_virtuel][R8]#")->event((string)$xml->led7);

      // Extraction des entrées digitales depuis XML
      $scenario->setLog("Mise à jour des entrées digitales depuis XML");
      cmd::byString("#[IPX800][IPX800_virtuel][I1]#")->event(((string)$xml->btn0=="up")?0:1);
      cmd::byString("#[IPX800][IPX800_virtuel][I2]#")->event(((string)$xml->btn1=="up")?0:1);
      cmd::byString("#[IPX800][IPX800_virtuel][I3]#")->event(((string)$xml->btn2=="up")?0:1);
      cmd::byString("#[IPX800][IPX800_virtuel][I4]#")->event(((string)$xml->btn3=="up")?0:1);
      cmd::byString("#[IPX800][IPX800_virtuel][I5]#")->event(((string)$xml->btn4=="up")?0:1);
      cmd::byString("#[IPX800][IPX800_virtuel][I6]#")->event(((string)$xml->btn5=="up")?0:1);
      cmd::byString("#[IPX800][IPX800_virtuel][I7]#")->event(((string)$xml->btn6=="up")?0:1);
      cmd::byString("#[IPX800][IPX800_virtuel][I8]#")->event(((string)$xml->btn7=="up")?0:1); 
    }
    
  } else {
    $scenario->setLog("Erreur lors de la récupération du fichier globalstatus.xml");
    log::add('ipx800','error',"Erreur lors de la récupération du fichier globalstatus.xml");
  }

} else {
  
  $scenario->setLog("Tag push détecté, information reçue : ".$push);
  
  if (substr($push,0,1) == 'e') {  // On vérifie que le tag push commence par un 'e' pour être sûr d'avoir une bonne information 
    
    // Extraction des états des relais depuis tag push - 
    $scenario->setLog("Mise à jour de l'état des relais depuis tag");
    cmd::byString("#[IPX800][IPX800_virtuel][R1]#")->event(substr($push,1,1));
    cmd::byString("#[IPX800][IPX800_virtuel][R2]#")->event(substr($push,2,1));
    cmd::byString("#[IPX800][IPX800_virtuel][R3]#")->event(substr($push,3,1));
    cmd::byString("#[IPX800][IPX800_virtuel][R4]#")->event(substr($push,4,1));
    cmd::byString("#[IPX800][IPX800_virtuel][R5]#")->event(substr($push,5,1));
    cmd::byString("#[IPX800][IPX800_virtuel][R6]#")->event(substr($push,6,1));
    cmd::byString("#[IPX800][IPX800_virtuel][R7]#")->event(substr($push,7,1));
    cmd::byString("#[IPX800][IPX800_virtuel][R8]#")->event(substr($push,8,1));

    // Extraction des entrées digitales depuis tag push
    $scenario->setLog("Mise à jour des entrées digitales depuis tag");
    cmd::byString("#[IPX800][IPX800_virtuel][I1]#")->event(substr($push,32+1,1));
    cmd::byString("#[IPX800][IPX800_virtuel][I2]#")->event(substr($push,32+2,1));
    cmd::byString("#[IPX800][IPX800_virtuel][I3]#")->event(substr($push,32+3,1));
    cmd::byString("#[IPX800][IPX800_virtuel][I4]#")->event(substr($push,32+4,1));
    cmd::byString("#[IPX800][IPX800_virtuel][I5]#")->event(substr($push,32+5,1));
    cmd::byString("#[IPX800][IPX800_virtuel][I6]#")->event(substr($push,32+6,1));
    cmd::byString("#[IPX800][IPX800_virtuel][I7]#")->event(substr($push,32+7,1));
    cmd::byString("#[IPX800][IPX800_virtuel][I8]#")->event(substr($push,32+8,1));
    
  }

}
- Sauver et tester en cliquant sur Exécuter. Si ce scénario est exécuté sans tags (lancement normal), il récupère toutes les 5 minutes le fichier globalstatus.xml sur l'IPX800 et injecte l'information dans le virtuel IPX800_virtuel. Vérifier à ce stade que les valeurs sont bien récupérées.
- Maintenant, on va configurer le retour d'état immédiat (push). Dans la configuration de l'IPX800, cliquer en bas sur M2M puis en bas encore sur Push, renseigner dans Server l'IP de Jeedom, cocher Enable, et dans Path entrer (en remplaçant CLE_API par votre Clef API - voir dans Jeedom roue crantée en haut à droite > Configuration > API > Clef API - et en remplaçant aussi XX par l'ID du scénario créé précédemment) :

Code : Tout sélectionner

/core/api/jeeApi.php?apikey=CLE_API&type=scenario&id=XX&action=start&tags=push%3De$O$I
- Cette configuration de push fait qu'à chaque fois qu'il y a une modification, l'IPX va lancer le scénario précédemment créé. En plus, elle va transmettre l'état des sorties ($O pour outputs) et des entrées digitales ($I pour inputs) à l'aide d'un tag nommé "push". Dans ce cas, le scenario va extraire l'information transmise et mettre à jour le virtuel IPX800_virtuel.

Cette configuration ne prend toutefois pas en compte d'éventuelles extensions de l'IPX800, mais le principe est le même, il suffit d'adapter le code (toute l'information est disponible dans globalstatus.xml et dans le push). Bien sûr, je recommande de tout tester une fois mis en place.

Fait intéressant, on peut ensuite changer les noms de l'objet virtuel et de ses commandes : les changements sont reportés automatiquement dans le code du scénario. Pratique.

Autre remarque, pour les valeurs analogiques c'est la valeur brute (de 0 à 1023) qui est récupérée. Pour retrouver quelque chose de lisible, on peut par exemple dans la configuration de la commande, onglet Configuration, entrer une formule de calcul. Par exemple mettre "#value# / 1023 * 3.3" si on veut afficher la tension. Là c'est sûr que c'est un peu moins bien que ce que permettait le plugin puisqu'on pouvait directement sélectionner un type de sonde et que la formule était injectée dans la commande Réel => éventuellement il faudrait lister les différentes formules à appliquer. edit : voir 3 posts plus bas pour les formules

Il nous reste à créer les commandes pour commander les relais. Pour cela :
- Créer un nouveau script : Plugins > Programmation > Script > Ajouter, qu'on appellera par exemple IPX800_commandes
- Cliquer sur "Ajouter commande script", la nommer R1_ON, choisir HTTP comme Type script, choisir Type Action et laisser Défaut
- Dans Requête, entrer "http://192.168.1.100:80/preset.htm?set1=1" en remplaçant 192.168.1.100 par l'IP de votre IPX800
- Entrer éventuellement utilisateur et mot de passe si vous en avez défini un pour accéder à l'IPX800
- Créer une nouvelle commande script nommée R1_OFF avec comme requête cette fois-ci : http://192.168.1.100:80/preset.htm?set1=0
- Créer les commandes suivantes jusqu'à R8_ON et R8_OFF (vous pouvez utiliser l'icône dupliquer à droites des commandes précédentes pour aller plus vite) en changeant juste le numéro après set dans la requête. Par exemple, pour R8_OFF, ce sera http://192.168.1.100:80/preset.htm?set8=0

Et voilà. Vous devriez avoir deux objets qui permettent d’interagir avec votre IPX800v3 et de récupérer toutes les informations. Il ne reste plus qu'à remplacer les anciennes commandes, par exemple en utilisant "Cette commande remplace la commande" dans Configuration commande. C'est peut-être la partie la plus fastidieuse.

Normalement à partir de là, vous ne devriez plus avoir besoin du plugin et comme on utilise des composants intégrés au Core de Jeedom plus de problème avec les mises à jour.
Dernière édition par Seb82 le 23 août 2019, 10:22, édité 3 fois.

dvb
Actif
Messages : 1442
Inscription : 15 févr. 2015, 22:50

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par dvb » 22 août 2019, 23:10

Hello,

Très bien documenté, merci pour le partage.
L'implémentation des modules d'extensions semble simple et logique.

J'ai un doute là dessus :
// Extraction des états des relais depuis tag
$scenario->setLog("Mise à jour de l'état des relais depuis tag");
cmd::byString("#[IPX800][IPX800_virtuel][R1]#")->event(substr($etats,0,1));
cmd::byString("#[IPX800][IPX800_virtuel][R2]#")->event(substr($etats,1,1));
cmd::byString("#[IPX800][IPX800_virtuel][R3]#")->event(substr($etats,2,1));
...
// Extraction des états des entrées depuis tag
$scenario->setLog("Mise à jour des entrées digitales depuis tag");
cmd::byString("#[IPX800][IPX800_virtuel][I1]#")->event(substr($etats,32,1)); <<<<< (*)
cmd::byString("#[IPX800][IPX800_virtuel][I2]#")->event(substr($etats,33,1));
...
cmd::byString("#[IPX800][IPX800_virtuel][I8]#")->event(substr($etats,39,1));
(*) Plutôt que 32, 33, ... ne serait-ce pas 0,1,2, ... ?

@+
DIY 4*2GHz - 4Go RAM - SSD
- ctrl 1-wire Dallas + IPX800 + X880
- ctrl RFXcom + Oregon (température) + Anémomètre
- ctrl Gen5 + Wallplug + fgrm-222 + Benext + Everspring AN157-6 + Aeon Key Fob+ ...

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par Seb82 » 23 août 2019, 09:26

Normalement c'est bon, c'est bien 32,33, ...
En fait, dans la configuration du path de l'IPX pour le push, je voulais au départ renvoyer deux tags séparés pour les inputs et les outputs mais il y a une limite sur le nombre de caractères. Du coup, obligé de coller les deux à la suite, et comme $O et $I renvoient chacun un binaire de 32 caractères (il y a les états de l'IPX800 mais aussi ceux des éventuelles extensions), il faut commencer à la 33ème position pour les inputs.
J'ai changé un peu le code pour que ce soit plus lisible.
Dernière édition par Seb82 le 23 août 2019, 10:29, édité 2 fois.

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par Seb82 » 23 août 2019, 10:15

Petite mise à jour du code :
- Une partie configuration pour changer les infos sur l'IPX800 au début (IP, port, etc.)
- Plus d'explications
- Changement du nom du tag par push pour une meilleure compréhension
- Test qu'on a bien un code 200 lorsqu'on lit le fichier globalstatus.xml (au cas où l'IPX ne soit pas accessible)
- Vérification que le fichier est valide en testant le numéro de version de l'IPX
- Test que le push retourné commence bien par un 'e' pour voir s'il est valide
- Renumérotation lorsqu'on extrait les infos du push pour une meilleure compréhension

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par Seb82 » 23 août 2019, 10:20

Pour les analogiques, voici les différentes formules à utiliser d'après le code du plugin :

Code : Tout sélectionner

LM35Z formule = '#value# * 0.323' unite = '°C' 
T4012 formule = '#value# * 0.323 - 50' unite = '°C' 
Voltage formule = '#value# * 0.00323' unite = 'V' 
SHT-X3L formule = '#value# * 0.09775' unite = '% Lum' 
SHT-X3T formule = '( #value# * 0.00323 - 1.63 ) / 0.0326' unite = '°C' 
SHT-X3H formule = '( ( #value# * 0.00323 / 3.3 ) - 0.1515 ) / 0.00636 / 1.0546' unite = '% RH' 
TC100 formule = '( ( #value# * 0.00323 ) - 0.25 ) / 0.028' unite = '°C' 
CT10A formule = '#value# * 0.00323' unite = 'A' 
CT20A formule = '#value# * 0.00646' unite = 'A' 
CT50A formule = '#value# * 0.01615' unite = 'A' 
CT100A formule = '#value# * 0.0323' unite = 'A' 
Ph formule = '#value# / 100' unite = 'Ph' 
SHT-X3HC formule = '( ( #value# * 0.00323 / 3.3 ) - 0.1515 ) / 0.00636 / 1.0546 / ( 1.0546 - ( 0.00216 * #temp# ) )' unite = '% RH' - Remplacer #temp# par la température réélle
ORP Probe formule = '#value# - 2500' unite = 'mV'
 
A mettre dans Configuration commande > Configuration > Formule de calcul.
Pour SHT-X3HC, vu que cela utilise une autre valeur, je pense qu'il faut passer par un virtuel.

dvb
Actif
Messages : 1442
Inscription : 15 févr. 2015, 22:50

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par dvb » 23 août 2019, 23:54

Seb82 a écrit :
23 août 2019, 09:26
Normalement c'est bon, c'est bien 32,33, ...
En fait, dans la configuration du path de l'IPX pour le push, je voulais au départ renvoyer deux tags séparés pour les inputs et les outputs mais il y a une limite sur le nombre de caractères. Du coup, obligé de coller les deux à la suite, et comme $O et $I renvoient chacun un binaire de 32 caractères (il y a les états de l'IPX800 mais aussi ceux des éventuelles extensions), il faut commencer à la 33ème position pour les inputs.
Compris !
Seb82 a écrit :
23 août 2019, 10:15
Petite mise à jour du code :
- Une partie configuration pour changer les infos sur l'IPX800 au début (IP, port, etc.)
...
- Renumérotation lorsqu'on extrait les infos du push pour une meilleure compréhension
Je suis impressionné par ta rigueur et ta pédagogie => bravo et encore merci ;)

J'ai jusque deux X880 par IPX800, pour activer les push, c'est bien cette syntaxe n'est-ce pas ?

cmd::byString("#[IPX800][IPX800_virtuel][R7]#")->event(substr($push,7,1));
cmd::byString("#[IPX800][IPX800_virtuel][R8]#")->event(substr($push,8,1));
cmd::byString("#[IPX800][IPX800_virtuel][R9]#")->event(substr($push,9,1));
cmd::byString("#[IPX800][IPX800_virtuel][R10]#")->event(substr($push,10,1));
etc...


et ceci ;

cmd::byString("#[IPX800][IPX800_virtuel][I7]#")->event(substr($push,32+7,1));
cmd::byString("#[IPX800][IPX800_virtuel][I8]#")->event(substr($push,32+8,1));
cmd::byString("#[IPX800][IPX800_virtuel][I9]#")->event(substr($push,32+9,1));
cmd::byString("#[IPX800][IPX800_virtuel][I10]#")->event(substr($push,32+10,1));
etc...
DIY 4*2GHz - 4Go RAM - SSD
- ctrl 1-wire Dallas + IPX800 + X880
- ctrl RFXcom + Oregon (température) + Anémomètre
- ctrl Gen5 + Wallplug + fgrm-222 + Benext + Everspring AN157-6 + Aeon Key Fob+ ...

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par Seb82 » 25 août 2019, 11:11

Normalement c'est ça. Mais n'ayant pas d'extension, je pense que le mieux c'est d'essayer :)

dvb
Actif
Messages : 1442
Inscription : 15 févr. 2015, 22:50

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par dvb » 25 août 2019, 11:41

Seb82 a écrit :
25 août 2019, 11:11
Normalement c'est ça. Mais n'ayant pas d'extension, je pense que le mieux c'est d'essayer :)
Ok merci :D
DIY 4*2GHz - 4Go RAM - SSD
- ctrl 1-wire Dallas + IPX800 + X880
- ctrl RFXcom + Oregon (température) + Anémomètre
- ctrl Gen5 + Wallplug + fgrm-222 + Benext + Everspring AN157-6 + Aeon Key Fob+ ...

ordep
Timide
Messages : 9
Inscription : 02 oct. 2018, 22:06

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par ordep » 07 sept. 2019, 18:36

Merci, ça marche impec !!! :D :D

mccyrille
Timide
Messages : 90
Inscription : 22 nov. 2015, 09:40

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par mccyrille » 24 sept. 2019, 08:39

Bonjour

Venant de passer en buster, le plugin ne fonctionnait pas... Comme tu dis, au moins avec ta méthode, nous ne sommes plus tributaire du plugin. C'est un poil long à mettre en place, mais certainement tout aussi, voir plus durable !

C'est pourquoi j'ai décidé d'adopter ta méthode.

Juste un petite question, j'ai voulu envoyé un état périodique assez régulièrement (15 à 30s), il y a un paramètre exprès dans le panel IPX 800, mais ça ne semble pas fonctionner (voir pièce jointe).

As-tu un retour sur cette fonction ?

Au pire je mettrai toutes les minutes dans le scénario, mais c'est surtout pour récupérer les compteurs, ça peut être utile d'être réactif, et il me semble qu'on ne peut pas les passer dans push ?
Pièces jointes
Sans titre.png
Sans titre.png (29.3 Kio) Consulté 6369 fois

Juju31
Timide
Messages : 149
Inscription : 09 févr. 2016, 21:07
Localisation : Banlieue Toulousaine

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par Juju31 » 24 sept. 2019, 16:34

Hello,

Attention, si tu as paramétré Send data on events (ce qui semble être le cas sur ton screenshot), tu vas avoir un appel du scénario 2 fois par impulsions (quand l'input passe à 1 puis à 0 de nouveau). Donc c'est très réactif ... trop !
Moi j'ai eu des erreurs de Jeedom m'indiquant que le scénario était appelé trop souvent. Mon compteur sert à mesurer l'énergie des gros consommateurs (chauffage, chauffe-eau, ...) dans la maison. J'imagine même pas cet hiver lorsque le chauffage va tourner plein pot ...!

Du coup, je n'utilise plus le push global. J'ai légèrement modifié le script, et j''utilise le push de chaque relais ou input, et pour les compteurs, c'est le scénario qui se déclenche 1 fois par minute.

Seb82
Timide
Messages : 116
Inscription : 29 août 2017, 11:53
Contact :

Re: Intégrer une IPX800v3 sans passer par le plugin

Message par Seb82 » 27 sept. 2019, 16:54

@Juju31, effectivement dans le cas où un input sert à récupérer des impulsions (pour incrémenter un compteur de l'IPX par exemple), ça peut provoquer pas mal de fois un lancement du scénario. Dans ce cas là, pas le choix que de passer par une configuration push individuelle pour chaque input.

@mccyrille, pour moi le "Send data on time" n'a pas ici de gros intérêt. Dans la configuration que j'ai proposée, c'est bien le scénario qui vient chercher l'information de manière régulière (ou alors il faut enlever le mode programmé du scénario et laisser juste "Send data on time" mais je n'ai pas essayé et je trouve cela moi souple que d'avoir tout dans Jeedom). Et dans tous les cas, dans la ligne Path configurée au dessus les compteurs de l'IPX n'y sont pas, il n'y a que l'état des input et output qui est remonté à travers $I$O

Répondre

Revenir vers « [Catégorie] Protocoles domotiques »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 9 invités