Bonjour à tous,
Je commence à me familiariser avec Jeedom pour migrer tout mon système actuellement sous eedomus.
J’ai récemment installé une PAC Air-Air Panasonic et avant de démarrer la migration de tout le reste, j’essaye d’intégrer cette PAC dans Jeedom (j’aime commencer par le plus compliqué )
En fouillant les méandres d’internet, je suis tombé sur ce sujet qui s’appuie sur le plugin script et des scénarios: Plugin Panasonic Comfort Cloud
J’ai suivi le tutoriel et il est presque totalement fonctionnel à un détail près (et évidemment ce détail est très important).
Le scénario s’appuie sur un bloc code que voici:
$cmdinfo = "#[Salon][PAC Salon][INFO]#";
$RetourInfo = cmd::byString($cmdinfo)->execCmd();
//scinde l'info
list($val1, $val2, $val3, $val4, $val5, $val6, $val7, $val8, $val9, $val10, $val11, $val12) = explode(" ", $RetourInfo);
//mise en variable
$scenario->setData("valeurTempExt_Salon", "$val5");
$scenario->setData("valeurConsigne_Salon", "$val6");
$scenario->setData("valeurPower_Salon", "$val7");
$scenario->setData("valeurMode_Salon", "$val8");
$scenario->setData("valeurFanSpeed_Salon", "$val9");
$scenario->setData("valeurAirSwingLR_Salon", "$val10");
$scenario->setData("valeurAirSwingUD_Salon", "$val11");
$scenario->setData("valeurEco_Salon", "$val12");
$myVar = $scenario->getData('valeurTempExt_Salon');
list($val1, $val2) = explode(" : ",$myVar);
$scenario->setData("valeurTempExt_Salon", "$val2");
cmd::byString('#[Salon][PAC Salon][TempExt]#')->event("$val2");
$myVar = $scenario->getData('valeurConsigne_Salon');
list($val1, $val2) = explode(" : ",$myVar);
$scenario->setData("valeurConsigne_Salon", "$val2");
cmd::byString('#[Salon][PAC Salon][Etat Consigne]#')->event("$val2");
$myVar = $scenario->getData('valeurPower_Salon');
list($val1, $val2) = explode(" : ",$myVar);
$scenario->setData("valeurPower_Salon", "$val2");
cmd::byString('#[Salon][PAC Salon][Etat Power]#')->event("$val2");
$myVar = $scenario->getData('valeurMode_Salon');
list($val1, $val2) = explode(" : ",$myVar);
$scenario->setData("valeurMode_Salon", "$val2");
cmd::byString('#[Salon][PAC Salon][Etat Mode]#')->event("$val2");
$myVar = $scenario->getData('valeurFanSpeed_Salon');
list($val1, $val2) = explode(" : ",$myVar);
$scenario->setData("valeurFanSpeed_Salon", "$val2");
cmd::byString('#[Salon][PAC Salon][Etat Fan]#')->event("$val2");
$myVar = $scenario->getData('valeurAirSwingLR_Salon');
list($val1, $val2) = explode(" : ",$myVar);
$scenario->setData("valeurAirSwingLR_Salon", "$val2");
cmd::byString('#[Salon][PAC Salon][Etat Volet Horizontal]#')->event("$val2");
$myVar = $scenario->getData('valeurAirSwingUD_Salon');
list($val1, $val2) = explode(" : ",$myVar);
$scenario->setData("valeurAirSwingUD_Salon", "$val2");
cmd::byString('#[Salon][PAC Salon][Etat Volet Ventilation]#')->event("$val2");
$myVar = $scenario->getData('valeurEco_Salon');
list($val1, $val2) = explode(" : ",$myVar);
$scenario->setData("valeurEco_Salon", "$val2");
cmd::byString('#[Salon][PAC Salon][Etat Eco]#')->event("$val2");
Le cmdinfo est un appel au script et fonctionne bien, j’ai bien un retour de la commande et du résultat associé.
Là où le problème se pose est sur la suite, le résultat semble bien stocké mais j’ai l’impression que c’est l’explosion en différentes variables qui pose problème.
Pour le test, j’ai forcé les valeurs de variables à 0, et lorsque je déclenche le scénario, les variables deviennent vides.
Et j’ai beau voir et revoir le bloc code je n’arrive pas à mettre le doigt sur ce qui cloche.
Le résultat de la commande INFO semble avoir un retour avec beaucoup d’espaces, du coup dans mon code j’ai testé d’ajouter juste après la ligne $RetourInfo la ligne suivante:
$RetourInfo2 = preg_replace('/\s\s+/', ' ',$RetourInfo);
Et de mettre ma ligne list comme suit:
list($val1, $val2, $val3, $val4, $val5, $val6, $val7, $val8, $val9, $val10, $val11, $val12) = explode(" ", $RetourInfo2);
L’exécution se passe toujours bien, pas d’erreur mais des variables désespérément vides
Dans les logs event, je vois que c’est vide également:
0453|[2023-11-17 12:01:03][INFO] : Exécution du scénario [Gestion Chauffage][Salon][Scenario PAC Salon] déclenché par : user
0454|[2023-11-17 12:01:03][INFO] : Evènement sur la commande [Salon][PAC Salon][TempExt] valeur : °C
0455|[2023-11-17 12:01:03][INFO] : Evènement sur la commande [Salon][PAC Salon][Etat Power] valeur :
0456|[2023-11-17 12:01:03][INFO] : Evènement sur la commande [Salon][PAC Salon][Etat Mode] valeur :
0457|[2023-11-17 12:01:03][INFO] : Evènement sur la commande [Salon][PAC Salon][Etat Fan] valeur :
0458|[2023-11-17 12:01:03][INFO] : Evènement sur la commande [Salon][PAC Salon][Etat Volet Horizontal] valeur :
0459|[2023-11-17 12:01:03][INFO] : Evènement sur la commande [Salon][PAC Salon][Etat Volet Ventilation] valeur :
0460|[2023-11-17 12:01:03][INFO] : Evènement sur la commande [Salon][PAC Salon][Etat Eco] valeur :
Alors que toujours dans ce même log event j’ai bien le retour de la commande INFO:
[2023-11-24 10:45:05][INFO] : Evènement sur la commande [Salon][PAC Salon][INFO] valeur : reading from device 'Salon' (XXX) id : XXX parameters temperatureInside : 18 temperatureOutside : 11 temperature : 16 power : On mode : Heat fanSpeed : Auto airSwingHorizontal : Auto airSwingVertical : Auto eco : Auto nanoe : On
Mais toujours avec ces multiples espaces que je pensais solutionner avec la modification du code.
Si quelqu’un pouvait me donner son avis ou son aide, ce serait vraiment top, parce qu’à force de regarder, reregarder j’ai les yeux qui se croisent et je ne comprends pas d’où pourrait provenir le souci (sachant que le code c’est vraiment pas mon fort en plus).
Merci!