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

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

  • Post
    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

      0
      0
    Vous lisez 12 fils de discussion
    • Replies
        cdlog2
        Modérateur

          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.
          0
          0
          cdlog2
          Modérateur

            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.
            0
            0
            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.
              0
              0
              cdlog2
              Modérateur

                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.
                0
                0
                cdlog2
                Modérateur

                  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

                  0
                  0
                  cdlog2
                  Modérateur

                    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

                    0
                    0
                    nicolas_cartelec
                    Maître des clés

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

                      0
                      0
                      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.
                        0
                        0
                        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…..

                          0
                          0
                          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

                            0
                            0
                            nicolas_cartelec
                            Maître des clés

                              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>

                              0
                              0
                              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

                                0
                                0
                                cdlog2
                                Modérateur

                                  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

                                  0
                                  0
                              Vous lisez 12 fils de discussion
                              • Vous devez être connecté pour répondre à ce sujet.