Problème avec ipx800 V3

Bonsoir,
Es-tu certain de la commande envoyée par ton script. As-tu un log ou une trace de la requête http ?
Tu as ici un exemple de la commande On pour le relai 1.


La requête est: http://ipxuser:ipxpasswd@ipxipaddr:80/preset.htm?set1=1
Remplace ipxuser, ipxpasswd et ipxipaddr par leur valeur respectives. Mon Ipx800v3 est sécurisé par ipxuser,ipxpasswd
En standard, Jeedom ne bloque pas les messages qu’il envoye.

Bonjour, merci pour la reponse
voila une capture du log et de la commande avec script

Bonjour,

Je crois que tu as un problème avec ton authentification.
La zone ou tu as indiqué admin contient au départ « Maximum d’essai ». Tandis que tu n’utilises pas la zone Utilisateur.
Je n’ai pas le plugin jeevent. Je ne sais donc pas exactement reproduire ton cas.
Si j’exécute la même commande que toi sans utilisateur ou avec un utilisateur erroné, je reçois une erreur 401 Unauthorized.

Peux tu essayer comme moi, en spécifiant le user, password dans l’url et pas dans la configuration.

Merci, pour ta réponse.
j’ai supprimé le remplissage des champs d’authentification et super sa marche. C’était un module de Firefox qui me remplissait les champ d’authentification. Un grand merci👍

Marque le sujet comme solutionné.

Bonjour
Je n’arrive à faire fonctionner le scénario push du tutoriel…
quelqu’un aurai de screenshots de la configuration des virtuel ainsi qu’un exemple du code prêt à fonctionner savoir d’où vient mon erreur

1 « J'aime »

Bonjour,

Voici pour le scenario

/* 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 = "172.xx.xx.xx";  // Changer par l'IP de l'IPX800
$PORT_IPX800 = "80"; 		  // Port de l'IPX800 si modifié, sinon laisser 80
$IDENTIFIANT = "xxxxx";	  // Identifiant s'il y a en a un, sinon vide
$MOT_DE_PASSE = "xxxxxxx";	  // 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));
    
  }

}

2 « J'aime »

Voici pour le virtuel
La définition de l’équipement

Les commandes et en premier la partie Analogique et Compteurs

La partie Relais

La partie entrées digitales

Le résultat sur le dashboard

1 « J'aime »

Enfin, il y a les commandes pour contrôler les relais de l’IPX800v3
image

Voici comme exemple R1_ON et R1_OFF


@henribi,

Pour info, Loïc a répondu à mon ticket : aucune date de correction suite v4.1.x.
Je crains d’être bientôt obligé de passer par ce plan B pour mes 5 x IPX800…

Vraiment un grand merci pour tes explication détaillées qui vont m’aider :+1:

Bonjour

malheureusement pas d’idée …
pas contre j’ai suivi vos conseils en veillant que l’adresse menu push dans le « M2M » soit vide et je suis aussi bloqué soit sur une mise à jour dans jeedom de mon ipxV3 (dernier firmeware) comme par exemple l’ajout d’un input numérique soit l’ajout depuis le début d’un nouvel IPXV3

j’ai remarqué que lorsque j’essaye de configurer l’ipx pour avoir le retour d’état, la configuration récupérée n’est pas à jour et quand je change l’adresse IP de l’ipx aucune configuration n’est remontée

avez vous pu avancer sur ce sujet ??
merci d’avance
Nicolas

1 « J'aime »

Quelle solution utilises tu ? Plugin IPX800 v3 ou connexion directe sans plugin avec script et virtuel ?

Bonjour,

Solution perso, je suis remonté a ma sauvegarde 4.0.61, pour assurer le fonctionnement de l’installation. Après ce qui me gène le plus c’est l’icône de mise a jour.
C’est ennuyeux d’abandonner le plugin, c’est une techno filaire, de tableau électrique, pas faite pour durer 6 mois. On s’attaque a l’habitation , sur des système qui doivent avoir un peu de pérennité…après je comprends très bien que l’équipe fait ce qu’elle peux.

Bonjour,

Je comprends pour la technologie IPX800v3, elle est géniale et fonctionne super bien.
Par contre je suis pour abandonner le plugin. Je l’ai remplacé par une solution décrite dans l’ancien forum.
https://forum.jeedom.com/viewtopic.php?f=133&t=47112

Dans ce même fil de discussion tu as à partir du post 90 le scenario et les virtuels que j’utilise.
Cela fonctionne nickel et avec une réponse rapide et fiable.

1 « J'aime »

Merci, je vais reprendre ca etre le faire en parallele de mon plugins :wink: merci pour le boulot.

Hello,

Vu que Jeedom ne donne pas de date, j’ai aussi prévu de passer en mode script.
Pas question d’abandonner ce super matériel GCE, et tout le câblage installé.

C’est laborieux à faire (j’ai beaucoup d’IPX…), mais au moins ce sera pérenne. Donc je migrerai sans doute d’ici l’été, après vous.

Je surveille ce post; bon courage à ceux qui se lancent.

Encore merci à tous pour le partage.

@++

bonjour
j’utilise le plugin V3

Sur le plugin, je ne sais pas t’aider. Je l’ai abandonné il y plus d’un an.

Dommage

bonne journée
nicolas

Bonjour, je m’ajoute à tous ceux qui ont eu des pbs avec le plugin IPX800V3. J’ai donc migré vers la solution de @seb821 . 4 IPXV3 . Chemin codé au niveau des relais/input et M2M : delay à 2, pas de send data on event et send data on time (à 1).
Le temps de réponse varie bcp d’une IPX à une autre ( 2 à 20s).Les 4 ipx sont au derneir firmware.
Je compare les configs entre elles et je ne vois pas de différence.
Une idée où creuser?
Merci