Community Forum
    • Blog
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. mangoose
    M
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 7
    • Groups 0

    mangoose

    @mangoose

    19
    Profile views
    7
    Posts
    0
    Followers
    0
    Following
    Joined
    Last Online
    Age 50

    mangoose Unfollow Follow

    Latest posts made by mangoose

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

      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

      posted in WifInfo
      M
      mangoose
    • RE: Ré-écriture de Wifinfo pour traiter le mode standard du Linky

      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

      posted in WifInfo
      M
      mangoose
    • RE: Ré-écriture de Wifinfo pour traiter le mode standard du Linky

      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

      posted in WifInfo
      M
      mangoose
    • RE: Ré-écriture de Wifinfo pour traiter le mode standard du Linky

      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 !

      posted in WifInfo
      M
      mangoose
    • RE: Ré-écriture de Wifinfo pour traiter le mode standard du Linky

      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

      posted in WifInfo
      M
      mangoose
    • RE: Ré-écriture de Wifinfo pour traiter le mode standard du Linky

      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

      posted in WifInfo
      M
      mangoose
    • RE: Ré-écriture de Wifinfo pour traiter le mode standard du Linky

      Bonjour Marc,

      J'ai commencé à regarder votre code concernant la gestion du mode Standard. Il détecte bien des trames, mais je n'ai pas réussi à les afficher et à vérifier qu'elles sont bien correctes. Je vais continuer à regarder ce soir et demain.

      Par contre, le mode Standard ne gère plus les mêmes noms de valeurs, l'envoi de données vers Emoncms ou Domoticz ne fonctionne pas car les champs attendus ne sont pas renvoyés. Je verrai ce qu'il est possible de faire pour ajouter les champs dans la requêtes.

      Pierre

      posted in WifInfo
      M
      mangoose