Données absentes mysql



  • Re: configuration MySQL
    Bonjour,

    Comme suite à l'acquisition d'une interface PitInfo, qui fonctionne très bien, sur un RasPi 4 j'ai installé :

    • Apache
    • PHP
    • MariaDB
    • phpMyAdmin
      … et teleinfo…
      Mon intention est de remplir la BDD avec les données de mon Linky.
      Bien… ce n'est pas top, je reçois bien les trames mais seulement le champ date est mis à jour dans la BDD… Je pense qu'il s'agit d'une erreur de paramétrage quelque part… je demande une piste à suivre… si vous en avez une…

    Je mets une copie de la sortie… par avance merci.

    pi@pi-lamp:~/teleinfo $ teleinfo
    teleinfo v1.0.8
    -- Serial Stuff -- 
    tty device     : /dev/ttyS0
    flowcontrol    : none
    baudrate is    : 1200
    parity is      : even
    databits are   : 7
    -- MySql Stuff -- 
    mySQL insert   : Enabled
    Server is      : localhost:3306
    Database is    : enedis
    Login is       : teleinfo
    Password is    : teleinfo
    Table is       : DbiTeleinfo
    -- Other Stuff -- 
    network is     : 192.168.0.255
    udp port is    : 1201
    mode is        : receive
    fetch value is : 
    nolock is      : no
    verbose is     : yes
    
    Opened Socket
    Curl Initialized
    Binded on port 1201
    Inits succeded, waiting network frame
    ------------------- Received 159 char Frame.ADCO 061861179678 S
    OPTARIF HC.. <
    ISOUSC 45 ?
    HCHC 009545895 3
    HCHP 000236194 ,
    PTEC HP..  
    IINST 003 Z
    IMAX 090 H
    PAPP 00840 -
    HHPHC A ,
    MOTDETAT 000000 B
    
    -------------------Frame OK
    INSERT INTO DbiTeleinfo
      (DATE)
    VALUES
      (NOW());
    
    teleinfo 1.0.8 Statistics
    ==========================
    Frames Sent         : 0
    Frames checked      : 1
    Frames OK           : 1
    Checksum errors     : 0
    Frame format Errors : 0
    Frame size Errors   : 0
    MySQL init OK       : 1
    MySQL init errors   : 0
    MySQL connect OK    : 1
    MySQL connect errors: 0
    MySQL queries OK    : 1
    MySQL queries errors: 0
    EmonCMS total post  : 0
    EmonCMS post OK     : 0
    EmonCMS post errors : 0
    EmonCMS timeout     : 0
    --------------------------
    Succeded to do my job
    pi@pi-lamp:~/teleinfo $ 
    
    


  • ... et bien j'ai trouvé...
    Je trouvais dommage de mettre un raspi pour broadcaster le message de téléinfo même si c’était un raspi zéro.
    J'ai donc utilisé WifInfo avec un WEMOS et effectué les modifications suivantes :

    /* ======================================================================
    Function: NewFrame 
    Purpose : callback when we received a complete teleinfo frame
    Input   : linked list pointer on the concerned data
    Output  : - 
    Comments: it's called only if one data in the frame is different than
              the previous frame
    ====================================================================== */
    void UpdatedFrame(ValueList * me)
    {
      char buff[32];
      
      // Light the RGB LED (purple)
      if ( config.config & CFG_RGB_LED) {
        LedRGBON(COLOR_MAGENTA);
    
        // led off after delay
        rgb_ticker.once_ms(BLINK_LED_MS, LedOff, RGB_LED_PIN);
      }
    
      sprintf_P( buff, PSTR("Updated Frame (%ld Bytes free)"), ESP.getFreeHeap() );
      Debugln(buff);
    
    /* */
      // Envoi d'une trame en broadcast
      // Got at least one ?
      if (me) {
        WiFiUDP myudp;
        IPAddress ip = WiFi.localIP();
    
        // start UDP server
        myudp.begin(1201);
        ip[3] = 255;
    
        // transmit broadcast package
        myudp.beginPacket(ip, 1201);
    
        // start of frame
        myudp.write(TINFO_STX);
    
        // Loop thru the node
        while (me->next) {
          me = me->next;
          // prepare line and write it
          // sprintf_P( buff, PSTR("%s %s %c\n"),me->name, me->value, me->checksum );
          sprintf_P( buff, PSTR("\n%s %s %c\r"),me->name, me->value, me->checksum );
          myudp.write( buff);
        }
    
        // End of frame
        myudp.write(TINFO_ETX);
        myudp.endPacket();
        myudp.flush();
    
      }
    

    j'ai juste modifié la "fabrication de la trame UDP.
    Maintenant ça fonctionne et ma BDD se rempli correctement.
    La trame udp est seulement transmise à l'occasion d'une évolution d'une valeur.

    ...
    INSERT INTO DbiTeleinfo
      (DATE,ADCO,OPTARIF,ISOUSC,HCHC,HCHP,PTEC,IINST1,IMAX1,PAPP,HHPHC,MOTDETAT)
    VALUES
      (NOW(),'xxxxxxxxxxxx','HC..','45','009607033','000293332','HP..','003','090','00780','A','000000');
    ...
    

    Merci à Charles pour le travail effectué.

    Nouveau sur le raspi, si quelqu'un peut me proposer des outils efficaces pour programmer et debugger dans un environnement confortable...

    Bonne journée.


Log in to reply