Integration WES dans Home assistant

Serveur WES Forums Serveur WES Remarques et demandes d’évolutions Integration WES dans Home assistant

Mots-clés : 

  • Ce sujet contient 17 réponses, 5 participants et a été mis à jour pour la dernière fois par DomoYop, le il y a 2 années.
Vous lisez 15 fils de discussion
  • Auteur
    Articles
    • #11017
      sibolbe1
      Participant

      Bonjour,

      Je cherche à intégrer / plugin dans Home Assistant pour récupérer les consommations électriques / eau

      Y a t il un plug-in en cours de dev ?. Je pense que ce serait une sacrée valeur ajoutée

      L’API WES renvoie la réponse sous format XML (pas du JSON) ?

      Merci

      Cordialement

    • #11018
      cdlog2
      Modérateur

      Bonjour,

      Je ne connais pas Home-Assistant, mais je suppose que cette interface est capable comme les autres (Jeedom, Domoticz,…) d’envoyer des requêtes au format HTTP et ensuite d’analyser et en Extraire au retour les Datas rendus.

      Le BIN du WES utilise le protocole d’échange de la gestion de fichier type CGX, qui est associée à ARM RL-TCPnet, une implémentation du protocole TCP/IP utilisée via les API de ARM KEIL,

      En deux mots, ce protocole permet d’associer au début de chaque ligne du fichier CGX, des Codes Clé. qui pointent vers une bibliothèque de Fonctions spécifiques du WES, Ces Fonctions spécifiques WES vont retourner leurs résultats vers l’API CGX qui va ensuite rechercher dans la même ligne identifiée par ce Code Clé, à restituer les Valeurs rendues des Fct vers des symboles %(x) tel que %s, %d, %0.2f etc …

      Le code Clé CGX défini par la lettre ‘ t ‘ en début d’une ligne d’un fichier CGX, est reconnu par les API pour définir que cette ligne est seulement du Texte qui doit être restitué tel quel dans le résultat rendu de la requête(sans le Code ‘ t ‘ bien sûr). Le WES n’analyse pas le contenu de cette ligne.

      Tout les textes définis après un Code ‘ t ‘ seront donc renvoyés tel quel sans modification. Tous les Textes compris entre un Code Clé de début de ligne et les symbole %(x) qui vont recevoir les résultats, seront renvoyés tel quel sans modification. Le WES n’analyse pas le contenu de ce Texte intermédiaire.

      Donc il est très facile de formater le Fichier CGX afin de demander à avoir un résultat rendu par ces requêtes au format souhaité: XML, JSON etc.

      Exemple : si vous éditez par exemple le fichier DATA.CGX du WES, qui définie en première ligne après le Code ‘ t ‘ que le résultat sera un entête de fichier type XML.  Voici le début de ce fichier :

      t <?xml version= »1.0″ encoding= »UTF-8″?>          # Code t ligne Texte sera rendu au retour de la requête > Entête d’un format fichier en XML
      t <data>                                                                     # Code t ligne Texte sera rendu au retour de la requête > pas interprété par le WES
      t <info>                                                                     # Code t ligne Texte sera rendu au retour de la requête > pas interprété par le WES
      c g d <date>%02d/%02d/%02d</date>                    # ligne avec Code Clé  c g d = Fct WES >> lire la Date > résultat dans %02d/%02d/%02d
      c h h <time>%02d:%02d</time>                              # ligne avec Code Clé c h h = Fct WES >> lire le Time > résultat dans %02d:%02d
      c v v <firmware>%s</firmware>                              # ligne avec Code Clé c v v = Fct WES  >> lire la version Firmware > résultat dans %s
      t </info>                                                                     # Code t ligne Texte sera rendu au retour de la requête > pas interprété par le WES

      Maintenant rien ne vous empêche de réécrire ce fichier DATA.CGX et lui donner un format de réponse type JSON

      t {« myjson »: [{
      c g d date : %02d/%02d/%02d ,
      c h h time : %02d:%02d ,
      c v v  firmware : %s }
      t ]}

      Le résultat en retour à la requête du WES sera sous ce format JSON

      Cdt

    • #11019
      cdlog2
      Modérateur

      RE: En lançant la requête depuis votre navigateur : 192.168.x.x/data.cgx vous aurez en retour toutes les données demandés par les Codes Clé définis dans ce Data.cgx.

      Vous y trouverez certainement vos valeurs de consommations que vous voulez récupérer. Il suffit de réorganiser le fichier Data.cgx dans un format JSON en utilisant les Codes Clé qui vous intéresse et recréer votre propre fichier CGX que vous placez dans la racine de la carte SD et faire appel à ce fichier comme requête HTTP.

    • #11020
      cdlog2
      Modérateur

      RE : Vous pouvez donner l’extension JSON à votre fichier au lieu de CGX, le WES n’analyse pas cet extension !

    • #11021
      cdlog2
      Modérateur

      Re: Y a t il un plug-in en cours de dev ?. Je pense que ce serait une sacrée valeur ajoutée

      Les plugins sont développés par les personnes qui maintiennent votre interface Home Assistant. C’est les cas pour toutes autres Interfaces.

      Certainement via le Blog de Home Assistant, vous trouverez des exemples de Scripts qui permettent de lire les infos rendues par des Requêtes HTTP au format JSON relatifs à des Plugins existants.

      Il suffit de s’en inspirer et de retranscrire le code pour récupérer les Datas du WES, si vous créez votre propre fichier CGX formaté JSON comme expliqué ci-dessus.

       

    • #11022
      cdlog2
      Modérateur

      RE : Si vous trouvez des exemples de Script de plugin existant (PHP, Python, JS, autres ?) qui récupèrent les données formatées JSON d’une requête HTTP et que vous n’avez pas de notion en programmation, envoyez ce script en pièce jointe sous forme d’archive ZIP.

      Je jetterais un coup d’oeil sur le SCRIPT afin de voir si j’arrive à l’adapter à vos besoins pour lire les infos du WES.

      Cdt

    • #11023
      cdlog2
      Modérateur

      Re: J’ai voulu tester le Data.cgx remis en forme au format JSON. j’ai donc crée un fichier DataJson.cgx qui fait le JOB. Trouvez le fichier dans mon archive jointe.

      Par contre, je dois corriger deux choses par rapport à mes précédents propos.

      1er ) Les fichiers CGX doivent bien avoir l’extension CGX et ne fonctionne pas avec l’extension JSON.

      2eme) Si vous lancez depuis votre navigateur, une requête CGX sur un Fichier configuré avec un format JSON, votre navigateur vous affichera une erreur XML. Par contre le contenu du JSON est bien reçue. En mode Console Réseau, F12, on voit très bien la réponse de la requête avec les datas formatés JSON.

      Reste à voir si Home-Assistant vérifie la réponse des requêtes et le format des datas reçus comme Firefox, sachant que le WES renvoie un résultat basé sur un header http de type xml.

      Voici ce que mon WES me renvoie lorsque j’envoie une requête Cgx sur mon fichier DataJson.cgx joint :  192.168.x.x/DataJson.cgx

      {
         « data »:{
            « info »:{
               « date »: »21/08/2021″,
               « time »: »06:06″,
               « firmware »: »V0.84A4″
            },
            « tic1 »:{
               « ADCO »: »021428325943″,
               « OPTARIF »: »HC. »,
               « ISOUSC »:60,
               « PTEC »: »H. Creuses »,
               « PAP »:660,
               « PAPI »:0,
               « IINST »:3,
               « IINST1 »:0,
               « IINST2 »:0,
               « IINST3 »:0,
               « TENSION1 »:0,
               « TENSION2 »:0,
               « TENSION3 »:0,
               « IMAX »:67,
               « IMAX1 »:0,
               « IMAX2 »:0,
               « IMAX3 »:0,
               « PEJP »:0,
               « DEMAIN »: »pas connue ! »,
               « BASE »: »000000000″,
               « H_PLEINE »: »000000001″,
               « EJPHN »: »000000000″,
               « EJPHPM »: »000000000″,
               « BBRHCJB »: »000000000″,
               « BBRHPJB »: »000000000″,
               « BBRHCJW »: »000000000″,
               « BBRHPJW »: »000000000″,
               « BBRHCJR »: »000000000″,
               « BBRHPJR »: »000000000″,
               « H_WeekEnd »: »000000000″,
               « HC_Semaine »: »000000000″,
               « HP_Semaine »: »000000000″,
               « HC_WeekEnd »: »000000000″,
               « HP_WeekEnd »: »000000000″,
               « HC_Mercredi »: »000000000″,
               « HP_Mercredi »: »000000000″,
               « PRODUCTEUR »: »000000000″
            },
            « tic2 »:{
               « ADCO »: »031662585707″,
               « OPTARIF »: »HC. »,
               « ISOUSC »:60,
               « PTEC »: »H. Creuses »,
               « PAP »:720,
               « PAPIJ »:0,
               « IINST »:3,
               « IINST1 »:0,
               « IINST2 »:0,
               « IINST3 »:0,
               « TENSION1 »:0,
               « TENSION2 »:0,
               « TENSION3 »:0,
               « IMAX »:90,
               « IMAX1 »:0,
               « IMAX2 »:0,
               « IMAX3 »:0,
               « PEJP »:0,
               « DEMAIN »: »pas connue ! »,
               « BASE »: »000000000″,
               « H_PLEINE »: »000000001″,
               « EJPHN »: »000000000″,
               « EJPHPM »: »000000000″,
               « BBRHCJB »: »000000000″,
               « BBRHPJB »: »000000000″,
               « BBRHCJW »: »000000000″,
               « BBRHPJW »: »000000000″,
               « BBRHCJR »: »000000000″,
               « BBRHPJR »: »000000000″,
               « H_WeekEnd »: »000000000″,
               « HC_Semaine »: »000000000″,
               « HP_Semaine »: »000000000″,
               « HC_WeekEnd »: »000000000″,
               « HP_WeekEnd »: »000000000″,
               « HC_Mercredi »: »000000000″,
               « HP_Mercredi »: »000000000″,
               « PRODUCTEUR »: »000000000″
            },
            « tic3 »:{
               « ADCO »: »Pas Dispo »,
               « OPTARIF »: »Pas dispo »,
               « ISOUSC »:0,
               « PTEC »: »NON Dispo ! »,
               « PAP »:0,
               « PAPIJ »:0,
               « IINST »:0,
               « IINST1 »:0,
               « IINST2 »:0,
               « IINST3 »:0,
               « TENSION1 »:0,
               « TENSION2 »:0,
               « TENSION3 »:0,
               « IMAX »:0,
               « IMAX1 »:0,
               « IMAX2 »:0,
               « IMAX3 »:0,
               « PEJP »:0,
               « DEMAIN »: »pas connue ! »,
               « BASE »: »000000000″,
               « H_PLEINE »: »000000007″,
               « EJPHN »: »000000000″,
               « EJPHPM »: »000000000″,
               « BBRHCJB »: »000000000″,
               « BBRHPJB »: »000000000″,
               « BBRHCJW »: »000000000″,
               « BBRHPJW »: »000000000″,
               « BBRHCJR »: »000000000″,
               « BBRHPJR »: »000000000″,
               « H_WeekEnd »: »000000000″,
               « HC_Semaine »: »000000000″,
               « HP_Semaine »: »000000000″,
               « HC_WeekEnd »: »000000000″,
               « HP_WeekEnd »: »000000000″,
               « HC_Mercredi »: »000000000″,
               « HP_Mercredi »: »000000000″,
               « PRODUCTEUR »: »000000000″
            },
            « impulsion »:{
               « INDEX1 »:1073741824.1097007020,
               « INDEX2 »:-1073741824.1099116240,
               « INDEX3 »:-1073741824.1099188048,
               « INDEX4 »:-1073741824.1098810259,
               « INDEX5 »:0.000,
               « INDEX6 »:0.000
            },
            « pince »:{
               « I1 »:2.78,
               « INDEX1 »:30.047,
               « IDXINJECT1 »:808612.375,
               « MODINJECT1 »:0,
               « I2 »:0.28,
               « INDEX2 »:9.492,
               « IDXINJECT2 »:2384473.250,
               « MODINJECT2 »:0,
               « I3 »:0.00,
               « INDEX3 »:785227.875,
               « IDXINJECT3 »:3040836.000,
               « MODINJECT3 »:0,
               « I4 »:0.00,
               « INDEX4 »:3192022.500,
               « IDXINJECT4 »:3268085.000,
               « MODINJECT4 »:0,
               « V »:0
            },
            « temp »:{
               « SONDE1 »:24.8,
               « SONDE2 »:25.0,
               « SONDE3 »:24.3,
               « SONDE4 »:19.1,
               « SONDE5 »:20.3,
               « SONDE6 »:20.8,
               « SONDE7 »:20.8,
               « SONDE8 »:20.9,
               « SONDE9 »:23.5,
               « SONDE10 »:22.9,
               « SONDE11 »:22.6,
               « SONDE12 »:23.2,
               « SONDE13 »:24.4,
               « SONDE14 »:24.2,
               « SONDE15 »:46.8,
               « SONDE16 »:0.0,
               « SONDE17 »:0.0,
               « SONDE18 »:0.0,
               « SONDE19 »:0.0,
               « SONDE20 »:0.0,
               « SONDE21 »:0.0,
               « SONDE22 »:0.0,
               « SONDE23 »:0.0,
               « SONDE24 »:0.0,
               « SONDE25 »:0.0,
               « SONDE26 »:0.0,
               « SONDE27 »:0.0,
               « SONDE28 »:0.0,
               « SONDE29 »:0.0,
               « SONDE30 »:0.0
            },
            « relais »:{
               « RELAIS1″: »ON »,
               « RELAIS2″: »OFF »
            },
            « entree »:{
               « ENTREE1 »:0,
               « ENTREE2 »:0
            },
            « analogique »:{
               « AD1 »:231.76,
               « AD2 »:238.98,
               « AD3 »:245.72,
               « AD4 »:482.14
            },
            « switch_virtuel »:{
               « SWITCH1 »:0,
               « SWITCH2 »:0,
               « SWITCH3 »:0,
               « SWITCH4 »:0,
               « SWITCH5 »:1,
               « SWITCH6 »:1,
               « SWITCH7 »:0,
               « SWITCH8 »:0,
               « SWITCH9 »:0,
               « SWITCH10 »:0,
               « SWITCH11 »:0,
               « SWITCH12 »:0,
               « SWITCH13 »:0,
               « SWITCH14 »:0,
               « SWITCH15 »:0,
               « SWITCH16 »:0,
               « SWITCH17 »:0,
               « SWITCH18 »:0,
               « SWITCH19 »:0,
               « SWITCH20 »:0,
               « SWITCH21 »:0,
               « SWITCH22 »:0,
               « SWITCH23 »:0,
               « SWITCH24 »:0
            },
            « variables »:{
               « VARIABLE1 »:0.00,
               « VARIABLE2 »:0.00,
               « VARIABLE3 »:0.00,
               « VARIABLE4 »:0.00,
               « VARIABLE5 »:0.00,
               « VARIABLE6 »:0.00,
               « VARIABLE7 »:0.00,
               « VARIABLE8 »:0.00
            }
         }
      }

       

      Cdt

       

      Attachments:
      You must be logged in to view attached files.
    • #12443
      o0larry0o
      Participant

      Bonjour à tous,

      Je me permet de relancer le sujet.

      Tout nouveau sur Home Assistant, j’ai comme projet de pouvoir utiliser les infos de mon WES pour faire des calcul d’énergies, disposer d’automatisation etc.

      J’ai trouvé un post intéressant d’une personne qui à réussi à intégrer les infos du WS dans HA.

      https://forum.hacf.fr/t/integration-du-module-wes-v2-de-la-societe-cartelectronic/1099/3

      Néanmoins, j’ai quelques problème à comprendre la logique du WES

      J’aimerais pouvoir afficher (dans un premier temps) comme dans le wes,

      – la puissance en W consommé

      – la quantité de m3 de gaz consommé en instantané et en cumulé

      Je ne parviens pas à trouver ces infos dans les différent cgx que j’ai vu (data, homeval, tic1, je ne trouve pas le CGX dédié à mon impulsion gaz)

       

      Pourriez vous m’aider ?

      D’avancer merci

      • Cette réponse a été modifiée le il y a 2 années par o0larry0o.
    • #12445
      o0larry0o
      Participant

      Par exemple je regarde dans le homeval.cgx, et je ne comprend pas à quoi correspond la variable « TIC » qui comprend 4 valeur, dont la puissance consommé en VA (je crois)

      <array>

      <var>TIC</var>

      <value>0,290,0,0</value>

      </array>

    • #12448
      nicolas_cartelec
      Maître des clés

      Regardez le fichier data.cgx les autres fichiers sont formatés pour l’interface web du WES.

      • #12476
        o0larry0o
        Participant

        Justement,

        de ce que je comprend dans les autres fichiers se trouvent les valeurs issues de calcul du WES non ? pour le TIC, le Pulse etc.

        Dans le lien que tu donnes, dans un autre post:

        https://forum.hacf.fr/t/integration-du-module-wes-v2-de-la-societe-cartelectronic/1099/4

        Je ne comprends pas ce que fait la personne, en particulier en récupérant les valeurs de homeval

        <span class= »hljs-attr » style= »color: #000080; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace; font-size: 15.008px; white-space: pre; »>wespcewatt :</span> <span class= »hljs-attr » style= »color: #000080; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace; font-size: 15.008px; white-space: pre; »>friendly_name:</span> <span class= »hljs-string » style= »color: var(–hljs-string); font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace; font-size: 15.008px; white-space: pre; »>wespcewatt</span> <span class= »hljs-attr » style= »color: #000080; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace; font-size: 15.008px; white-space: pre; »>value_template:</span> <span class= »hljs-string » style= »color: var(–hljs-string); font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace; font-size: 15.008px; white-space: pre; »>>- {{ states.sensor.weshomeval.attributes[« array »][2][« value »] }}</span>

        Je ne vois pas a quoi correspond PCE Watt (si je lis bien le nom de la variable)

        Dans mon homeval, Array 2 correspond à :

        <span class= »html-tag » style= »font-family: monospace; font-size: 13px; »><var>VOLT1</span><span class= »html-tag » style= »font-family: monospace; font-size: 13px; »></var></span>

    • #12477
      cdlog2
      Modérateur

      Bonjour,

      La majorité des Infos du WES peuvent être récupérées par requête HTTP sur le fichier DATA.CGX. < http://login:motpasse@ip-wes/data.cgx >
      Le Serveur WES renvoie une suite de <TAG>valeur</TAG> dont la valeur contient l’Infos ciblée.

      Il suffit depuis un Script propre à votre Interface Domotique de créer une Fonction afin de récupérer dans le résultat rendu de la requête DATA.CGX, la Valeur relative au nom d’un TAG de ce DATA.CGX.

      Exemple de fonction en PHP

      /*
      # Retourne la Valeur d’un flux XML type TAG
      # 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 XML à lire.
      */
      function GetValeurXml($pXml, $pXmlNoeud, $pXmlAttribut) {
      try {

      $valeur = $pXml->getElementsByTagName($pXmlNoeud)->item(0)->getElementsByTagName($pXmlAttribut)->item(0)->nodeValue;
      return $valeur;

      } catch (Exception $e) {
      log::add(« WES », « INFO », « XML erreur on Id: ».$pId. »: ».$e->getMessage(), «  »);
      return 0:
      }
      }

      /*
      #  exemple d’appel à cette function GetValeurXml pour récupérer depuis Tampon XML, reçu par une requête GET sur le DATA.CGX du WES,
      #  l’attribut <SONDE1> du Noeud Parent <TEMP>
      */
      $Sonde1 = GetValeurXml($xml, ‘TEMP’, ‘SONDE1’);  // On récupère la valeur de la Sonde1 depuis le XML reçu du DATA.CGX

      Parfois on ne trouve pas une info spécifique dans le fichier DATA.CGX, mais cette Info est lisible dans une Page HTM Lambda. On peut éventuellement trouver comment est généré cette Info dans cette Page HTM. La plus par des valeurs CGX sont identifiable par un nom ID= »xxxx » dans le HTM, La plus part du Temps, vous pouvez facilement trouver le ID d’une valeur qui vous intéresse dans cette Page HTM.

      Faire un clic droit sur la Valeur dans la Page HTML concernée, puis si vous utilisez Firefox par exemple, vous cliquer sur Inspecter.
      La Console du Navigateur va s’ouvrir et vous verrez la ligne HTM concernée mise en sélection (bleu) Il suffit de chercher le  ID= »xxxx » dans cette ligne.

      Puis ensuite pour Trouver les fichier CGX qui sont lus par la Page HTML, il suffit d’ouvrir le fichier HTML de la Page concernée, depuis un Editeur de Texte (Bloc-Notes, autres ..) et vous descendez dans le fichier HTM jusqu’à trouver : <script type= »text/javascript »>
      Juste en dessous ou pas loin,  vous trouvez 2 parfois 3 lignes qui vous permet de trouver les Fichier CGX utilisés pour gérer cette Page HTM

      Exemple pour le fichier TICGRAPH.HTM

      <script type= »text/javascript »>

      var ticgraph = new periodicObj(« WEBPROG/CGX/TICGRAPH.CGX »);
      var ticconso = new periodicObj(« WEBPROG/CGX/TICCONSO.CGX »);

      Un des CGX sert à créer les Textes de base de la Page HTM et l’autre CGX est lancé périodiquement suivant une Tempo, afin de récupérer les Valeurs des divers champs du HTM

      Donc vous avez le Nom de l’ID du champs de la valeur que vous souhaité et qui est générée dans la Page HTM et vous connaissez les fichiers CGX utilisées dans cette Page, Il suffit de trouvez cet ID dans les CGX du HTM pour trouvez la Ligne avec le Code Clé CGX qui sera interprété par le Serveur WES pour remplir à l’emplacement du %(?) dans la ligne, la Valeur associé au Code clé et l’ID du HTM.

      Donc ayant le Code Clé du Serveur WES qui renvoie cette Valeur que vous souhaitez par requête, il vous suffit de créer votre Propre fichier ex: PERSO.CGX à placé dans la racine de la carte mémoire SD du WES,

      Vous avez le Code Clé de l'<ID> lu depuis le fichier CGX du HTM  (exemple de Code Clé « c Xs1″ ) il vous suffit maintenant de formater votre propre ligne dans votre fichier PERSO.CGX comme vous le souhaitez, par exemple : c Xs1 <MON -ID> %(?) </MON -ID>

      Vous pourrez ensuite récupérer votre Valeur souhaitée pour intégration, en cherchant votre <MON -ID> dans le résultat de la Requête que vous lancée au Serveur WES , sur votre fichier PERSO.CGX : http://login:motpasse@ip-wes/PERSO.CGX.

      Bon voila, je vous ai expliqué comment trouver la majorité des Code Clé du Serveur WES fin de récupérer une valeur lambda souhaitée.

      Par ailleurs pour simplifier les écritures programme pour les HTM, mais complexcifier un peu la mécanique décrite précédemment, le Serveur WES peut parfois générer en interne du Code HTM qui sera placé dynamiquement dans une Page HTM qui est en visuel. Vous pouvez trouvez des Code Clé CGX qui vous retourne une Array XML formatée en Tableau html (<tr><td> etc…)

      Effectivement dans certains fichiers CGX, le WES Formate depuis le Serveur, une Array au format d’un Tableau XML HTML
      Ce tableau html est ensuite inséré directement dans la Page HTM à l’endroit ou ce trouve un ID= »xxxxx » défini dans le HTM

      Exemple: Insertion du bloc TIC1, qui se trouve en dessous le graph de la Page TICGRAPH.HTM, et qui reçoit les valeurs Conso kWh et Coût >> jour, mois et Année sous forme de tableaux HTML récupéré par une requête sur le fichier TICGRAPH.CGX

      La déclaration id= »CPT1_table1″ défini dans le fichier TICGRAPH.HTM l’endroit ou va se placer le Tableau : <table class= »table table-hover table-condensed » id= »CPT1_table1″></table>

      La déclaration des Codes Clé CGX pour demander au Serveur WES de formater ce tableau HTM TIC1 (conso coût, jour mois année) via le fichier TICGRAPH.CGX :

      t <html><id>CPT1_table1</id><value><![CDATA[
      t <colgroup><col></col><col class= »bg-info »></col><col id= »COUL1″></col></colgroup>
      t <tr><th id= »CONPROD1″ /><th style= »text-align:center »>kWH</th>
      t <th><span id= »GAINCOUT1″/> <span class= »money »/></th></tr>
      c jc1
      c mc1
      c ac1
      c tc1
      t ]]></value></html>

      Et enfin le résultat du Tableau HTML, rendu par la requête CGX au Serveur WES, relatif au Code Clé CGX :

      <table class= »table table-hover table-condensed » id= »CPT1_table1″><colgroup><col><col class= »bg-info »><col id= »COUL1″ class= »bg-warning »></colgroup><tbody><tr><th id= »CONPROD1″>Consommation</th><th style= »text-align:center »>kWH</th><th><span id= »GAINCOUT1″>Coût</span> <span class= »money »>€</span></th></tr><tr><td>Jour HP</td><td align= »right »>8.4</td><td align= »right »>1.47</td></tr>
      <tr><td>Jour HC</td><td align= »right »>6.7</td><td align= »right »>0.88</td></tr>
      <tr><td>Mois HP</td><td align= »right »>66</td><td align= »right »>11.7</td></tr>
      <tr><td>Mois HC</td><td align= »right »>34</td><td align= »right »>3.6</td></tr>
      <tr class= »A0″><td>Année HP</td><td align= »right »>2922</td><td align= »right »>485</td></tr>
      <tr class= »A0″><td>Année HC</td><td align= »right »>2329</td><td align= »right »>292</td></tr>
      <tr class= »P0″ style= »display: none; »><td>Période HP</td><td align= »right »>2881</td><td align= »right »>480</td></tr>
      <tr class= »P0″ style= »display: none; »><td>Période HC</td><td align= »right »>2292</td><td align= »right »>289</td></tr>
      </tbody></table>

      On retrouve dans la réponse du CGX, le id= »CPT1_table1″ qui est déclaré en dur côté TICGRAPH.HTM

      C’est à cette endroit dans le HTML ou sera inséré ce Tableau HTML.

      Comme ce Tableau HTM ainsi rendu est un peu fouillis on peut via les Code Clé CGX, séparer les Infos JOUR, MOIS et ANNEE pour plus de clarté et cela permet de récupérer les INFO de façon plus lisible depuis une Fonction à déclarer dans votre Script Domotique.

      Je vais mettre ci-dessous un exemple de fonction écrit en PHP pour récupérer Un à Un les divers data Reçus.
      Mais auparavant on va faire en sorte d’éclater ce tableau CPT1_table1 par 3 Tableaux >> JOUR, MOIS et ANNEE pour plus de clarté

      Les Commandes CGX ci-dessous peuvent être incérer dans votre Fichier PERSO.CGX pour récupérer le ou les Tableaux qui vous intéresse. Il faut coller dans votre  PERSO.CGX sans Espace, peut importe placé ou dans le fichier (Attention, pas de ligne vide et la fin de Tous les fichiers CGX doivent se terminer par un point ‘.’) Vous pouvez documenter une ligne en utilisant un  » #  » en début de commentaire.

      # AJOUT du Tableau HTML TIC Conso coût JOUR
      t <html><TbljrTIC1>
      t <![CDATA[
      c jc1
      t ]]>
      t </TbljrTIC1></html>
      #
      #
      # AJOUT du Tableau HTML TIC Conso coût MOIS
      t <html><TblmoTIC1>
      t <![CDATA[
      c mc1
      t ]]>
      t </TblmoTIC1></html>
      #
      #
      # AJOUT du Tableau HTML TIC Conso coût ANNEE
      t <html><TblanTIC1>
      t <![CDATA[
      c ac1
      t ]]>
      t </TblanTIC1></html>
      #

      Si vous regardez bien j’ai déclaré 3 TAG CGX, TbljrTIC1, TblmoTIC1, TblanTIC1, un TAG pour identifier chacun des 3 tableaux,
      chaque TAG permettant de Cibler par une Fonction PHP par Exemple, chaque Tableaux HTML qui seront crée comme résultat de la requête PERSO.CGX envoyé au WES.

      Le résultat rendu par le Serveur WES par rapport à ces Codes Clé CGX :

      <html>
      <TbljrTIC1>
      <tr><td>Jour HP</td><td align=right>8.1</td><td align=right>1.42</td></tr> <tr><td>Jour HC</td><td align=right>6.7</td><td align=right>0.88</td></tr>
      </TbljrTIC1>
      </html>

      <html>
      <TblmoTIC1>
      <tr><td>Mois HP</td><td align=right>66</td><td align=right>11.6</td></tr> <tr><td>Mois HC</td><td align=right>34</td><td align=right>3.6</td></tr>
      </TblmoTIC1>
      </html>

      <html>
      <TblanTIC1>
      <tr class=’A0′><td>Ann&eacute;e HP</td><td align=right>2922</td><td align=right>485</td></tr> <tr class=’A0′><td>Ann&eacute;e HC</td><td align=right>2329</td><td align=right>292</td></tr>
      </TblanTIC1>
      </html>

      Chaque valeur à récupérer pour chacun des 3 Tableaux HTML ce trouve entre des TAG <TD>valeur<TD>
      Si j’éclate le 1er Tableau nommé TbljrTIC1 (Data JOURS) on retrouve de façon plus lisible les divers info rendus

      <tr>
      <td>Jour HP</td>
      <td align=right>8.1</td>
      <td align=right>1.42</td>
      </tr>
      <tr>
      <td>Jour HC</td>
      <td align=right>6.7</td>
      <td align=right>0.88</td>
      </tr>

      On trouve dans le 1er <TD> ou bien à l’Index 0 de l’array du Tableau HTML la valeur « Jour HP »
      On trouve dans le 2eme <TD> ou bien à l’Index 1 de l’array du Tableau HTML la valeur « 8.1 » qui est le Nb Kwh Jour heure plaine
      On trouve dans le 3eme <TD> ou bien à l’Index 2 de l’array du Tableau HTML la valeur « 1.42 » qui le coût Jour heure plaine
      On trouve dans le 4eme <TD> ou bien à l’Index 3 de l’array du Tableau HTML la valeur « Jour HC »
      On trouve dans le 5eme <TD> ou bien à l’Index 4 de l’array du Tableau HTML la valeur « 6.7 » qui est le nb Wh Jour heure creuse
      On trouve dans le 6eme <TD> ou bien à l’Index 5 de l’array du Tableau HTML la valeur « 0.88 » qui est le coût Jour heure pleine

      Donc il suffit de créer une Fonction ex: PHP, dans votre Script Domotique qui puisse récupérer depuis un Tableau html nommé, dans notre exemple TbljrTIC1, un des indexs de l’Array Tableau HTM.

      On doit en 1er lieu filtrer du Tableau tout les char et mot ce qui ne servent pas de façon à ne garder que

      <td>Jour HP</td>  >> Index 0 de l’array
      <td>8.1</td>      >> Index 1 de l’array
      <td>1.42</td>     >> Index 2 de l’array
      <td>Jour HC</td>  >> Index 3 de l’array
      <td>6.7</td>      >> Index 4 de l’array
      <td>0.88</td>     >> Index 5 de l’array

      Voici un exemple de fonction PHP qui fait ce travail

      /*
      # Retourne la Valeur d’un flux XML type Tableau HTML relatif à un Index dans ce Tableau
      # Paramètres:
      # – $pXml: contient l’ensemble du document XML à lire.
      # – $pXmlNoeud: contient le nom du noeud parent XML à lire.
      # – $nItem: contient le n° Index du TAG <td> à lire
      */
      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;
      }
      }

      Voici comment on appelle cette fonction en PHP

      // Exemple Récupération de valeurs issues de Tableau type XML/HTML
      //##################################################################
      //
      // récup du tableau TbljrTIC1 la valeur Kwh et coût HP JOUR

      $KwJourHP =  GetValeurTableauXml($xml, ‘TbljrTIC1’, 1);    // valeur KW HP TIC1
      $CoutJourHP =  GetValeurTableauXml($xml, ‘TblanTIC1’, 1);  // valeur Coût HC TIC1

      Voila, Voila, un peu détaillé, peut être un peu compliqué pour certain, comment vous pouvez récupérer les Infos de ces Tableaux XML formaté HTML (Array comme vous les cité)

      ATTENTION: Si vous créé vos PROPRE FICHIER CGX, C’est uniquement sous votre responsabilité si cela induit des erreurs dans votre WES. Toujours faire un Backup de la carte SD du WES avant de bricoler dedans.

      En Dehors du fichier DATA.CGX tel que défini par défaut, qui restera compatible pour toutes les MAJ future du WES,
      Nicola peut à discrétion modifier les Codes Clè utilisés actuellement pour une version WES donnée, dans les fichier CGX propriétaire de ses fichiers HTM pour gérer les Pages du wEB

      Par rapport aux prochaines MAJ WES, si votre script PERSO.CGX ne fonctionne plus correctement après, cela sera à vous et uniquement à vous de chercher à régler votre problème; Cela peut être un Code Clé qui à été changé, ou bien l’Usage d’un Tableau XML HTM d’une Page qui est supprimé et remplacé ar de nouveaux code pour afficher les Infos de la Page

      En aucun cas @Nicolas ou moi même pouvons être responsable, de dysfonctionnement éventuel,  si vous faites des modifs ou rajouter des fichiers CGX Perso dans la carte SD ou modifiez des CGX existant du WES.

      Cdt

      Christian

       

    • #12478
      cdlog2
      Modérateur

      RE: ATTENTION , Ce Blog change certains caractères par d’autres visuellement similaire.

      Exemple, Tous les guillemets placés dans un texte de ce BLOG sont modifiés par un Char similaire en Visuel.

      Si vous faites une Copie d’une des Fonctions ou Bloc CGX présentées dans mon précédent Post, sachez qu’il faut reprendre et remplacer tous ces faux guillemets simple ou double côte visible dans le Texte, par de vraie guillemet tapé depuis votre clavier.

      Cdt

    • #12479
      cdlog2
      Modérateur

      bonjour o0larry0o

      Est ce qu’à la lecture de mon Précédent Post #12477, vous comprenez mieux l’interaction des fichiers CGX avec les fichiers HTM du WES.

      Normalement dans ce Blog, on ne gère pas le Blog des autres, même si le WES est le sujet de la discussion. Mais je vais faire une petite exception pour vous et juste reprendre un exemple de l’autre Blog qui vous pose problème. Je suppose que vous faites référence à cet extrait de Code dont j’en ai copié juste le début pour explication :

      Au début de ce Code on lance une requête WES sur le fichier homeval.cgx
      Si vous tapez votre propre requête http://login-wes:password-wes@IP-WES/WEBPROG/CGX/homeval.CGX
      depuis votre navigateur vous verrez ce que récupère cette requête HTTP.

      Si la requête réussi, on demande de créer des références Array sur tous les Nodes trouvés ayant pour nom <array>, <bssw>, <java>, <html>

      platform: rest
          name: weshomeval
          resource: http://192.168.1.80/WEBPROG/CGX/homeval.CGX
          method: GET
          authentication: basic
          username: admin
          password: wes
          json_attributes_path: « $.form »
          json_attributes:
            – « array »
            – « bssw »
            – « java »
            – « html »
          value_template: ‘OK’

      Exemple avec le Node <html> >> on cherche tous les Nodes <html>, dans le résultat de la requête sur Homeval.cgx, On va en trouver 11 ensembles de Node au nom <html>…</html> donc on va créer un Tableau sur ces 11 références > node-html [10] (on commence à l’Index 0)

      Editez le fichier Homeval.cgx de votre WES et vous pourrez trouver ces 11 Nodes soit 11 lignes ayant le Nom du Tag <html>….</html>

      Ensuite on va tester ou récupérer les Valeurs lues dans les TAG <value> affectés à chaque Node <html> ou , array, bssw, java.

      Dans l’exemple du bout de Code extrait ci-dessous on veut récupérer la Valeur contenue dans le Tag <value> du 5eme Nodes <html> trouvé dans le le résultat de la requête sur le fichier homeval.cgx.

      Ce qui revient à récupérer le 5éme Node depuis le array node-html [6]. n’oubliez pas que l’index 0 de l’array existe donc le 5eme Node est en réalité l’Index 6 de l’Array html[6]

      Il se fait que ce 5éme Nodes <html> ou 6eme index de l’Array html[6] fait référence à la ligne :
      c Tn1 <html><id>TICtarif_1</id><value>%s</value></html> de Homeval.cgx
      dont la valeur reçu par la requête Homeval.CGX du WES est chez moi à cette heure :

      <html>
      <id>TICtarif_1</id>
      <value>H. Pleines</value>
      </html>

      Et dans ce Node <html> on trouve le ID « TICtarif_1″ qui défini dans la page INDEX.HTM (si Widget Tic) ou TICVAL.HTM l’endroit ou l’on doit renter l’information contenue dans le tag <value> à savoir le champs >> la Période en cours du TIC 1 dont les valeurs peuvent prendre
      « H. Creuses » ou « H. Pleines. »

      Le bout de programme qui suit veut changer l’état d’un Booléen nommé « wes_tarif_HC » soit en true(1) en false(0) suivant la comparaison qui est faite dans le contenu de la <value> pour vérifier si le texte lu  est  ‘H. Creuses’

      Donc le Code ci-dessous récupère le 5éme Node <html> et teste la <value> H. Creuses et en fonction positionne une référence »wes_tarif_HC » à la valeur 1 ou 0 (true/false) suivant le résultat de la comparaison faite.

        – platform: template
          sensors:
             wesheurecreuseraw :
              value_template: >-
                  {{ states.sensor.weshomeval.attributes[« html »][5][« value »] }}
             wesheurecreuse :
              friendly_name: wes_tarif_HC
              value_template: >-
                {% if states(‘sensor.wesheurecreuseraw’) == ‘H. Creuses’ %}
                    1
                {% else %}
                    0
                {% endif %}

      Voila tout le reste fonctionne à l’identique. Mais je peux vous dire que la personne qui à programmé ce Code, ne doit pas connaître le WES et le fichier DATA.CGX.

      Car s’il avait fait une simple requête sur le DATA.CGX qui se trouve à la racine de la carte SD du WES, au lieu de le faire sur HOMEVAL.CGX, qui peut changer de structure lors de prochaine MAJ WES, ce qui n’est pas vraie pour le DATA.CGX, Cette personne se serait moins creusé les neurones pour récupérer la plus part des Infos qu’il teste ou récupère dans son CODE.

      Si vous avez un contrat Enedis Heure creuse et heure pleine, alors lancez une requête sur le DATA.CGX

      http://login:password@ipwes/DATA.CGX

      Et vous trouverez immédiatement le TAG > <PTEC>H. Pleines</PTEC> qui vous donne l’info rendu par votre Compteur TIC.

      Pas besoin de compter le nombre de Node <html> etc, etc. Il suffit de pointer immédiatement sur le TAG <PTEC> dans le résultat de la requête WES sur le DATA.CGX pour trouver ‘info. Chaque valeurs du WES ont un TAG Spécifique que vous pouvez lire et en extraire la valeur pour traitement.

      Donc pas besoin de calculer sur quel n° de Node <html> se trouve la bonne info que je souhaite traiter !??. On pointe direct sur le bon <TAG> dans le DATA.CGX

      Voila pour expliquer la réponse de Nicolas à votre question !

      Regardez le fichier data.cgx les autres fichiers sont formatés pour l’interface web du WES.

      Cdt

      Christian

    • #12480
      cdlog2
      Modérateur

      Bonjour,

      Comme vous n’êtes pas précis et ne donnez pas le n° du compteur Impulsion de votre Compteur GAZ
      et vous ne dites pas de qu’elle puissance en W consommé sagit t’il: TIC ??, Pince ??, Pulse ??

      Je vous donne juste un exemple pour lire quelques info de votre Compteur GAZ en supposant qu’il s’agit du Compteur à Impulsion n° 1 dans le WES

      Je joins 1 fichier PERSO.CGX à copier dans la Racine de la Carte Mémoire SD du WES et le fichier d’un Script Home Assistant, non testé, mais qui devrait répondre à vos besoins pour lire les infos du Cpt Pulse 1

      Contenu du fichier PERSO CGX fourni en pièce jointe

      t <?xml version= »1.0″ encoding= »UTF-8″?>
      t <data>
      #
      # Compteur Impulsions
      t <impulsion>
      #
      # Compteur 1
      c pp1 <PULSE1>%d</PULSE1>
      c pIU1<INDEX1>%.03f</INDEX1>
      c pIJ1<INDEXJ1>%.03f</INDEXJ1>
      c pIM1<INDEXM1>%.03f</INDEXM1>
      c pIA1<INDEXA1>%.03f</INDEXA1>
      #
      # Compteur 2
      c pp2 <PULSE2>%d</PULSE2>
      c pIU2<INDEX2>%.03f</INDEX2>
      c pIJ2<INDEXJ2>%.03f</INDEXJ2>
      c pIM2<INDEXM2>%.03f</INDEXM2>
      c pIA2<INDEXA2>%.03f</INDEXA2>
      #
      # Compteur 3
      c pp3 <PULSE3>%d</PULSE3>
      c pIU3<INDEX3>%.03f</INDEX3>
      c pIJ3<INDEXJ3>%.03f</INDEXJ3>
      c pIM3<INDEXM3>%.03f</INDEXM3>
      c pIA3<INDEXA3>%.03f</INDEXA3>
      #
      # Compteur 4
      c pp4 <PULSE4>%d</PULSE4>
      c pIU4<INDEX4>%.03f</INDEX4>
      c pIJ4<INDEXJ4>%.03f</INDEXJ4>
      c pIM4<INDEXM4>%.03f</INDEXM4>
      c pIA4<INDEXA4>%.03f</INDEXA4>
      #
      # Compteur 5
      c pp5 <PULSE5>%d</PULSE5>
      c pIU5<INDEX5>%.03f</INDEX5>
      c pIJ5<INDEXJ5>%.03f</INDEXJ5>
      c pIM5<INDEXM5>%.03f</INDEXM5>
      c pIA5<INDEXA5>%.03f</INDEXA5>
      #
      # Compteur 6
      c pp6 <PULSE6>%d</PULSE6>
      c pIU6<INDEX6>%.03f</INDEX6>
      c pIJ6<INDEXJ6>%.03f</INDEXJ6>
      c pIM6<INDEXM6>%.03f</INDEXM6>
      c pIA6<INDEXA6>%.03f</INDEXA6>
      #
      t </impulsion>
      #
      t </data>
      .

      Exemple de Script homeval, fourni en pièce jointe, pour lire les Info du Cpt GAZ
      (Attention ne pas copier ce script depuis le blog, les chars guillemets ne sont pas OK car transformés par le Blog)

      sensor:

      – platform: rest
      name: weshomeval
      resource: http://IP-DE-VOTRE-WES/perso.cgx
      method: GET
      authentication: basic
      username: RENTRER ICI VOTRE LOGIN-WES
      password: RENTRER ICI VOTRE MOT-PASSE-WES
      json_attributes_path: « $.data »
      json_attributes:
      – « impulsion »
      value_template: ‘OK’
      – platform: template
      sensors:
      wescpt1pulse :
      friendly_name: wes_cpt1_pulse
      device_class : gaz
      unit_of_measurement: ‘m3’
      value_template: >-
      {{ states.sensor.weshomeval.attributes[« impulsion »][« PULSE1 »] | int  }}
      wescpt1indexactuel :
      friendly_name: wes_cpt1_index_actuel
      device_class : gaz
      unit_of_measurement: ‘Idx’
      value_template: >-
      {{ states.sensor.weshomeval.attributes[« impulsion »][« INDEX1 »]| float }}
      wescpt1indexdebjour :
      friendly_name: wes_cpt1_index_debut_jour
      device_class : gaz
      unit_of_measurement: ‘Idx’
      value_template: >-
      {{ states.sensor.weshomeval.attributes[« impulsion »][« INDEXJ1 »]| float }}
      wescpt1indexdebmois :
      friendly_name: wes_cpt1_index_debut_mois
      device_class : gaz
      unit_of_measurement: ‘Idx’
      value_template: >-
      {{ states.sensor.weshomeval.attributes[« impulsion »][« INDEXM1 »]| float }}
      wescpt1indexdebannee :
      friendly_name: wes_cpt1_index_debut_annee
      device_class : gaz
      unit_of_measurement: ‘Idx’
      value_template: >-
      {{ states.sensor.weshomeval.attributes[« impulsion »][« INDEXA1 »]| float }}

      En espérant que cela vous aide à mieux comprendre l’usage des CGX du WES

      Cdt

      Attachments:
      You must be logged in to view attached files.
    • #12482
      cdlog2
      Modérateur

      RE : Le Blog par sécurité refuse de joindre le Fichier perso.cgx

      Je vous le joins à nouveau, mais avec l’extension du fichier en .TXT

      Vous devez renommer le fichier perso.txt par perso.cgx avant de le copier dans la racine de la SD de votre WES

      Attachments:
      You must be logged in to view attached files.
    • #12484
      cdlog2
      Modérateur

      RE : Parfois je me demande ?, en reprenant à mon compte le fameux Slogan de la Pub DUC..S,  À quoi ça sert que l’on se déc….sse  !

      • #12494
        DomoYop
        Participant

        Je peux répondre a cette interrogation légitime: ca sert a d’autres, qui tombent (un peu par hasard) sur ce forum et trouvent exactement les explications qu’ils cherchaient !

         

        Merci Christian d’avoir pris le temps d’expliquer tout cela avec beaucoup de precision et de didactisme.

        Cela m’as grandement aidé.

        Cordialement,

        Yop

         

         

         

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