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. PiTInfo
  5. téléinfo sur linky Triphasé mode Historique

téléinfo sur linky Triphasé mode Historique

Scheduled Pinned Locked Moved PiTInfo
25 Posts 3 Posters 7.1k Views 2 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.
  • E Eric44

    Bonjour @Charles ,
    Le module utilisé était un wemod teleinfo qui fonctionnait très bien connecté au linky de ma précédente maison (monophasé HC/HC). Le code était écrit grâce à ton aide.
    En voici le code injecté : teleinfoLinky.txt

    #include <LibTeleinfo.h>
    
      // Parsing JSON
      #include <ArduinoJson.h>
      const size_t capacity = JSON_OBJECT_SIZE(4) + JSON_ARRAY_SIZE(4) + 60;
    
      String chaineJSONenvoyee;
      
      float frequenceInterro=60;
      String commentairePutWS="";
      int PAC = 0;
    
    
    #define SERIAL_DEBUG  Serial
    #define SERIAL_TIC    Serial1
    
    // Teleinfo RXD pin is connected to ESP32-PICO-V3-02 GPIO8
    #define TIC_RX_PIN  23
    
    _Mode_e tinfo_mode = TINFO_MODE_HISTORIQUE; 
    //_Mode_e tinfo_mode = TINFO_MODE_STANDARD; 
    
    TInfo tinfo; // Teleinfo object
    
    // Wakeup de 5 secondes
    #define uS_TO_S_FACTOR 1000000ULL  /* Conversion factor for micro seconds to seconds */
    #define TIME_TO_SLEEP  5        /* Time ESP32 will go to sleep (in seconds) */
    
    #define LEDPIN LED_BUILTIN
      
    // Uptime timer
    boolean tick1sec=0;// one for interrupt, don't mess with 
    unsigned long uptime=0; // save value we can use in sketch even if we're interrupted
    
    String sendJSON(ValueList * me, boolean all){
      bool firstdatacomplete = true;
      bool firstdataenvoyee = true;
      String chaineJSONenvoyee = "";
      String chaineJSONcomplete = "";
      String Element_Valeur = "";
      String separateur = ",";
      String sep;
    
      // Got at least one ?
      if (me) {
    
        PAC = 0;
        // Json start
        chaineJSONenvoyee = "{\"commentaire\":" + "\"" + commentairePutWS + "\"";
        chaineJSONcomplete = "{\"commentaire\":" + "\"" + commentairePutWS + "\"";
    
        // Loop thru the node
        while (me->next) {
          // go to next node
          me = me->next;
    
          // uniquement sur les nouvelles valeurs ou celles modifiées 
          // sauf si explicitement demandé toutes
          if ( all || ( me->flags & (TINFO_FLAGS_UPDATED | TINFO_FLAGS_ADDED) ) ) {
            //Serial.println("|"+String(me->name)+"|") ;
              
    
              /*
              Serial.print(F("\"")) ;
              Serial.print(me->name) ;
              Serial.print(F("\":")) ;
              */
                
              // we have at least something ?
              if (me->value && strlen(me->value))
              {
                boolean isNumber = true;
                uint8_t c;
                char * p = me->value;
      
                // check if value is number
                while (*p && isNumber) {
                  if ( *p < '0' || *p > '9' )
                    isNumber = false;
                  p++;
                }
        
                // this will add "" on not number values
                if (!isNumber) {
                  Element_Valeur = "\"" + String(me->name) + "\":" + "\"" + String(me->value) + "\"";
                }
                // this will remove leading zero on numbers
                else
                  //Serial.print(atol(me->value));
                  Element_Valeur = "\"" + String(me->name) + "\":" + atol(me->value);
              }
              
              if (String(me->name) != "MSG1" && 
                  String(me->name) != "PJOURF+1" &&
                  String(me->name) != "ADSC" &&
                  String(me->name) != "VTIC" &&
                  String(me->name) != "NGTF" &&
                  String(me->name) != "LTARF" &&
                  String(me->name) != "EAST" &&
                  String(me->name) != "EASF01" &&
                  String(me->name) != "EASF02" &&
                  String(me->name) != "EASF03" &&
                  String(me->name) != "EASF04" &&
                  String(me->name) != "EASF05" &&
                  String(me->name) != "EASF06" &&
                  String(me->name) != "EASF07" &&
                  String(me->name) != "EASF08" &&
                  String(me->name) != "EASF09" &&
                  String(me->name) != "EASF10" &&
                  String(me->name) != "EASD01" &&
                  String(me->name) != "EASD02" &&
                  String(me->name) != "EASD03" &&
                  String(me->name) != "EASD04" &&
                  String(me->name) != "EAIT" &&
                  String(me->name) != "ERQ1" &&
                  String(me->name) != "ERQ2" &&
                  String(me->name) != "ERQ3" &&
                  String(me->name) != "ERQ4" &&
                  String(me->name) != "IRMS1" &&
                  String(me->name) != "URMS1" &&
                  String(me->name) != "PREF" &&
                  String(me->name) != "PCOUP" &&
                  String(me->name) != "PREF" &&
                  String(me->name) != "CCASN" &&
                  String(me->name) != "CCASN-1" &&
                  String(me->name) != "CCAIN" &&
                  String(me->name) != "CCAIN-1" &&
                  //String(me->name) != "UMOY1" &&
                  String(me->name) != "STGE" &&
                  String(me->name) != "PRM" &&
                  String(me->name) != "RELAIS" &&
                  String(me->name) != "NTARF" &&
                  String(me->name) != "NJOURF" &&
                  String(me->name) != "NJOURF+1" 
                  ){
                chaineJSONenvoyee = chaineJSONenvoyee + separateur + Element_Valeur;
              }
              
    
              chaineJSONcomplete = chaineJSONcomplete + separateur + Element_Valeur;
            }
          }
        
       // Json end
       //Serial.println(F("}")) ;
       chaineJSONenvoyee = chaineJSONenvoyee + "}";
       chaineJSONcomplete = chaineJSONcomplete + "}";
       Serial.println("chaineJSONcomplete = " + chaineJSONcomplete );
       Serial.println("chaineJSONenvoyee =  " + chaineJSONenvoyee );
    
       return chaineJSONcomplete;
      }
    }
    
    
    /* ======================================================================
    Function: NewFrame 
    Purpose : callback when we received a complete teleinfo frame
    Input   : linked list pointer on the concerned data
    Output  : - 
    Comments: -
    ====================================================================== */
    void NewFrame(ValueList * me){
      SERIAL_DEBUG.println("NewFrame - uptime=" + String(uptime));
      if (tick1sec) {
      concatlog("NewFrame - uptime=" + String(uptime));
      chaineJSONenvoyee = sendJSON(me, true);
      postconsoWS(chaineJSONenvoyee);
      postlogsindb();
      logcycle="";
      ledClignotte();
      tick1sec = false;
      }
      
    }
    
    /* ======================================================================
    Function: UpdatedFrame 
    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){
      SERIAL_DEBUG.println("UpdatedFrame - tick1sec=" + String(tick1sec));
      if (tick1sec) {
        concatlog("UpdatedFrame - uptime=" + String(uptime));
      chaineJSONenvoyee = sendJSON(me, true);
      postconsoWS(chaineJSONenvoyee);
      postlogsindb();
      logcycle="";
      ledClignotte();
        tick1sec = false;
      }
      
    }
    
    /* ======================================================================
    Function: initSerial
    Purpose : Configure (or reconfigure Serial Port)
    Input   : -
    Output  : - 
    Comments: -
    ====================================================================== */
    void initSerial(){
      // Cleanup
      SERIAL_TIC.flush();
      SERIAL_TIC.end();
    
      // Configure Teleinfo 
      SERIAL_DEBUG.printf_P(PSTR("TIC RX=GPIO%d  Mode:"), TIC_RX_PIN);
      SERIAL_TIC.begin(tinfo_mode == TINFO_MODE_HISTORIQUE ? 1200 : 9600, SERIAL_7E1, TIC_RX_PIN);
    
      if ( tinfo_mode == TINFO_MODE_HISTORIQUE ) {
        SERIAL_DEBUG.println(F("Historique"));
      } else {
        SERIAL_DEBUG.println(F("Standard"));
      }
    }
    
    /* ======================================================================
    Function: ledOff
    Purpose : Setup I/O for RGB Led to be OFF
    Input   : -
    Output  : - 
    Comments: -
    ====================================================================== */
    void ledClignotte(){
      digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(1000);                       // wait for a second
      digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    }
    
    /* ======================================================================
    Function: setup
    Purpose : Setup I/O and other one time startup stuff
    Input   : -
    Output  : - 
    Comments: -
    ====================================================================== */
    void setup(){
      SERIAL_DEBUG.begin(115200);
      pinMode(LED_BUILTIN, OUTPUT);
    
      // Serial, pour le debug
      SERIAL_DEBUG.println(F("\r\n\r\n"));
      SERIAL_DEBUG.println(F("================================================="));
      SERIAL_DEBUG.println(F("     D1 Mini ESP32 - Teleinfo Lynky Alim WS      "));
      SERIAL_DEBUG.println(F("================================================="));
      SERIAL_DEBUG.println(F("\r\n"));
    
    
    
              SERIAL_DEBUG.println("[Setup] Gestion du Wifi avec WifiManager");
            WifiGestion();
    
            //SERIAL_DEBUG.println("[Setup] Récupération des paramètres de cet arduino : Fréquence d'interrogation et du commentaire de prise de mesure");
            //GET_params_arduino();
    
            SERIAL_DEBUG.println("[Setup] Alimentation des logs en BDD à travers le service REST (Requête POST)");
            SERIAL_DEBUG.println("-------------------------------------------------------------------------------");
            concatlog("[Setup] Alimentation des logs en BDD (Req POST)");
            postlogsindb();
            
      // Init Serial Port
      initSerial();
    
      // Init teleinfo
      tinfo.init(tinfo_mode);
    
      // Attacher les callback dont nous avons besoin
      // pour cette demo, ADPS et TRAME modifiée
      tinfo.attachUpdatedFrame(UpdatedFrame);
      tinfo.attachNewFrame(NewFrame); 
    }
    
    /* ======================================================================
    Function: loop
    Purpose : infinite loop main code
    Input   : -
    Output  : - 
    Comments: -
    ====================================================================== */
    void loop()
    {
      static char c;
      static unsigned long previousMillis = 0;
      static uint8_t buttonState = 0;
      static unsigned long lastDebounceTime = 0;  
    
      unsigned long currentMillis = millis();
    
      /*
      // Avons nous recu un ticker de seconde?
      if (tick1sec) {
        tick1sec = false;
        uptime++;
      }
      */
      
      // On a reçu un caractère ?
      if ( SERIAL_TIC.available() ) {
        // Le lire
        c = SERIAL_TIC.read();
    
        // Gérer
        tinfo.process(c);
    
        
        // L'affcher dans la console
        if (c==TINFO_STX) {
          SERIAL_DEBUG.print("<STX>");
        } else if (c==TINFO_ETX) {
          SERIAL_DEBUG.print("<ETX>");
        } else if (c==TINFO_HT) {
          SERIAL_DEBUG.print("<TAB>");
        } else {
          SERIAL_DEBUG.print(c);
        }
        
      }
    
      //SERIAL_DEBUG.println("currentMillis=" + String(currentMillis) + "previousMillis=" + String(previousMillis));
      if (currentMillis - previousMillis > 60000 ) {
        SERIAL_DEBUG.println("IL FAUT ENREGISTRER UNE MESURE");
        // save the last time you blinked the LED 
        previousMillis = currentMillis;   
        tick1sec = true;
      }
    }
    

    Suite à la proposition de @Nicolas-Bernaerts, j'ai commandé un Denky D4 1.3a mais ne connaissant pas du tout Tasmota, je me heurte à la configuration. Quel test rapide puis-je faire pour vérifier les valeurs récupérées du flux téléinfo ? (A terme, l'idée est de pouvoir injecter les consos de mes 3 phases toutes les minutes à ma base de données mySql (hébergée par AlwaysData)

    Nicolas BernaertsN Offline
    Nicolas BernaertsN Offline
    Nicolas Bernaerts
    wrote on last edited by
    #6

    @Eric44
    https://github.com/NicolasBernaerts/tasmota/tree/master/teleinfo

    E 1 Reply Last reply
    • Nicolas BernaertsN Nicolas Bernaerts

      @Eric44
      https://github.com/NicolasBernaerts/tasmota/tree/master/teleinfo

      E Offline
      E Offline
      Eric44
      wrote on last edited by Eric44
      #7

      @Nicolas-Bernaerts
      Merci pour la référence et désolé pour la réactivité, je suis encore actuellement plus sur le gros œuvre que sur la domotique 😕
      J'ai réussi à uploader ton module téléinfo tasmota et m'y connecter. Par contre, il m'affiche l'erreur "TInfo Rx non configuré". En regardant dans les paramètres du module, je n'y vois aucun paramétrage. Peut-être est-ce là qu'il me manque quelque chose ?
      Merci par avance de ton retour.
      WhatsApp Image 2025-05-16 at 11.04.02.jpeg
      WhatsApp Image 2025-05-16 at 11.04.07.jpeg

      Nicolas BernaertsN CharlesC 2 Replies Last reply
      • E Eric44

        @Nicolas-Bernaerts
        Merci pour la référence et désolé pour la réactivité, je suis encore actuellement plus sur le gros œuvre que sur la domotique 😕
        J'ai réussi à uploader ton module téléinfo tasmota et m'y connecter. Par contre, il m'affiche l'erreur "TInfo Rx non configuré". En regardant dans les paramètres du module, je n'y vois aucun paramétrage. Peut-être est-ce là qu'il me manque quelque chose ?
        Merci par avance de ton retour.
        WhatsApp Image 2025-05-16 at 11.04.02.jpeg
        WhatsApp Image 2025-05-16 at 11.04.07.jpeg

        Nicolas BernaertsN Offline
        Nicolas BernaertsN Offline
        Nicolas Bernaerts
        wrote on last edited by
        #8

        @Eric44 si rien n'est configuré c'est normal que cela ne fonctionne pas.
        Sélectionnez Denky D4 (0) et appliquez. l'ESP devrait rebooter et être configuré.

        E 2 Replies Last reply
        • Nicolas BernaertsN Nicolas Bernaerts

          @Eric44 si rien n'est configuré c'est normal que cela ne fonctionne pas.
          Sélectionnez Denky D4 (0) et appliquez. l'ESP devrait rebooter et être configuré.

          E Offline
          E Offline
          Eric44
          wrote on last edited by
          #9
          This post is deleted!
          1 Reply Last reply
          • Nicolas BernaertsN Nicolas Bernaerts

            @Eric44 si rien n'est configuré c'est normal que cela ne fonctionne pas.
            Sélectionnez Denky D4 (0) et appliquez. l'ESP devrait rebooter et être configuré.

            E Offline
            E Offline
            Eric44
            wrote on last edited by
            #10

            Merci beaucoup @Nicolas-Bernaerts, j'ai à présent accès aux consommations maxi. Par contre, alors que je note le compteur de trames évoluer, ma consommation en temps réel n'est pas alimentée. A quel niveau dois-je agir pour l'afficher ?

            Nicolas BernaertsN 1 Reply Last reply
            • E Eric44

              Merci beaucoup @Nicolas-Bernaerts, j'ai à présent accès aux consommations maxi. Par contre, alors que je note le compteur de trames évoluer, ma consommation en temps réel n'est pas alimentée. A quel niveau dois-je agir pour l'afficher ?

              Nicolas BernaertsN Offline
              Nicolas BernaertsN Offline
              Nicolas Bernaerts
              wrote on last edited by
              #11

              @Eric44 vous n'avez pas le bouton "courbes" ?

              1 Reply Last reply
              • E Eric44

                @Nicolas-Bernaerts
                Merci pour la référence et désolé pour la réactivité, je suis encore actuellement plus sur le gros œuvre que sur la domotique 😕
                J'ai réussi à uploader ton module téléinfo tasmota et m'y connecter. Par contre, il m'affiche l'erreur "TInfo Rx non configuré". En regardant dans les paramètres du module, je n'y vois aucun paramétrage. Peut-être est-ce là qu'il me manque quelque chose ?
                Merci par avance de ton retour.
                WhatsApp Image 2025-05-16 at 11.04.02.jpeg
                WhatsApp Image 2025-05-16 at 11.04.07.jpeg

                CharlesC Offline
                CharlesC Offline
                Charles
                wrote on last edited by
                #12

                @Eric44 pour info après un autoconf la configuration du D4 doit être la suivante

                39c5dc2c-6f23-43da-9caf-65faab6bc328-image.png

                1 Reply Last reply
                • E Offline
                  E Offline
                  Eric44
                  wrote on last edited by
                  #13

                  J'ai l'impression que tout est opérationnel à présent. Il va me falloir à présent trouver comment alimenter ma base de données avec les puissances soutirées des trois phases. Une idée ?

                  E 1 Reply Last reply
                  • E Eric44

                    J'ai l'impression que tout est opérationnel à présent. Il va me falloir à présent trouver comment alimenter ma base de données avec les puissances soutirées des trois phases. Une idée ?

                    E Offline
                    E Offline
                    Eric44
                    wrote on last edited by
                    #14

                    EDIT : J'allais oublier de dire que j'ai une api en post exposée pour intégration à ma bdd.

                    CharlesC 1 Reply Last reply
                    • E Eric44

                      EDIT : J'allais oublier de dire que j'ai une api en post exposée pour intégration à ma bdd.

                      CharlesC Offline
                      CharlesC Offline
                      Charles
                      wrote on last edited by
                      #15

                      @Eric44 regarde l'exemple en berry de la doc, ça envoi dans une database EMONCMS, mais le principe reste exactement le même.

                      https://github.com/hallard/Denky-D4?tab=readme-ov-file#send-data-to-emoncms-with-berry

                      E 1 Reply Last reply
                      • CharlesC Charles

                        @Eric44 regarde l'exemple en berry de la doc, ça envoi dans une database EMONCMS, mais le principe reste exactement le même.

                        https://github.com/hallard/Denky-D4?tab=readme-ov-file#send-data-to-emoncms-with-berry

                        E Offline
                        E Offline
                        Eric44
                        wrote on last edited by
                        #16

                        Merci beaucoup @Charles je vais essayer cette piste. Cependant, maintenant que la solution Tascoma m'a prouvée que mon téléinfo fonctionnait correctement, je ne comprends pas pourquoi le code que j'utilisais sur mon ancien linky ne fonctionne plus 😞
                        Est-ce que tu as une piste ? Parce que ce serait beaucoup plus simple pour moi qui ai juste besoin de transmettre dans ma BDD la consommation instantanée toutes les minutes.

                        Nicolas BernaertsN 1 Reply Last reply
                        • E Eric44

                          Merci beaucoup @Charles je vais essayer cette piste. Cependant, maintenant que la solution Tascoma m'a prouvée que mon téléinfo fonctionnait correctement, je ne comprends pas pourquoi le code que j'utilisais sur mon ancien linky ne fonctionne plus 😞
                          Est-ce que tu as une piste ? Parce que ce serait beaucoup plus simple pour moi qui ai juste besoin de transmettre dans ma BDD la consommation instantanée toutes les minutes.

                          Nicolas BernaertsN Offline
                          Nicolas BernaertsN Offline
                          Nicolas Bernaerts
                          wrote on last edited by Nicolas Bernaerts
                          #17

                          @Eric44 En monophasé et en triphasé les étiquettes teleinfo ne sont pas les mêmes. C'est sans doute pour cela que le soft ne fonctionne plus directement et qu'il nécessite une adaptation.
                          Concernant la base de donnée, vous avez à disposition un connecteur InfluxDb qui est une base de donnée temporelle très utilisée.

                          E 1 Reply Last reply
                          • Nicolas BernaertsN Nicolas Bernaerts

                            @Eric44 En monophasé et en triphasé les étiquettes teleinfo ne sont pas les mêmes. C'est sans doute pour cela que le soft ne fonctionne plus directement et qu'il nécessite une adaptation.
                            Concernant la base de donnée, vous avez à disposition un connecteur InfluxDb qui est une base de donnée temporelle très utilisée.

                            E Offline
                            E Offline
                            Eric44
                            wrote on last edited by
                            #18

                            @Nicolas-Bernaerts j'entends bien que les étiquettes ne sont pas les mêmes mais dans mon code, les callbacks ne sont même pas appelés pour afficher un petit pourront en console.
                            Quant à la bdd, je l'ai déjà. C'est celle qui gère mes différents objets connectés et sur lesquels je veux agir en fonction de mes panneaux solaires d'où l'interrogation du téléinfo 🤓

                            E 1 Reply Last reply
                            • E Eric44

                              @Nicolas-Bernaerts j'entends bien que les étiquettes ne sont pas les mêmes mais dans mon code, les callbacks ne sont même pas appelés pour afficher un petit pourront en console.
                              Quant à la bdd, je l'ai déjà. C'est celle qui gère mes différents objets connectés et sur lesquels je veux agir en fonction de mes panneaux solaires d'où l'interrogation du téléinfo 🤓

                              E Offline
                              E Offline
                              Eric44
                              wrote on last edited by Eric44
                              #19

                              Bonjour,
                              J'avance dans la solution berry. La fonction appelle bien à fréquence régulière mon API via la fonction send_to_api. Par contre, la règle alimentant mon json ne semble pas être appelée (pour info, j'ai mis un print en tout début de fonction rule_tic et je ne le retrouve pas dans la console). Que me conseillez vous ?
                              J'ai ce morceau de code dans mon start de autoexec..be :

                                tasmota.add_rule("TIC", rule_tic)
                              

                              Est-ce qu'il y aurait un problème vis à vis de l'évènement TIC ?
                              PS : Je n'ai rien configuré du côté de MQTT

                              E 1 Reply Last reply
                              • E Eric44

                                Bonjour,
                                J'avance dans la solution berry. La fonction appelle bien à fréquence régulière mon API via la fonction send_to_api. Par contre, la règle alimentant mon json ne semble pas être appelée (pour info, j'ai mis un print en tout début de fonction rule_tic et je ne le retrouve pas dans la console). Que me conseillez vous ?
                                J'ai ce morceau de code dans mon start de autoexec..be :

                                  tasmota.add_rule("TIC", rule_tic)
                                

                                Est-ce qu'il y aurait un problème vis à vis de l'évènement TIC ?
                                PS : Je n'ai rien configuré du côté de MQTT

                                E Offline
                                E Offline
                                Eric44
                                wrote on last edited by Eric44
                                #20

                                Je me permets de revenir sur le forum parce que je sèche complètement. Je ne comprends pas pourquoi ma règle ne s'exécute pas.
                                Voici mon code simplifié à l'extrème :

                                var post_every = 15000 # Envoi toutes les 15 secondes
                                var variabletest = "vide"
                                 
                                def send_to_api()
                                  print("variable test:", variabletest) # Pour le débogage dans la console Tasmota
                                  tasmota.set_timer(post_every, send_to_api) # Redémarre le minuteur pour le prochain envoi
                                end
                                 
                                def rule_tic(value, trigger)
                                  variabletest = "TIC"
                                end
                                 
                                def start()
                                  tasmota.add_rule("TIC", rule_tic)
                                  tasmota.set_timer(5000, send_to_api)
                                end
                                 
                                tasmota.set_timer(10000, start)
                                
                                

                                Dans la console, suite au redémarrage, je vois ce résultat (avec la ligne réduite des valeurs de mon compteur). Ma variable variabletest (qui semble globale de ce que j'ai lu sur le sujet) n'est jamais alimentée par la valeur "TIC".

                                18:03:23.535 TIC: Fabricant Sagem / Sagemcom (2019)
                                18:03:23.536 TIC: Linky triphasé 60A
                                18:03:26.567 RSL: SENSOR = {"Time":"2025-06-05T18:03:26","METER":{"PH":...
                                18:03:30.517 variable test: vide
                                18:03:31.502 RSL: LIVE = {"METER":{"PH...
                                18:03:33.570 RSL: TIC = {"ADCO":"...
                                18:03:36.555 RSL: SENSOR = {"Time":"2025-06-05T18:03:36","METER":{"PH"...
                                18:03:41.577 RSL: LIVE = {"METER":{"PH":...
                                18:03:43.567 RSL: TIC = {"ADCO":"...
                                18:03:46.519 variable test: vide
                                18:03:46.525 RSL: SENSOR = {"Time":"2025-06-05T18:03:46","METER":{"PH":...
                                
                                

                                Quelqu'un peut m'aider ? Je commence à manquer de cheveux pour poursuivre de me les arracher 😐

                                Nicolas BernaertsN 1 Reply Last reply
                                • E Eric44

                                  Je me permets de revenir sur le forum parce que je sèche complètement. Je ne comprends pas pourquoi ma règle ne s'exécute pas.
                                  Voici mon code simplifié à l'extrème :

                                  var post_every = 15000 # Envoi toutes les 15 secondes
                                  var variabletest = "vide"
                                   
                                  def send_to_api()
                                    print("variable test:", variabletest) # Pour le débogage dans la console Tasmota
                                    tasmota.set_timer(post_every, send_to_api) # Redémarre le minuteur pour le prochain envoi
                                  end
                                   
                                  def rule_tic(value, trigger)
                                    variabletest = "TIC"
                                  end
                                   
                                  def start()
                                    tasmota.add_rule("TIC", rule_tic)
                                    tasmota.set_timer(5000, send_to_api)
                                  end
                                   
                                  tasmota.set_timer(10000, start)
                                  
                                  

                                  Dans la console, suite au redémarrage, je vois ce résultat (avec la ligne réduite des valeurs de mon compteur). Ma variable variabletest (qui semble globale de ce que j'ai lu sur le sujet) n'est jamais alimentée par la valeur "TIC".

                                  18:03:23.535 TIC: Fabricant Sagem / Sagemcom (2019)
                                  18:03:23.536 TIC: Linky triphasé 60A
                                  18:03:26.567 RSL: SENSOR = {"Time":"2025-06-05T18:03:26","METER":{"PH":...
                                  18:03:30.517 variable test: vide
                                  18:03:31.502 RSL: LIVE = {"METER":{"PH...
                                  18:03:33.570 RSL: TIC = {"ADCO":"...
                                  18:03:36.555 RSL: SENSOR = {"Time":"2025-06-05T18:03:36","METER":{"PH"...
                                  18:03:41.577 RSL: LIVE = {"METER":{"PH":...
                                  18:03:43.567 RSL: TIC = {"ADCO":"...
                                  18:03:46.519 variable test: vide
                                  18:03:46.525 RSL: SENSOR = {"Time":"2025-06-05T18:03:46","METER":{"PH":...
                                  
                                  

                                  Quelqu'un peut m'aider ? Je commence à manquer de cheveux pour poursuivre de me les arracher 😐

                                  Nicolas BernaertsN Offline
                                  Nicolas BernaertsN Offline
                                  Nicolas Bernaerts
                                  wrote on last edited by Nicolas Bernaerts
                                  #21

                                  @Eric44 je ne suis pas très familier de berry.
                                  Mais je pense que
                                  tasmota.add_rule("TIC", rule_tic)
                                  attend la clé TIC mais uniquement dans le topic SENSOR.
                                  Est ce que la donnée cherchée est disponible sous SENSOR ?
                                  Sinon, pour récupérer les données publiées sous le topic TIC, une solution serait mqtt_subscribe. Vous pourrez alors parser le JSON récupéré.

                                  E 1 Reply Last reply
                                  • Nicolas BernaertsN Nicolas Bernaerts

                                    @Eric44 je ne suis pas très familier de berry.
                                    Mais je pense que
                                    tasmota.add_rule("TIC", rule_tic)
                                    attend la clé TIC mais uniquement dans le topic SENSOR.
                                    Est ce que la donnée cherchée est disponible sous SENSOR ?
                                    Sinon, pour récupérer les données publiées sous le topic TIC, une solution serait mqtt_subscribe. Vous pourrez alors parser le JSON récupéré.

                                    E Offline
                                    E Offline
                                    Eric44
                                    wrote on last edited by
                                    #22

                                    Merci beaucoup @Nicolas-Bernaerts
                                    J'ai à présent une solution qui semble pleinement opérationnelle. Reste plus qu'à exploiter mes données en base de données !
                                    De manière générale merci beaucoup à @Charles et @Nicolas-Bernaerts . Votre travail est vraiment top ! La balle est à présent dans mon camp pour optimiser mon installation avec panneaux solaires et stratégie adaptée.

                                    1 Reply Last reply
                                    • E Offline
                                      E Offline
                                      Eric44
                                      wrote on last edited by
                                      #23

                                      Dis moi @Nicolas-Bernaerts , la courbe affichée dans l'IHM du téléinfo peut-elle afficher des valeurs négatives dans le cas d'une injection de courant dans le réseau par utilisation de panneau solaire ?
                                      Parce que j'en ai branché un sur ma phase 3 et je ne vois pas le chiffre récupéré via le message json passer en valeur négative (ce qui était le cas avec mon ancienne installation). Du coup, je n'arrive pas à savoir quand je produis plus que je ne consomme 😞

                                      Nicolas BernaertsN 1 Reply Last reply
                                      • E Eric44

                                        Dis moi @Nicolas-Bernaerts , la courbe affichée dans l'IHM du téléinfo peut-elle afficher des valeurs négatives dans le cas d'une injection de courant dans le réseau par utilisation de panneau solaire ?
                                        Parce que j'en ai branché un sur ma phase 3 et je ne vois pas le chiffre récupéré via le message json passer en valeur négative (ce qui était le cas avec mon ancienne installation). Du coup, je n'arrive pas à savoir quand je produis plus que je ne consomme 😞

                                        Nicolas BernaertsN Offline
                                        Nicolas BernaertsN Offline
                                        Nicolas Bernaerts
                                        wrote on last edited by
                                        #24

                                        @Eric44 la courbe de conso ne passe jamais en négatif. Si vous reinjectez du courant sur le réseau Enedis, la courbe de production apparaitra en jaune. Mais il faut que le contrat le permette pour que le linky publie la production.

                                        E 1 Reply Last reply
                                        • Nicolas BernaertsN Nicolas Bernaerts

                                          @Eric44 la courbe de conso ne passe jamais en négatif. Si vous reinjectez du courant sur le réseau Enedis, la courbe de production apparaitra en jaune. Mais il faut que le contrat le permette pour que le linky publie la production.

                                          E Offline
                                          E Offline
                                          Eric44
                                          wrote on last edited by
                                          #25

                                          @Nicolas-Bernaerts En effet, l'installation photovoltaïque de ma précédente maison avait été réalisée par une entreprise. Là, il s'agit d'un simple panneau plug'n play. Je vais voir commente je peux faire autrement. Merci

                                          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


                                          1

                                          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