MàJ V0_84A9 prise en compte conso Année HP et HC

Accueil Forums Serveur WES Mises à jours (Firmware et HTML) MàJ V0_84A9 prise en compte conso Année HP et HC

Ce sujet a 13 réponses, 3 participants et a été mis à jour par  cdlog2, il y a 1 an et 7 mois.

14 sujets de 1 à 14 (sur un total de 14)
  • Auteur
    Messages
  • #10913

    Richard
    Participant

    Bonjour @nicolas

    Sujet déjà évoqué vous aviez dit que le PB serait traité dans un prochain update

    <CONSO_ANNEE>4808</CONSO_ANNEE>
    Cela ne correspond pas à HP>4808< + HC>3549< détail des lignes ci dessous.

    Ai je fait une mauvaise manip ou la correction n’ai pas encore prise en compte
    Pour jour et mois c’est ok.

    résultat de 192.168.1.xx/DATA_tic.CGX:

    <data>
    <info>
    <time>18:24</time>
    <firmware>V0.84A9</firmware>
    </info>
    <TbljrTIC1>
    <tr><td>Jour HP</td><td align=right>7.7</td><td align=right>1.39</td></tr> <tr><td>Jour HC</td><td align=right>12.3</td><td align=right>1.65</td></tr>
    </TbljrTIC1>
    <TblmoTIC1>
    <tr><td>Mois HP</td><td align=right>70</td><td align=right>9.0</td></tr> <tr><td>Mois HC</td><td align=right>60</td><td align=right>5.0</td></tr>
    </TblmoTIC1>
    <TblanTIC1>
    <tr class=’A0′><td>Année HP</td><td align=right>4808</td><td align=right>733</td></tr> <tr class=’A0′><td>Année HC</td><td align=right>3549</td><td align=right>404</td></tr>
    </TblanTIC1>
    <tic1>
    <CONSO_JOUR>19.995</CONSO_JOUR>
    <COUT_JOUR>3.04</COUT_JOUR>
    <CONSO_MOIS>130.590</CONSO_MOIS>
    <COUT_MOIS>14.01</COUT_MOIS>
    <CONSO_ANNEE>4808</CONSO_ANNEE>
    <COUT_ANNEE>1137.01</COUT_ANNEE>
    </tic1>
    </data>

    Cordialement

    #10914

    cdlog2
    Participant

    Bonjour @richard

    En attendant que @nicolas corrige le Bug sur la Fct clé CGX Total Année KW qui doit être la somme de KW HP + KW HC au lieu de KW HP seul

    Vous pouvez provisoirement faire ce Calcul directement dans Jeedom
    Il suffit de rajouter dans votre Script WES les deux fonctions ci-dessous à la suite des fonctions existantes :

    // FONCTIONS EXISTANTES
    function getWesXml($pUser, $pWesIP, $pDataPage)
    function lireValeurXml($pXml, $pXmlNoeud, $pXmlAttribut, $pId, $pUnite)
    function lireValeurTableauXml($pXml, $pXmlNoeud, $pItem, $pId, $pUnite)

    // NOUVELLES FONCTIONS A RAJOUTER JUSTE EN DESSOUS A LA SUITE

    /*
    # Retourne la Valeur d’un flux XML type Tableau HTML relative à un Index dans le Tableau
    # Paramètres:
    # – $pXml: contient l’ensemble du document XML à lire.
    # – $pXmlNoeud: contient le nom du noeud parent XML à lire.
    # – $pItem: contient le n° Index du TAG à lire  (NOUVEAU)
    */
    function GetValeurTableauXml($pXml, $pXmlNoeud, $pItem) {
    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];
    return $valeur;

    } catch (Exception $e) {
    echo « Erreur Exception lireValeurTableauXml = « .$e->getMessage();
    return 0;
    }
    }

    /*
    # Permet d’assigner directement une Valeur à un IDX jeedom
    # – $valeur: Valeur à stocker
    # – $pId: Identifiant du virtuel Jeedom dans lequel la valeur de l’attribut XML doit être stockée.
    */
    function SetJeedomIdxValue($valeur, $pID) {

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

    // VERS FIN DU FICHIER

    //# 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
    //############################################################################
    //
    // AJOUT DU CALCUL TOTAL KW ANNEE  = SOMME DE KW An HP + KW An HC
      $KwAnHP =  GetValeurTableauXml($xml, ‘TblanTIC1’, 2);    // Récupère la valeur de KW Année HP
      $KwAnHC =  GetValeurTableauXml($xml, ‘TblanTIC1’, 5);    // Récupère la valeur de KW Année HC
      $TotKwAn = $KwAnHP + $KwAnHC;                            // $TotKwAn = Calcul total KW Année égal somme de : KW HP + KW HC
      SetJeedomIdxValue($TotKwAn, 1234);                       // Assigne la Valeur $TotKwAn (total KW Année) à l’Identifiant IDX 1234 Jeedom

    lireValeurTableauXml($xml, ‘TblanTIC1’, 2, 1899, 0);    // valeur KW HP
    //lireValeurTableauXml($xml, ‘TblanTIC1’, 3, 1901, 0);    // valeur Coût HP
    //lireValeurTableauXml($xml, ‘TblanTIC1’, 5, 1903, 0);    // valeur KW HC
    //lireValeurTableauXml($xml, ‘TblanTIC1’, 6, 1904, 0);    // valeur Côut HC

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

    Attention :  Vous le savez maintenant, le Blog transforme les caractères simple et double cote par des caractères visuel similaire mais qui pose pb en Language C

    Je vous joint un fichier TXT avec les deux fonctions à rajouter dans votre Script et un exemple d’appels à ces nouvelles fonctions comme ci-dessus

    Cdt

    Attachments:
    You must be logged in to view attached files.
    #10916

    cdlog2
    Participant

    RE : Petite correction : l’Argument $pId dans la Fonction  function SetJeedomIdxValue($valeur, $pId) doit être $pId et non $pID comme écrit précédemment.

    Je joint le fichier TXT corrigé

    Attachments:
    You must be logged in to view attached files.
    #10918

    Richard
    Participant

    Bonjour @cdlog2

    Merci pour ce fichier joint

    Je suis toujours au même niveau coté programmation, donc je ne sais toujours pas ou insérer votre fichier dans mon fichier existant joint.

    il y a certainement du ménage à faire dans l’existant avant d’insérer votre fichier.

    Pouvez vous m’aider et commenter pour que j’ arrive un jour à être un peu plus autonome (bout de programme à ne jamais toucher, bout de programme qu l on peux empiler les uns derrières les autres, exemple garder l’existant et ajouter votre fichier à un endroit particulier ou suppression par remplacement.

    Bonne journée

    Attachments:
    You must be logged in to view attached files.
    #10920

    cdlog2
    Participant

    Bonjour,

    J’ai précisé que l’ajout ( la copie ) de mes 2 nvelles Fonctions se fait à la suite des 3 fonctions existantes.

    Une Fonction en C ou CPP s’écrit : function suivi du Nom Fct (..,…) {……}

    J’ai rajouté ces deux Nvelles Fct. à la suite des 3 Fcts existantes ainsi que l’exemple d’appel, dans votre fichier TXT joint « Modif-Scenario-TIC.txt »

    Par contre comme je n’ai pas le contenu de votre Fichier DATA_tic.CGX avec le Code Clé Cgx  » Total KW Année »  qui pose PB, pourriez vous le transmettre (en format archive ZIP ) pour @nicolas  afin qu’il comprenne de quoi vous parlez.

    Vous donnez le résultat du CGX lu depuis votre navigateur mais @nicolas n’a pas votre fichier CGX spécifique pour voir le Code Clé qui nécessite une correction dans son mode de calcul  ( KW HP + HC ) !

    Cdt

     

    Attachments:
    You must be logged in to view attached files.
    #10922

    cdlog2
    Participant

    RE : correction : Une Fonction en PHP s’écrit : function suivi du Nom Fct (..,…) {……}

    Votre Script est écrit en PHP et non en C, je ne suis pas encore réveillé !

    Cdt

    #10923

    cdlog2
    Participant

    Re : Complément : Vous ferez attention à bien donner le même NOM défini dans votre fichier CGX spécifique qui identifie le Tag Parent du Tableau XML TIC1, avec le NOM du Tableau XML fourni en argument lors des Appels des Fonctions du Script pour en extraire les Infos : 

    Extrait du résultat de votre CGX que vous avez fourni dans votre 1er Post :

    <TblanTIC1>
    <tr class=’A0′><td>Année HP</td><td align=right>4808</td><td align=right>733</td></tr> <tr class=’A0′><td>Année HC</td><td align=right>3549</td><td align=right>404</td></tr>
    </TblanTIC1>

     

    Contenu de votre Script avec les appels pour en extraire les Infos du Tableau XML TIC 1

    //# TblanTIC1 Kwh HP / HC et Coût TIC1
    //############################################################################

    // Ajout MODIF DU 09 Aout 2021 ////
      // CALCUL TOTAL KW ANNEE = SOMME KW AN HP + KW AN HC

    $KwAnHP =  GetValeurTableauXml($xml, ‘TblanTICA1‘, 2);    // valeur KW HP    >>> TblanTICA1  pris en Exemple à vos Ligne Active
    $KwAnHC =  GetValeurTableauXml($xml, ‘TblanTICA1‘, 5);    // valeur KW HC   >>>  TblanTICA1 pris en Exemple à vos Ligne Active
    $TotKwAn = $KwAnHP + $KwAnHC;                                         // $TotKwAn = Calcul total KW Année : KW HP + KW HC
    SetJeedomIdxValue($TotKwAn, 1234);                                         // Assigne la Valeur $TotKwAn (total KW Année) à l’Identifian IDX 1234 Jeedom

    lireValeurTableauXml($xml, ‘TblanTICA1‘, 2, 253, 0);    // valeur KW HP    >>>>  ICI VOUS UTILISEZ ‘TblanTICA1‘ ??
    //lireValeurTableauXml($xml, ‘TblanTIC1’, 3, 1507, 0);    // valeur Coût HP    >>>>  ICI VOUS UTILISEZ ‘TblanTIC1’     ??
    lireValeurTableauXml($xml, ‘TblanTICA1‘, 5, 254, 0);    // valeur KW HC    >>>>  ICI VOUS UTILISEZ ‘TblanTICA1‘ ??
    //lireValeurTableauXml($xml, ‘TblanTIC1’, 6, 1904, 0);    // valeur Côut HC   >>>>  ICI VOUS UTILISEZ ‘TblanTIC1’     ??

    Si vous regardez bien ! Je fourni le même NOM ‘TblanTICA1’ dans mon exemple pour référencer le Tableau XML du TIC1 que celui que vous utilisez dans vos Lignes Actives (ceux non commentées) de : lireValeurTableauXml(…..), de votre fichier Script Scenario-TIC.txt que vous m’avez joint.

    Mais le NOM du Tag  qui fait référence dans votre fichier CGX donné en résultat dans votre 1er Post est <TblanTIC1>

    Soit c’est le Nom est <TblanTICA1> ou bien <TblanTIC1> dans votre fichier CGX, mais ce n’est pas possible de mélanger les deux NOM dans les appels depuis votre Script.

    Je vous laisse mettre de l’ordre dans les Noms fournis en référence. Modifier aussi l’Identifiant 1234 que j’ai utilisé pour envoyer à Jeedom le résultat du calcul Total Kw Année :  SetJeedomIdxValue($TotKwAn, 1234);

    Cdt

    #10924

    nicolas_cartelec
    Admin bbPress

    Richard, merci de m’envoyer votre fichier DATA_tic.CGX 

    #10925

    Richard
    Participant

    Bonjour Nicolas

    Comme demandé, voici en pièce jointe mon fichier Data_tic.cgx et fichier résultat.txt

    Attachments:
    You must be logged in to view attached files.
    #10927

    Richard
    Participant

    Bonjour cdlog2

    Pour afficher ceci

    SetJeedomIdxValue($TotKwAn, 1234); // Assigne la Valeur $TotKwAn (total KW Année) à l’Identifian IDX 1234 Jeedom

    Ne faut il pas une ligne du type LireValeur…..

    #10928

    Richard
    Participant

    Bonjour cdlog2

    Cela fonctionne avec SetJeedomIdxValue c’était juste pour savoir pourquoi on ne garde pas le même format de lecture LireVale….

    Bonne soirée

    #10929

    nicolas_cartelec
    Admin bbPress

    Pour info c aT1 n’a jamais existé, je le rajoute dans une mise à jour (dans la semaine)

    il y a une erreur dans votre fichier pour la date c’est:

    c h d <date>%02d/%02d/%02d</date>

    #10930

    Richard
    Participant

    Merci pour votre retour

    De mon coté j’ai corrigé la date c’est mieux, je n’avais pas de cas d’utilisation je n’avais donc pas vue le PB, j’utilise juste l’heure.

    Bonne soirée

    #10931

    cdlog2
    Participant

    Bonjour @richard,

    Pour répondre à votre question, pourquoi ne pas avoir utilisé le Terme « LireValeur » au début du NOM de la Fonction que j’ai nommé : SetJeedomIdxValue.

    La réponse est simple, cette fonction ne lit aucune Valeur et ne fait qu’enregistrer une Valeur, passé en argument, dans un Virtuel Jeedom Identifié par un n° ID fourni aussi comme argument. J’aurais pu lui donner le NOM : EnregistreUneValeurDansUnIdentifiantJeedom

    Pourquoi utiliser l’anglais comme langue ?
    1er : La langue anglaise est compréhensible de tous les Programmeurs du monde entier ce qui n’est pas vraie pour le Français ou tout autres Langues. C’est la Langue communément Utilisée par tous les Programmeurs.
    2eme : Les termes et raccourcies en anglais sont plus courts à écrire que leurs homologues écrits en Français ou tout autre langue

    Les Noms que vous donnez aux Fonctions, hormis ceux existantes dans les librairies des API de Base, sont seulement des Noms Symboliques pour référencer votre Fonction lorsque vous l’écrivez. Vous pouvez lui donner le Nom que vous voulez. Le but malgré tout est de pouvoir décrire de façon sommaire ce que fait la Fonction de par son NOM Symboliques.

    Prenez la Fonction lireValeurXml qui existe de base dans votre Script. Lorsque l’on interpréte le NOM de cette fonction, on suppose que la fonction Lit une Valeur XML ???.

    Hors cette Fonction fait deux choses. En effet elle Lit la Valeur d’un TAG d’un Flux XML puis elle enregistre cette Valeur dans un Virtuel Jeedom Identifié par un N° ID.

    Moi j’aurais donné à cette Fonction le NOM Symbolique : GetXmlTagValueAndSetVirtualID, ce qui décrit de façon plus compréhensible ce que fait réellement la Fonction.

    Quelque soit le NOM donné à une Variable ou à une Fonction, le But est de respecter dans le Programme lors de leur utilisation, Le NOM ainsi que la Caste tel que défini.

    Cdt

14 sujets de 1 à 14 (sur un total de 14)

Vous devez être connecté pour répondre à ce sujet.