Me revoilà
Bien sur, dès que je vois du code je copie bêtement sans comprendre,
il ne voit pas R1 qui a bien été créé par ailleurs?
voici le path du lien push de M2M de l’ipx:
/core/api/jeeApi.php?apikey=xxxx&type=scenario&id=1&action=start&tags=push%3De$O$I
et aussi le code
/* 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.0.13"; // 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("#[Local piscine][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));
}
}
Pour la température de la piscine c’était de l’humour, raté
…et ça montrait que cela marchait pour l’analogique