Community Forum
    • Blog
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. Guillaume
    3. Posts
    G
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 1
    • Groups 0

    Posts

    Recent
    • WifInfo - coquilles version 1.0.7

      Bonjour à tous,
      Je profite de ce confinement pour résoudre mes dysfonctionnements wifinfo depuis passage en compteur linky.
      Je suis reparti de la dernière version que j'ai trouvé 1.0.7 (https://github.com/theGressier/LibTeleinfo).
      Je pense avoir trouvé quelques coquilles dans le code (pas liées aux dernières modifs v1.0.7) que je vous remonte donc :

      1. problème fonction Debug et agresse ip
      2. problème fonction Debug si le message dépasse la taille de logbuffer => reset par watchdog hard
      3. problème fonction jeedompost qui n'envoie pas le premier label
      4. checksum dans la libraire mise en défaut par les caractères ascii minuscules

      Voici plus en détail les différents problèmes :
      1/ problème fonction Debug et agresse ip :
      En activant l'option syslog, j'ai une erreur à la compilation
      "call of overloaded 'Myprintln(IPAddress)' is ambiguous"
      le problème vient de la ligne suivante. j'ai résolu ça en convertissant l'adresse ip en texte d'abord.

      DebugF("IP address   : "); Debugln(WiFi.softAPIP());
      

      2/ problème fonction Debug si le message dépasse la taille de logbuffer => reset par watchdog hard
      Le problème apparaît dans l'appel Debug(data); dans la fonction jeedomPost (webclient.cpp)

      } // While me
            // Json end
            data += "}}}";
            Debug(data);
            
            ret = httpPost( config.jeedom.host, config.jeedom.port, (char *) url.c_str(), (char *) data.c_str()) ;
      

      J'ai sécurisé la fonction myprint et myprintln pour qu'elle tronque le message si il est trop long

      3/ problème fonction jeedompost qui n'envoie pas le premier label
      Au début de la boucle while on fait me= me->next

                  
            // Loop thru the node
            while (me->next) {
              // go to next node
              me = me->next;
      
              if( ! me->free ) {
      

      Il faudrait soit le faire à la fin soit ne pas le faire la première fois comme c'est fait dans la fonction build_emoncms_json

            while (me->next) {
      
               if(! first_item) 
                // go to next node
                me = me->next;
              
               if( ! me->free ) {
      

      4/ checksum dans la libraire mise en défaut par les caractères ascii minuscules
      j'ai de mon côté des anomalies de nom ou de valeur d'étiquette qui remonte sur la page wifinfo ou sous jeedom. Les dernière modifs de Dombrain ne couvrent pas les valeurs qui contiennent des lettres au lieu de chiffres. Je pense que le problème de base vient du fait que le checksum dans la librairie teleinfo est mis en défaut par les lettres en minuscule.
      voici un exemple concret que j'ai :
      Nom : ADCO
      Data=811961841v61
      Checksum =75
      L'ADCO normal vaut 811961841661
      si je recalcul le checksum :
      ADCO =65+68+67+79=279
      Data nok=811961841v61=56+49+49+57+54+49+56+52+49+118+54+49=692
      Data ok =811961841661=56+49+49+57+54+49+56+52+49+54 +54+49=628
      ADCO+Data +espace = 279+32+692=1003 = Bin ‭‭‭001111101011‬‬‬
      ADCO+Data ok+espace = 279+32+628=939 = Bin ‭001110101011
      on ne conserve que les 6 bits de poids faible + 32 (espace)
      ce qui donne :
      cas data NOK=>Bin 101011=43 =>43+32=75
      cas data OK ‬‬‬ =>Bin 101011=43 =>43+32=75

      la lettre v et le chiffre 6 ont les mêmes 6 premiers bits
      '6'=dec 54=bin 0110110
      'v'=dec 118=bin 1110110
      le checksum ne semble pas compatible de caractère ASCII à 7 bit

      posted in WifInfo
      G
      Guillaume