Afficher infos variables dans log d'un scenario

Merci @olive

Mauvais copier coller il y avais bien le point virgule
$test = ‹ 50 ›;
`$scenario->setLog(’$test = '.$test);
par contre il y avais un petit tilde devant $scenario, je viens de le supprimer maintenant dans le log j’ai

[2021-05-25 18:36:26][SCENARIO] $test = 50

Donc un peu sec sur les autres variables qui ne remonte pas

Ta ligne de tout début me semble bien compliqué.

maintenant que tu sais faire un setLog prend ton temps et redécoupe chaque partie
pour trouver ce qui ne va pas.

ps lorsque tu copie du code dans community
sur une ligne vide clique sur </> et colle le texte la ou c’est indiqué.
si non beaucoup de caractère sont transformé et ça deviennent illisible.

j’ai êtes un peu vite

$scenario->setLog et peux etre le premier truc que je comprends
Par contre je ne maitrise pas le reste donc le découpage pas encore pour moi

N’y a t il pas une autre méthode car je n’arrive pas à voir le contenu de certaine variable donc je ne sais pas si elle est vraiment vide ou si je ne pointe pas vraiment dessus

Reprenons depuis le début si tu le veut bien.

d’ou viennent tes données ? un objet/equipement/commande ?

quel est leur forme et contenu ?

Je vais récupérer les infos de mon serveur Wes via mon scenario qui ouvre un lien sur un fichier .cgx

le scenario trouve ces infos

<data>
<info>
<time>19:50</time>
</info>
<TblanTIC1>
<tr class='A0'><td>Ann&eacute;e HP</td><td align=right>4071</td><td align=right>618</td></tr> <tr class='A0'><td>Ann&eacute;e HC</td><td align=right>2881</td><td align=right>330</td></tr>
</TblanTIC1>
<temp>
<SONDE1>10.6</SONDE1>
<SONDE2>21.0</SONDE2>
<SONDE3>0.0</SONDE3>
<SONDE4>22.2</SONDE4>
<SONDE5>21.4</SONDE5>
<SONDE6>20.8</SONDE6>
</temp>
</data>

Mon scenario fonctionne bien pour les sondes, je visualise le résultat dans un virtuel

Pour tester le bon fonctionnement du programme j’ ai fait un test log sur

lireValeurXml($xml, 'temp', 'SONDE2', 1508, 0);
  $scenario->setLog('$xml',$xml);

dans le log j’ai ce retour

`[2021-05-25 19:55:01][SCENARIO] Exécution d'un bloc code
[2021-05-25 19:55:02][SCENARIO] $xml
[2021-05-25 19:55:02][SCENARIO] Fin correcte du scénario
`

Alors que dans mon virtuel j’ai bien « 21.0 »

J’ai donc déjà un pb pour faire du debug (résultat ok dans virtuel et nok dans log
je cherche un moyen fiable pour aller plus loin
ou le pb vient que je n’ écris au bonne endroit les choses dans le script

Avant de passer sur mon vrai problème je voulais déjà valider sur le bout de code qui fonctionnel

Le problème que je veux traiter au final est sur un tableau qui renvoi du fichier cgx ces infos

<TblanTIC1>
<tr class='A0'><td>Ann&eacute;e HP</td><td align=right>4071</td><td align=right>618</td></tr> <tr class='A0'><td>Ann&eacute;e HC</td><td align=right>2881</td><td align=right>330</td></tr>
</TblanTIC1>

Comme t’as dit @olive il faut faire $scenario->setLog('$xml'.$xml);
Il faut un point pas une virgule …

Vue le données de ton fichier je t’invite a utiliser le plugin-script
car tes données sont de type XML …

voir ici

Je viens de corriger résultat identique

Passe en MP si tu veux bien …

Essaye un json_encode($xml) …

Bonjour

Tu me propose de passer d’un scenario au plugin script, je ne maitrise déjà pas les scenarios le fait de passer au plugin script pour un débutant comme moi ne risque t il pas d’être un peu plus compliqué

Avec ce plugin mon code va fonctionner autrement ?

Hormis la doc officiel y a t il des tutos sur le sujet.

Bonne journée

Bonjour,

Je ne comprends pas bien ce que tu cherches à faire avec un nouveau plugin Wes qui fait déjà bien + mais bon…

Je t’invite à prendre des cours de développement web.

1 « J'aime »

De base j’utilise le plugin Wes et maintenant le nouveau plugin Wes control

Je cherche juste à visualiser des choses non dispos dans ces 2 plugins et c’est pas simple

Si tu as les indices CGX de ces données non disponibles dans le nouveau plugin Wes (actuellement en 1ère beta avant stable) il serait plus intéressant des le faire remonter aux développeurs afin de les intégrer dans le plugin.

Pour info j’ai maintenant une version qui fonction via l’aide d’une personne du forum Cartelectronique et de l’aide de @Doubledom

Si cela vous intéresse voici le code il n’est pas optimisé:

$WesIP ="192.168.1.46";
$User="xx:yy";
$dataPage="D_SOND.CGX"; 

////////////////////////////////////
// Permet de charger un fichier XML
// $pUser = login:password
// $pWesIP = Ip du serveur 192.168.x.x
// $pDataPage  = nom du fichier XML à télécharger
//
function getWesXml($pUser, $pWesIP, $pDataPage) {

  try {
  
     $xmldoc = null;

     // Url a requeter
     $wesUrl="http://".$pUser."@".$pWesIP."/".$pDataPage; 
  
     // Tableau contenant les options de téléchargement
     $options=array(
        CURLOPT_URL => $wesUrl,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER => false,
        CURLOPT_CONNECTTIMEOUT => 2000,
        CURLOPT_FRESH_CONNECT => true,
        CURLOPT_USERPWD => $pUser
     );
  
     // Création d'un nouvelle ressource cURL
     $CURL=curl_init();
  
     // Configuration des options de téléchargement
  
     curl_setopt_array($CURL, $options);
  
     // Exécution de la requête
     $content=curl_exec($CURL);
     
     // Fermeture de la session cURL
     curl_close($CURL);
     
     if ($content == "") {
       return null;
     }
     else {
       $xmldoc = new DomDocument(); 
       $xmldoc->loadXML($content);
     }

    return $xmldoc;

  } catch (Exception $e) {
    echo "Erreur Read File XML, Error = ".$e->getMessage();
    return null; 
  }
}


/*
# Lecture d'une valeur d'un TAG enfant défini dans un Groupe de TAG Parent et mise à jour de l'objet virtuel dand JEEDOM par son n°ID
# Paramètres:
# - $pXml: contient l'ensemble du document XML à lire.
# - $pXmlNoeud: contient le nom du Tag Parent XML du groupe des enfants à lire.
# - $pXmlAttribut: contient le nom du TAG enfant à lire contenu dans le Groupe défini par le TAG XML Parent
# - $pId: Identifiant du virtuel Jeedom dans lequel la valeur de l'attribut XML doit être stockée.
# - $pUnite: Divise la valeur par ce chiffre si $pUnite est >à zéro.
*/
function lireValeurXml($pXml, $pXmlNoeud, $pXmlAttribut, $pId, $pUnite) {
  try {
     $valeur = $pXml->getElementsByTagName($pXmlNoeud)->item(0)->getElementsByTagName($pXmlAttribut)->item(0)->nodeValue;

     //echo $valeur."\n";
     
     if ($pUnite > 0)
       $valeur = $valeur / $pUnite;

     $cmd=cmd::byId($pId);
     $cmd->setValue($valeur);
     $cmd->event($valeur);

  } catch (Exception $e) {
     echo "Erreur Exception LireValeurXml = ".$e->getMessage();
     return; 
  }
}

/*
# Lecture d'une valeur d'un flux XML type Tableau HTML et mise à jour de l'objet virtuel de JEEDOM
# Paramètres:
# - $pXml: contient l'ensemble du document XML à lire.
# - $pXmlNoeud: contient le nom du noeud parent XML à lire.
# - $pXmlAttribut: contient le nom de l'attribut enfant XML à lire.
# - $nItem: contient le n° enfant du TAG à lire  (NOUVEAU)
# - $pId: Identifiant du virtuel Jeedom dans lequel la valeur de l'attribut XML doit être stockée.
# - $pUnite: Divise la valeur par ce chiffre si $pUnite est >à zéro.
*/
function lireValeurTableauXml($pXml, $pXmlNoeud, $pItem, $pId, $pUnite) {
  try {
 
     // récupération de la zone XML parent du tableau HTML
     $Tabl = $pXml->getElementsByTagName($pXmlNoeud)->item(0)->nodeValue;
   
     // suppression des caractères espaces et textes parasites.
     $Tabl= str_replace(" align=right", "", $Tabl);
     $Tabl= str_replace("<tr class='A0'>", "",  $Tabl);
     $Tabl= str_replace("</td>", "",  $Tabl);
     $Tabl= str_replace("</tr>", "",  $Tabl);
     $Tabl= str_replace("\n", "",  $Tabl);
     
     // récupération de la valeur du N° Item d'un enfant TAG <TD>
     $Tagtd = explode("<td>", $Tabl);
     $valeur = $Tagtd[$pItem];

     //echo $valeur."\n";
     
     if ($pUnite > 0)
       $valeur = $valeur / $pUnite;

     $cmd=cmd::byId($pId);
     $cmd->setValue($valeur);
     $cmd->event($valeur);
  } catch (Exception $e) {
     echo "Erreur Exception lireValeurTableauXml = ".$e->getMessage();
  }
}


////////////////////////////
// Lance la lecture des données du fichier XML
$xml = getWesXml($User, $WesIP, $dataPage);
if($xml===null) {
  echo "Erreur Lecture XML\n";
}
else {
  
  //############################################################################
 
 //# Infos
 //############################################################################
   //lireValeurXml($xml, 'info', 'time', 1457, 0);
  
 //############################################################################
 
 //# Temperatures
 //############################################################################
  //lireValeurXml($xml, 'temp', 'SONDE1', 1507, 0);
  //lireValeurXml($xml, 'temp', 'SONDE2', 1508, 0);
  //lireValeurXml($xml, 'temp', 'SONDE3', 1899, 0);
  lireValeurXml($xml, 'temp', 'SONDE4', 1900, 0);
  lireValeurXml($xml, 'temp', 'SONDE5', 1901, 0);
  lireValeurXml($xml, 'temp', 'SONDE6', 1902, 0);
  //lireValeurXml($xml, 'temp', 'SONDE7', 1903, 0);
  //lireValeurXml($xml, 'temp', 'SONDE8', 1904, 0);
 //############################################################################
 
 
 //# TblanTIC1 Kwh HP / HC et Coût TIC1  
 //############################################################################
  
  lireValeurTableauXml($xml, 'TblanTIC1', 2, 1899, 0);    // valeur KW HP 
  lireValeurTableauXml($xml, 'TblanTIC1', 3, 1507, 0);    // valeur Coût HP
  lireValeurTableauXml($xml, 'TblanTIC1', 5, 1508, 0);    // valeur KW HC
  //lireValeurTableauXml($xml, 'TblanTIC1', 6, 1904, 0);    // valeur Côut HC

 //#############################################################################


  
} // Fin du else

ça ne dit pas quelles sont les valeurs que tu vas récupérer que le plugin Wes Control ne fait pas ? Merci pour la communauté.

Quant au script que tu utilises, aux dernières nouvelles il fonctionnait directement : Tutoriel - Lecture données WES depuis Jeedom (cjoint.com)

Slt @Salvialf
Le problème était qu’l n’avait pas fait un système Ok pour remonter les infos des données qui se trouve dans une « class » du type « tic » les mesures de puissance …
Ne connaissant pas bien le code, je comprends aisément qu’il était perdu …
Pour le plugin , je ne connais pas , pas besoin, donc je peux pas évaluer …
Ne nous lui en tenons pas trop rigueur …
J’ai lu le tutoriel que tu indiques , il est vrai que pas trop d’info pour récupérer ce qui est dans une « class » pour le reste OK … Je sais pas trop pourquoi d’ailleurs remonte comme cela … Doit être sa config du « wes » ?
Merci pour ton intervention…
PS: il lui manquait les valeurs $pXmlNoeud, $pXmlAttribut pour accéder aux infos en question …

Résumé

Sa fonction du début, on comprends facilemnt que cela cloche …

function lireValeurTableauXml($pXml, $pItem, $pId) {
  try {
 
     // récupération de la valeur du N° Item d'un enfant TAG <TD>
     $valeur = $pXml->td[$pItem];

Pour récupérer les valeurs 4071 etc…

data>
<TblanTIC1>
<tr class='A0'><td>Ann&eacute;e HP</td><td align=right>4071</td><td align=right>618</td></tr> <tr class='A0'><td>Ann&eacute;e HC</td><td align=right>2881</td><td align=right>330</td></tr>
</TblanTIC1>
<temp>
<SONDE1>10.6</SONDE1>
<SONDE2>21.0</SONDE2>
<SONDE3>0.0</SONDE3>
<SONDE4>22.2</SONDE4>
<SONDE5>21.4</SONDE5>
<SONDE6>20.8</SONDE6>
<SONDE7>0.0</SONDE7>
</temp>
</data>

Je connais ce lien je l’ai trouvé il y a quelques mois, il est une bonne trame par contre il y avais de petites erreurs avec d’autre recherches et un peu d’aide il a bien tourné pour compléter le plugin Wes

Maintenant je suis sur le Plugin WesControl, un beau plugin avec ses défauts de jeunesse.
En général si je trouve un truc bizarre je le remonte

[Difference entre compteur TIC Serveur Wes et TIc WesControl]

Dans l’ attente d’avoir des solutions je bidouille de mon coté,le but dans la mesure du possible est de passer sur mon jeedom à des choses simples avec le moins de code perso ( difficile à maintenir en fonction des évolutions du core jeedom et de raspbian)

Rappel du cas qui ne fonctionne pas pour moi,

Extra infos de DATA_JEEDOM.CGX

c aT1 <CONSO_ANNEE>%d</CONSO_ANNEE>

Résultat de l'execution  http://192.168.1.46/DATA_JEEDOM.CGX

<CONSO_ANNEE>4085</CONSO_ANNEE

Extra infos de mon D_SOND.CGX

t </info>
t <TblanTIC1>
t <![CDATA[
c ac1
t ]]>
t </TblanTIC1>

Résultat de l'execution  http://192.168.1.46/D_SOND.CGX

TblanTIC1>
<tr class='A0'><td>Ann&eacute;e HP</td><td align=right>4085</td><td align=right>621</td></tr> <tr class='A0'><td>Ann&eacute;e HC</td><td align=right>2894</td><td align=right>332</td></tr>
</TblanTIC1

Tu peux voir que conso année de ton cgx donne 4085 ceci ne correspond juste à HP de mon cgx, pour moi il manque donc le 2894 du HC
le résultat attendu pour CONSO_ANNEE devrait etre 4085 + 2894

De plus je trouve intéressent de pouvoir connaitre la conso et le coût pour HP et HC pour évaluer la répartition des dépenses et peux programmer ces materiels pour une optimisation

Voici pour quoi je bidouille dans l’attente de la correction .

Bonne journée

Je t’ai déjà répondu que c’était identifié et que ça allait être corrigé dans la prochaine version beta…

@Salvialf ,je sais bien que ma demande était prise en compte suite à d’autres échanges

Le but était de trouver une solution dans l’attente de la mise à disposition des évolutions, ne sachant pas sous combien de temps il y aurait une mise à jour,

Je pense que tu fais du cumulatif et que ma requête sera traité avec d’autres, je ne sais pas comment tu as classé tes priorités, vu que je te vois sur tous les fronts.

Bonne journée