Skip to content
  • Blog
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Community Forum

  1. Home
  2. Categories
  3. Téléinfo
  4. WifInfo
  5. Ré-écriture de Wifinfo pour traiter le mode standard du Linky

Ré-écriture de Wifinfo pour traiter le mode standard du Linky

Scheduled Pinned Locked Moved WifInfo
110 Posts 27 Posters 62.0k Views 12 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M mangoose

    Bonjour Marc,

    J'ai pu avancer sur le sujet, en fait tout est bon dans le code si ce n'est le calcul du checksum.
    En fait, il faut que le début du calcul soit le suivant:

    uint16_t sum = ' ';
    //5.3.6. Couche liaison document enedis Enedis-NOI-CPT_54E.pdf  
    if (!this->modeLinkyHistorique){
    	sum = 0x09 * 2;// Somme des codes ASCII du message + deux tabulations
    }
    

    En fait, il n'y a pas d'espace et 2 tabulations. En faisant ça, les checksums sont corrects et cela fonctionne bien mieux.

    Pour l'url, j'ai rajouté les éléments suivants:

          if (valName == "SINSTS"){
            url.replace("%SINSTS%",me->value);
          }
          if (valName == "EAST"){
            url.replace("%EAST%", me->value);
          }
          if (valName == "EASF01"){
            url.replace("%EASF01%", me->value);
          }
          if (valName == "EASF02"){
            url.replace("%EASF02%", me->value);
          }
    

    J'espere que ça pourra aider d'autres personnes.

    Pour le moment, je me bats avec le Wemos qui passe son temps à rebooter sans que j'ai compris pourquoi. Si vous avez une idée, je suis prenneur.

    Pierre

    M Offline
    M Offline
    Marco40
    wrote on last edited by
    #13

    @mangoose
    Bonjour Pierre

    J'ai corrigé sur Github et j'ai ajouté une classe myTinfo pour sortir les fonctions de Wifinfo.ino.

    Pour ton problème, est-ce lié à ma version ?
    Est ce que le reboot se fait sur l'initialisation ?
    As tu des messages console au moment du reboot (watchdog...)?

    Marc

    1 Reply Last reply
    • M Offline
      M Offline
      mangoose
      wrote on last edited by
      #14

      Bonjour

      J'ai continué à avancer, en fait il faut que les valeurs soient remontées de la manière suivante:

        url = *CONFIGURATION.config.httpReq.path ? CONFIGURATION.config.httpReq.path : "/";
        //url += "?";
      
        // Loop thru the node
        while (me->next) {
          // go to next node
          me = me->next;
          skip_item = false;
      
          // Si Item virtuel, on le met pas
          if (*me->name =='_')
            skip_item = true;
      
          // On doit ajouter l'item ?
          if (!skip_item)
          {
            String valName = String(me->name);
            /* FOR STANDARD TYPE */
            if (valName == "SINSTS"){
              url.replace("%SINSTS%",String(atol(me->value)));
            }
            if (valName == "EAST"){
              url.replace("%EAST%", String(atol(me->value)));
            }
            if (valName == "EASF01"){
              url.replace("%EASF01%", String(atol(me->value)));
            }
            if (valName == "EASF02"){
              url.replace("%EASF02%", String(atol(me->value)));
            }
      

      Concernant les reboots, j'ai remarqué que c'est quand je suis connecté à l'interface web en même temps que ça envoie les informations à Domoticz. Si je ne me connecte pas à l'interface, c'est relativement stable.

      Je vais creer un clone de ton github et ensuite je vais injecter le code que j'ai écrit, ca sera plus simple.

      Pierre

      1 Reply Last reply
      • M Offline
        M Offline
        mangoose
        wrote on last edited by mangoose
        #15

        C'est bon j'ai fait un pull request sur github.

        Voici ce que j'ai quand ça reboote:
        May 1 18:05:43 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
        May 1 18:07:21 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
        May 1 18:08:51 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
        May 1 18:17:01 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
        May 1 18:20:11 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
        May 1 18:37:21 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !

        M 3 Replies Last reply
        • M mangoose

          C'est bon j'ai fait un pull request sur github.

          Voici ce que j'ai quand ça reboote:
          May 1 18:05:43 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
          May 1 18:07:21 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
          May 1 18:08:51 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
          May 1 18:17:01 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
          May 1 18:20:11 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
          May 1 18:37:21 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !

          M Offline
          M Offline
          Marco40
          wrote on last edited by
          #16

          Bonjour Pierre

          J'ai fait une erreur dans la dernière version:
          en fin de webClient.cpp fonction validate_value_name
          Il faut que tu remplace sizeof(tabNames) par 38 ou la nouvelle taille du tableau tabName si tu ajoute des champs(ce que j'ai fait dans la dernière version pour les 4 champs que tu avait indiqué).
          J'ai ajouté par sécurité un ESP.wdtFeed(); en début de build_emoncms_json.

          marc

          1 Reply Last reply
          • M mangoose

            C'est bon j'ai fait un pull request sur github.

            Voici ce que j'ai quand ça reboote:
            May 1 18:05:43 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
            May 1 18:07:21 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
            May 1 18:08:51 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
            May 1 18:17:01 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
            May 1 18:20:11 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
            May 1 18:37:21 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !

            M Offline
            M Offline
            Marco40
            wrote on last edited by
            #17

            Il y a un autre problème, le buffer dimensionné à 136 est trop petit avec les variables ajoutées, je l'ai passé de 136 à 300.

            webClient-->httpPost -->char buffer[300];

            marc

            1 Reply Last reply
            • M mangoose

              C'est bon j'ai fait un pull request sur github.

              Voici ce que j'ai quand ça reboote:
              May 1 18:05:43 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
              May 1 18:07:21 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
              May 1 18:08:51 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
              May 1 18:17:01 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
              May 1 18:20:11 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !
              May 1 18:37:21 WifInfo-423FC4 Wifinfo Good CRC, not set! From now, we can use EEPROM config !

              M Offline
              M Offline
              Marco40
              wrote on last edited by
              #18

              J'ai ajouté un test dans build_emoncms_json au cas ou on a jamais reçu de message teleinfo , dans ce cas j'avais un reboot par le watchdog.

                  if(! first_item) 
                    // go to next node
                   me = me->next;
                 //marc
                 else
              	   if (me->free) {
              		   //1st item is free : empty list !
              		   Debugln("Teleinfo list is empty !");
              		   break;
              	   }
                 //fin marc
                  if( ! me->free ) {
              

              C'est le code qui était déjà dans tinfoJSONTable.

              Il faudra voir pour httpRequest si tu as encore un soucis et pour jeedomPost.

              J'ai dimensionné le tableau à 400 et j'ai mis ta modif String(atol(me->value)).

              Github est à jour.

              Marc

              1 Reply Last reply
              • M Offline
                M Offline
                mangoose
                wrote on last edited by
                #19

                Bonjour

                J'ai trouvé 2 problèmes dans le code.

                Il faut commenter la ligne 339 du fichier webclient.cpp
                La fonction this->on("/tinfo.json", & { plante systématiquement chez moi. J'ai fait en sorte qu'elle sorte des le début et je n'ai visiblement plus de plantage intempestif.

                Je ne sais pas trop bien ou ça plante, mais je recois juste le message "setReinit tinfoJSONTable" et ensuite ça fait un hard reset.

                Je n'ai pas encore trouvé d'où ca peut provenir. Si je trouve, je ferait à nouveau un pull request pour que ce soit incorporé à ton code sans que l'un ou l'autre ait à reprendre les modifs manuellement.

                Pierre

                M 1 Reply Last reply
                • M mangoose

                  Bonjour

                  J'ai trouvé 2 problèmes dans le code.

                  Il faut commenter la ligne 339 du fichier webclient.cpp
                  La fonction this->on("/tinfo.json", & { plante systématiquement chez moi. J'ai fait en sorte qu'elle sorte des le début et je n'ai visiblement plus de plantage intempestif.

                  Je ne sais pas trop bien ou ça plante, mais je recois juste le message "setReinit tinfoJSONTable" et ensuite ça fait un hard reset.

                  Je n'ai pas encore trouvé d'où ca peut provenir. Si je trouve, je ferait à nouveau un pull request pour que ce soit incorporé à ton code sans que l'un ou l'autre ait à reprendre les modifs manuellement.

                  Pierre

                  M Offline
                  M Offline
                  Marco40
                  wrote on last edited by
                  #20

                  as-tu remplacé sizeof(tabNames) par 38 ?
                  Marc

                  1 Reply Last reply
                  • M Offline
                    M Offline
                    mangoose
                    wrote on last edited by
                    #21

                    J'ai repris ton code directement mais ca ne fonctionne pas mieux.

                    Par ailleurs, en continunant à chercher j'ai remarqué que mes reboots avait lieu au bout d'un nombre variable de minute + 10 secondes systématiquement.
                    Si je ne me trompe pas, le watchdog hardware est de 10s, il doit y avoir une boucle quelque part qui dure trop longtemps et qui fait rebooter le systeme. Je vais regarder ça.

                    Pierre

                    1 Reply Last reply
                    • M Offline
                      M Offline
                      mangoose
                      wrote on last edited by mangoose
                      #22

                      J'ai trouvé ce qui faisait planter le programme. Il faut modifier la taille maximale des datas en mode standard. Certaines dépassent les 16 octets et peuvent monter à 98 octets.

                      Il n'y a plus de problème avec le code suivant:

                      struct _ValueList
                      {
                      ValueList *next; // next element (for compatibility)
                      char name[16]; // LABEL of value name
                      //char value[16]; // value
                      char value[98]; //Changed for standard type
                      uint8_t checksum; // checksum
                      uint8_t flags; // specific flags
                      uint8_t free; // checksum
                      uint8_t filler; // unused, for boundary
                      };

                      Il faut aussi changer la ligne suivante
                      memset(me->value, 0, 16); en memset(me->value, 0, 98);

                      Je pense que la vérification des TAG valide devrait etre fait dans la classe TInfo et pas dans la classe webClient. Cela permettrait d'avoir quelque chose de plus générique. Tu peux regarder ce que j'ai écrit dans mon fork de ton répo

                      Pierre

                      1 Reply Last reply
                      • A Offline
                        A Offline
                        Arly
                        wrote on last edited by
                        #23

                        Bonsoir à tous, je n'ai toujours pas de Github mais ma version "remasterisée" pour Linky en mode Standard et Jeedom avec la dernière version du plugin Teleinfo (requette en mode POST en non plus GET) fonctionne. Il me reste à finaliser les interface EmonCMS (que je ne peux pas tester) et MQTT.
                        Les sources sont ici avec un bin compilé pret à flasher : https://drive.google.com/drive/folders/1SxTt7uEn-4zt3LfUq1NbdaFKlY1nju0r?usp=sharing

                        @Charles libre à vous de récupérer ces sources et de les intégrer a votre travail, ce serait avec plaisir.

                        A 1 Reply Last reply
                        • A Arly

                          Bonsoir à tous, je n'ai toujours pas de Github mais ma version "remasterisée" pour Linky en mode Standard et Jeedom avec la dernière version du plugin Teleinfo (requette en mode POST en non plus GET) fonctionne. Il me reste à finaliser les interface EmonCMS (que je ne peux pas tester) et MQTT.
                          Les sources sont ici avec un bin compilé pret à flasher : https://drive.google.com/drive/folders/1SxTt7uEn-4zt3LfUq1NbdaFKlY1nju0r?usp=sharing

                          @Charles libre à vous de récupérer ces sources et de les intégrer a votre travail, ce serait avec plaisir.

                          A Offline
                          A Offline
                          Arly
                          wrote on last edited by
                          #24

                          Nouvelle version dans disponible (au même endroit), correction d'un bug sur la réception des trames et amélioration de la gestion des tags de début et fin de paquets/trames

                          1 Reply Last reply
                          • A Offline
                            A Offline
                            Arly
                            wrote on last edited by Arly
                            #25

                            Encore une nouvelle version (25/05/2019 v2.0.1) qui corrige un bug sur la réception des données (pertes et fausses infos TIC quand le minuteur pour émettre les données à Jeedom interrompt la réception du port série). Cette version est stable mais ne gère pas encore le MQTT.

                            1 Reply Last reply
                            • P Offline
                              P Offline
                              Patrice
                              wrote on last edited by
                              #26

                              Je suis avec grand intérêt ce post.
                              Est il possible d'ajouter la prise en charge des implusions du compteur gaz (Gazpar) qui est situé juste à côté du compteur electrique ?

                              Nicolas DeraedtN flouckF 2 Replies Last reply
                              • CharlesC Charles

                                @Christophe les sources sont dans les exemple de la librairie Teleinfo mais ils sont un peu obsolètes
                                https://github.com/hallard/LibTeleinfo/tree/master/examples/Wifinfo

                                Je suis en train de ré-écrire de code à l'aide de @sremy et je pense que je vais sortir les sources de la librairie. De plus le code sera capable de gérer des compteurs d'impulsions et quelques capteurs.

                                Capture.JPG

                                N Offline
                                N Offline
                                nherreyre
                                wrote on last edited by
                                #27

                                Bonjour @Charles

                                Je ne sais pas si c'est toujours d'actualité, mais je serai intéressé par l'evolution de ta GUI. Cela à l'air top. Il y a moyen de tester en beta ? avoir accès à un repository ?

                                (je commence à me plonger dans le code de la Wininfo, c'est plutôt énorme 😉

                                Merci!

                                Nicolas.

                                1 Reply Last reply
                                • Steeve VermeerschS Offline
                                  Steeve VermeerschS Offline
                                  Steeve Vermeersch
                                  wrote on last edited by
                                  #28

                                  Bonjour à tous, de mon coté je voulais justement gérer la teleinfo avec du MQTT et faire une petite carte dans un boitier DIN. Je suis donc très intéressé par ce post.
                                  Une question cette version gére le mode historique et standard ?
                                  Je voulais avoir aussi des entrées de comptage sur ma carte pour faire une carte de gestion des consommations

                                  1 Reply Last reply
                                  • M Offline
                                    M Offline
                                    Marco40
                                    wrote on last edited by
                                    #29

                                    Bonjour

                                    J'ai mis mon projet complet sur github qui utilise la libTeleinfo de Charles, ça peux peut-être servir pour d'autres applications.

                                      le lien est:  (https://github.com/marco402/piloteVMC.git)
                                    

                                    Marc

                                    1 Reply Last reply
                                    • CharlesC Charles

                                      @Christophe les sources sont dans les exemple de la librairie Teleinfo mais ils sont un peu obsolètes
                                      https://github.com/hallard/LibTeleinfo/tree/master/examples/Wifinfo

                                      Je suis en train de ré-écrire de code à l'aide de @sremy et je pense que je vais sortir les sources de la librairie. De plus le code sera capable de gérer des compteurs d'impulsions et quelques capteurs.

                                      Capture.JPG

                                      S Offline
                                      S Offline
                                      Schmurtz
                                      wrote on last edited by
                                      #30

                                      Wouha les options supplémentaires sur ce screenshot ont l'air cool !

                                      @Charles , @sremy Si vous avez les sources dans un coin de cette nouvelle version ça m'interesse grandement 😉

                                      1 Reply Last reply
                                      • P Patrice

                                        Je suis avec grand intérêt ce post.
                                        Est il possible d'ajouter la prise en charge des implusions du compteur gaz (Gazpar) qui est situé juste à côté du compteur electrique ?

                                        Nicolas DeraedtN Offline
                                        Nicolas DeraedtN Offline
                                        Nicolas Deraedt
                                        wrote on last edited by
                                        #31

                                        @Patrice said in Ré-écriture de Wifinfo pour traiter le mode standard du Linky:

                                        Je suis avec grand intérêt ce post.
                                        Est il possible d'ajouter la prise en charge des implusions du compteur gaz (Gazpar) qui est situé juste à côté du compteur electrique ?

                                        je me posais la meme question ?

                                        tu en penses quoi charles ?

                                        flouckF 1 Reply Last reply
                                        • adminA Offline
                                          adminA Offline
                                          admin
                                          wrote on last edited by
                                          #32

                                          Messieurs,

                                          J'ai plutôt une bonne nouvelle, je viens de créer une PR pour ajouter la téléinfo à l'excellent Firmware Tasmota. Celui ci supporte un nombre impressionnant de devices, de fonctions et il est d'une stabilité exemplaire. Et bien entendu des compteurs d'impulsions sont déjà gérés.

                                          Ma PR (basique pour le moment juste de l'affichage) est parfaitement fonctionnelle et elle est dispo ici

                                          Nous n'auront plus qu'a maintenir la partie téléinfo ce qui soulagera tout le monde et nous beneficierons de toules les nouveautés de ce firmware.

                                          Nicolas DeraedtN 1 Reply Last reply

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          0

                                          Online

                                          5.8k

                                          Users

                                          565

                                          Topics

                                          5.3k

                                          Posts

                                          Top Topics

                                          Popular Tags

                                          teleinfo
                                          25 topics
                                          arduino
                                          19 topics
                                          remora
                                          16 topics
                                          esp8266
                                          10 topics
                                          arduipi
                                          10 topics
                                          raspberry
                                          8 topics
                                          wifinfo
                                          7 topics
                                          broadcast
                                          7 topics
                                          Copyright © 2022 Charles-Henri Hallard | Return to blog page | Powered by NodeBB
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Blog
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups