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


Log in to reply