Afficher infos variables dans log d'un scenario

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