Community Forum
    • Blog
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Denky D4 + Tempo

    Scheduled Pinned Locked Moved Denky D4
    23 Posts 5 Posters 1.9k Views
    Loading More Posts
    • 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.
    • Nicolas BernaertsN Offline
      Nicolas Bernaerts @Charles
      last edited by

      @Charles Merci 😚

      1 Reply Last reply Reply Quote
      • T Offline
        Tostaky @Charles
        last edited by

        This post is deleted!
        1 Reply Last reply Reply Quote
        • T Offline
          Tostaky @Charles
          last edited by Tostaky

          @Charles said in Denky D4 + Tempo:

          @Tostaky

          C'est pas normal, tu dois avoir une trace de STEG comme c'est codé ici et du dois aussi l'avoir dans la trame MQTT si c'est configuré non?

          Pas de MQTT pour moi. Néanmoins, j'ai des gros doigts. STGE != STEG.

          21:03:25.957 RSL: SENSOR = {"Time":"2023-12-06T21:03:25","ENERGY":{"TotalStartTime":"2023-12-06T09:54:49","Total":14623.401,"Yesterday":14.950,"Today":4.984,"Period":[0,0,0],"Power":[0,227,336],"ApparentPower":[0,227,336],"ReactivePower":[0,0,0],"Factor":[0.00,1.00,1.00],"Voltage":[238,224,241],"Current":[0.000,1.000,1.000],"Load":0},"TIC":{"ADSC":"022076***","VTIC":2,"NGTF":"TEMPO","LTARF":"HP  ROUGE","EAST":14623401,"EASF01":6659364,"EASF02":7829254,"EASF03":76043,"EASF04":30388,"EASF05":16803,"EASF06":11549,"EASF07":0,"EASF08":0,"EASF09":0,"EASF10":0,"EASD01":9237921,"EASD02":2600419,"EASD03":1209456,"EASD04":1575605,"EAIT":3127874,"ERQ1":1964972,"ERQ2":362712,"ERQ3":54345,"ERQ4":927425,"IRMS1":0,"IRMS2":1,"IRMS3":1,"URMS1":238,"URMS2":224,"URMS3":241,"PREF":9,"PCOUP":9,"SINSTS":595,"SINSTS1":31,"SINSTS2":227,"SINSTS3":336,"SMAXSN":3380,"SMAXSN1":1090,"SMAXSN2":1030,"SMAXSN3":1300,"SMAXSN-1":6480,"SMAXSN1-1":3090,"SMAXSN2-1":2670,"SMAXSN3-1":1390,"SINSTI":0,"SMAXIN":2710,"SMAXIN-1":260,"CCASN":390,"CCASN-1":426,"CCAIN":0,"CCAIN-1":0,"UMOY1":236,"UMOY2":224,"UMOY3":240,"STGE":"9B3AD501","PRM":****,"RELAIS":0,"NTARF":6,"NJOURF":0,"NJOURF+1":0}}
          

          STGE = xBxxxxx => B = 1011 => aujourd'hui rouge (3), demain blanc (2).
          L'interface affiche toujours rouge / rouge

          @Nicolas-Bernaerts said in Denky D4 + Tempo:

          @Tostaky @localhost61 @Charles Hello,

          Pour information, je suis en train d'intégrer la lecture des données Tempo de RTE dans mon fork Tasmota Teleinfo.

          Un nouveau topic MQTT sera disponible afin de récupérer les données :

          .../sensor/TEMPO
              {"Time":"2022-10-10T23:51:09", "Tempo":{"J-1":"bleu","J":"blanc","J+1":"rouge"}}
          

          Pour rĂ©cupĂ©rer ces donnĂ©es, il faudra simplement avoir créé un compte sur le site RTE et gĂ©nĂ©rĂ© sa clĂ© privĂ©e (mĂȘme compte que pour Ecowatt).

          Je pense pouvoir publier cette nouvelle version d'ici 1 ou 2 jours.

          Capture d’écran du 2023-12-05 21-34-06.png

          Génial.
          Je viens de terminer mon alerting mail en m'appuyant sur l'API publique d'EDF. Pas besoin de compte et de clef d'API.
          Le code est lĂ  : https://github.com/sosandroid/Monitoring_Energie/tree/main/src/tempo

          CharlesC 1 Reply Last reply Reply Quote
          • Nicolas BernaertsN Offline
            Nicolas Bernaerts @Nicolas Bernaerts
            last edited by Nicolas Bernaerts

            Je viens de publier une version Teleinfo v13.2 qui gĂšre :

            • Tempo
            • Ecowatt v4 et v5

            Attention, le fichier de configuration sur le littlefs est maintenant rte.cfg (au lieu de ecowatt.cfg).

            Si vous aviez déclaré Ecowatt précédemment, il faudra :

            • redĂ©clarer votre clĂ© privĂ©e via rte_key maclebase64
            • activer ecowatt de nouveau via eco_enable 1
            • activer tempo via tempo_enable 1
            • redĂ©marrer l'ESP

            L'aide est disponible en mode console via rte_help.

            WendigogoW 1 Reply Last reply Reply Quote
            • CharlesC Offline
              Charles @Tostaky
              last edited by Charles

              @Tostaky said in Denky D4 + Tempo:

              STGE = xBxxxxx => B = 1011 => aujourd'hui rouge (3), demain blanc (2).
              L'interface affiche toujours rouge / rouge

              je comprends pas j'ai testĂ© le mĂȘme code et aucun soucis

              https://onlinegdb.com/_VnKGhRZ5

              #include <stdio.h>
              #include <stdlib.h>
              #include <stdint.h>
              
              
              int main()
              {
                  uint32_t status_register = strtol("9B3AD501", NULL, 16);
                  printf("Status Register is 0x%08X\r\n", status_register);
                  
                  if (status_register >> 24) {
                      char txt[32]; 
                      uint8_t sr = status_register >> 24;
                      uint8_t val = sr & 0x03;
                      if (val) {
                          printf("Jour %s\r\n", val==1?"Bleu":val==2?"Blanc":"Rouge");
                      }
                      val = (sr >> 2) & 0x03;
                      if (val) {
                          printf("Demain %s\r\n", val==1?"Bleu":val==2?"Blanc":"Rouge");
                      }
                      val = (sr >> 4) & 0x03;
                      if (val) {
                          printf("Préavis pointe mobile %d\r\n", val);
                      }
                      val = (sr >> 6) & 0x03;
                      if (val) {
                          printf("Pointe mobile en cours %d\r\n", val);
                      }
                  }
                  return 0;
              }
              

              La sortie donne bien ça

              Status Register is 0x9B3AD501
              Jour Rouge
              Demain Blanc
              Préavis Pointe mobile 1
              Pointe mobile En cours 2
              

              peut ĂȘtre essayer cette 2eme mĂ©thode au cas ou (avec aussi le strtol changĂ© en strtoul)
              https://onlinegdb.com/ADbvc4273

              #include <stdio.h>
              #include <stdlib.h>
              #include <stdint.h>
              
              
              int main()
              {
                  uint32_t status_register = strtoul("9B3AD501", NULL, 16);
                  printf("Status Register is 0x%08X\r\n", status_register);
                  
                  if (status_register >> 24) {
                      char txt[32]; 
                      char coul[4][6] = { "----", "Bleu", "Blanc", "Rouge" };
                      
                      uint8_t sr = status_register >> 24;
                      uint8_t val = sr & 0x03;
                      if (val) {
                          printf("Jour %s\r\n", coul[val]);
                      }
                      val = (sr >> 2) & 0x03;
                      if (val) {
                          printf("Demain %s\r\n", coul[val]);
                      }
                      val = (sr >> 4) & 0x03;
                      if (val) {
                          printf("Préavis pointe mobile %d\r\n", val);
                      }
                      val = (sr >> 6) & 0x03;
                      if (val) {
                          printf("Pointe mobile en cours %d\r\n", val);
                      }
                  }
                  return 0;
                  return 0;
              }
              

              qui donne la mĂȘme chose mais codĂ© diffĂ©remment, t'as moyen de tester ?

              T 1 Reply Last reply Reply Quote
              • WendigogoW Offline
                Wendigogo @Nicolas Bernaerts
                last edited by

                @Nicolas-Bernaerts : Excellent !
                Je mets Ă  jour le Denky-D4.

                Tu penses inclure le code de @Tostaky pour ne plus avoir à créer de compte EDF ?

                Merci.

                Nicolas BernaertsN 2 Replies Last reply Reply Quote
                • Nicolas BernaertsN Offline
                  Nicolas Bernaerts @Wendigogo
                  last edited by

                  @Wendigogo En fait, le problĂšme est double :

                  • les API EDF rĂ©pondent quand elles veulent ... elles peuvent mettre 10s a rĂ©pondre et l'ESP reboot en watchdog
                  • elles sont trĂšs en retard par rapport Ă  RTE : RTE donne l'info vers 9h, EDF souvent aprĂšs 11h
                    Donc les données RTE sont beaucoup plus fiables sur les 2 aspects.
                  WendigogoW 1 Reply Last reply Reply Quote
                  • Nicolas BernaertsN Offline
                    Nicolas Bernaerts @Wendigogo
                    last edited by

                    @Wendigogo Je suis en train de voir comment exploiter l'etiquette STGE pour recuperer ces donnees directement depuis le compteur. Mais il reste a verifier la fiabilite et la prevenance.

                    1 Reply Last reply Reply Quote
                    • WendigogoW Offline
                      Wendigogo @Nicolas Bernaerts
                      last edited by

                      @Nicolas-Bernaerts : Merci pour ces explications. J'ai créé un compte RTE du coup.

                      1 Reply Last reply Reply Quote
                      • T Offline
                        Tostaky @Charles
                        last edited by

                        @Charles said in Denky D4 + Tempo:

                        @Tostaky said in Denky D4 + Tempo:

                        STGE = xBxxxxx => B = 1011 => aujourd'hui rouge (3), demain blanc (2).
                        L'interface affiche toujours rouge / rouge

                        je comprends pas j'ai testĂ© le mĂȘme code et aucun soucis

                        https://onlinegdb.com/_VnKGhRZ5

                        #include <stdio.h>
                        #include <stdlib.h>
                        #include <stdint.h>
                        
                        
                        int main()
                        {
                            uint32_t status_register = strtol("9B3AD501", NULL, 16);
                            printf("Status Register is 0x%08X\r\n", status_register);
                            
                            if (status_register >> 24) {
                                char txt[32]; 
                                uint8_t sr = status_register >> 24;
                                uint8_t val = sr & 0x03;
                                if (val) {
                                    printf("Jour %s\r\n", val==1?"Bleu":val==2?"Blanc":"Rouge");
                                }
                                val = (sr >> 2) & 0x03;
                                if (val) {
                                    printf("Demain %s\r\n", val==1?"Bleu":val==2?"Blanc":"Rouge");
                                }
                                val = (sr >> 4) & 0x03;
                                if (val) {
                                    printf("Préavis pointe mobile %d\r\n", val);
                                }
                                val = (sr >> 6) & 0x03;
                                if (val) {
                                    printf("Pointe mobile en cours %d\r\n", val);
                                }
                            }
                            return 0;
                        }
                        

                        La sortie donne bien ça

                        Status Register is 0x9B3AD501
                        Jour Rouge
                        Demain Blanc
                        Préavis Pointe mobile 1
                        Pointe mobile En cours 2
                        

                        peut ĂȘtre essayer cette 2eme mĂ©thode au cas ou (avec aussi le strtol changĂ© en strtoul)
                        https://onlinegdb.com/ADbvc4273

                        #include <stdio.h>
                        #include <stdlib.h>
                        #include <stdint.h>
                        
                        
                        int main()
                        {
                            uint32_t status_register = strtoul("9B3AD501", NULL, 16);
                            printf("Status Register is 0x%08X\r\n", status_register);
                            
                            if (status_register >> 24) {
                                char txt[32]; 
                                char coul[4][6] = { "----", "Bleu", "Blanc", "Rouge" };
                                
                                uint8_t sr = status_register >> 24;
                                uint8_t val = sr & 0x03;
                                if (val) {
                                    printf("Jour %s\r\n", coul[val]);
                                }
                                val = (sr >> 2) & 0x03;
                                if (val) {
                                    printf("Demain %s\r\n", coul[val]);
                                }
                                val = (sr >> 4) & 0x03;
                                if (val) {
                                    printf("Préavis pointe mobile %d\r\n", val);
                                }
                                val = (sr >> 6) & 0x03;
                                if (val) {
                                    printf("Pointe mobile en cours %d\r\n", val);
                                }
                            }
                            return 0;
                            return 0;
                        }
                        

                        qui donne la mĂȘme chose mais codĂ© diffĂ©remment, t'as moyen de tester ?

                        Je n'ai pas modifié de code coté Denky car j'ai pris un firmware déjà compilé.
                        A la lecture du code, je suis 100% d'accord avec le fonctionnement.
                        Comme le script Berry accÚde à la valeur STGE et la décode correctement pour la transmettre à EmonCMS, j'en déduis que c'est quelque part entre la libteleinfo et l'affichage.

                        C'est plus Ă  titre informatif que je fais remonter car j'utilise peu l'affichage

                        1 Reply Last reply Reply Quote
                        • T Offline
                          Tostaky
                          last edited by

                          Bonjour,

                          Pour continuer sur ce sujet, j'ai essayé de passer sur le firmware de @Nicolas-Bernaerts. Les différents retours que j'ai pu lire est que cela améliore la comptabilisation de l'énergie entre Enedis, le Denky et EmonCMS.

                          Aujourd'hui j'utilise un firmware "standard" et un script Berry pour alimenter EmonCMS toutes les 8500ms.

                          En passant à la version 14.9beta de @Nicolas-Bernaerts, je n'ai plus de données qui remlontent. Le script Berry ne fonctionne plus.
                          J'ai fait un rollback et tout est rentré dans l'ordre.

                          Néanmoins, je voudrais tester ce firmware. De maniÚre à préparer le script avant (je n'ai pas accÚs au Denky avant le WE prochain), est-il possible de valider que le script simplifié suivant

                          var payload = {}
                          def rule_tic(value, trigger)
                          
                            payload['IDX_SOUT'] = value['EAST']
                            payload['IDX_SOUT_HP'] = value['EASF02']
                            payload['IDX_SOUT_HC'] = value['EASF01']
                            payload['IDX_INJ'] = value['EAIT']
                            payload['PUI_SOUT'] = value['SINSTS']
                            payload['PUI_INJ'] = value['SINSTI']
                          
                          end
                          
                          def start()
                            # Callback on each frame interception
                            tasmota.add_rule("TIC",rule_tic)
                            # fire first post in 5s 
                            tasmota.set_timer(5000, send_emoncms)
                          end
                          
                          def send_emoncms()
                           ...
                          end
                          

                          devient

                          var payload = {}
                          
                          def rule_meter (value, trigger)
                            payload['PUI_SOUT'] = value['W']
                            payload['PUI_INJ'] = value['PW']
                             
                          end
                          
                          def rule_contract (value, trigger)
                            payload['IDX_SOUT'] = value['CONSO']
                            payload['IDX_SOUT_HP'] = value['EASF02']
                            payload['IDX_SOUT_HC'] = value['EASF01']
                            payload['IDX_INJ'] = value['PROD']
                          end
                          
                          def send_emoncms()
                           ...
                          end
                          
                          def start()
                            # Callback on each frame interception
                            tasmota.add_rule("METER",rule_meter)
                            tasmota.add_rule("CONTRACT",rule_contract)
                            # fire first post in 5s 
                            tasmota.set_timer(5000, send_emoncms)
                          end
                          
                          T 1 Reply Last reply Reply Quote
                          • T Offline
                            Tostaky @Tostaky
                            last edited by

                            @Tostaky said in Denky D4 + Tempo:

                            payload['IDX_SOUT_HP'] = value['EASF02']
                            payload['IDX_SOUT_HC'] = value['EASF01']

                            Evidement, ces lignes sont en trop

                            1 Reply Last reply Reply Quote
                            • First post
                              Last post

                            2

                            Online

                            5.7k

                            Users

                            534

                            Topics

                            5.0k

                            Posts

                            Top Topics

                            • Denky 4 - Domoticz - TriphasĂ© -
                              Nicolas BernaertsN
                              Nicolas Bernaerts
                              0
                              7
                              266

                            • Denky D4 et Linky Standard TInfo Rx Non ConfigurĂ©
                              CharlesC
                              Charles
                              0
                              5
                              303

                            Popular Tags

                            teleinfo
                            24 topics
                            arduino
                            19 topics
                            remora
                            16 topics
                            esp8266
                            10 topics
                            arduipi
                            10 topics
                            wifinfo
                            7 topics
                            raspberry
                            7 topics
                            broadcast
                            7 topics
                            Copyright © 2022 Charles-Henri Hallard | Return to blog page | Powered by NodeBB