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. Téléinfo
  5. Tasmota

Tasmota

Scheduled Pinned Locked Moved Téléinfo
525 Posts 31 Posters 476.3k Views 14 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.
  • O Obi_Yoann

    @Nicolas-Bernaerts bin je comprends pas non plus, le fonctionnement avec le firmware tasmota "stock" sur l'esp32s2 est parfaitement fonctionnel en plus, y compris l'enregistrement des GPIO, le changement de historique à standard, tout fonctionne plutôt bien... Ce que j'observe est différent, je peux enregistrer les GPIO sans soucis, mais la conf teleinfo ne s'enregistre pas. Je peux redémarrer autant que je veux l'esp32s2 reste accessible, mais les paramètres restent "stock". Je flash le firmware "factory" via serial de mon côté.

    @Charles en fait j'ai tenté en effet de faire marcher le tasmota avec emoncms mais ce que j'en ai sorti c'est que l'esp32s2 me semblait trop faible pour envoyer les trames avec toutes les données du mode standard. Je me trompe probablement, mais dès que j'activais le script berry, l'interface web devenait de plus en plus lente jusqu'à se bloquer jusqu'au redémarrage. Aucune donnée en plus n'arrivait dans l'emoncms, alors que si j'arrivais à attraper une URL depuis la console et que je l'entrait manuellement dans mon navigateur, une salve de données arrivait bien (indiquant que les configuration était a priori correcte).
    J'avais mis ça sur le compte de la quantité de données envoyée par le script, et qu'il était judicieux d'essayer la version de @Nicolas-Bernaerts pour filtrer les données avant des les envoyer.
    Pour la log, non pas possible par l'USB d'avoir un accès série, c'est déconnecté sur le S2. Idem pour flasher il faut obligatoirement garder un bouton appuyé au moment de reset, pour mettre en mode download, ce n'est pas automatique comme sur le wemos d1 mini esp32 (qui a bien un accès série par l'usb lui, mais c'est pas un s2 🙂 )

    Je vais tenter à nouveau avec le firmware version @Charles de jouer avec les script berry, mais je pense qu'il manque pas grand chose dans la version @Nicolas-Bernaerts pour que ça marche aussi sur le S2... ^^

    EDIT : @Charles en fait en mode "standard" le script proposé n'est pas compatible, j'avais essayé de le modifier mais du coup la modif faite n'est clairement pas bonne. Par ex, si j'ai bien compris, HCHP et HCHC ne sont pas transmises. ISOUSC doit être calculé sur la base de PREF/200. IINST est remplacé par SINSTS... Bref je suis largué... 😣
    J'ai en désespoir tenté de commenter le bloc avec les calculs juste pour faire un envoi des données brut, j'ai l'URL qui fonctionne j'ai l'impression quand je l'entre à la main dans le navigateur mais pas en auto depuis le tasmota.

    import json
    
    var api_url = "http://emoncms.mondomain.local/input/post"
    var api_key = "APIQUEJ'AIENTRE"
    var node_name = "linky"
    
    #def setcolor(iinst, isousc)
    #  var red = tasmota.scale_uint(iinst, 0, isousc, 0, 255)
    #  var green = 255 - red
    #  var channels = [red, green, 0]
    #  light.set({"channels":channels, "bri":64, "power":true})
    #end
    
    def rule_tic(value, trigger)
      # Got Heures Creuses contract so I will calculate total consumption
      # adding Heures Creuses (HCHC) + Heures Pleines (HCHP) and create new value for emoncms 
      # Change label depending on name for your contract type
      #var htot = value['HCHP'] + value['HCHC']
      # Create new value HTOT converted to kWH
      #value['HTOT'] = htot / 1000.0
      # Calculate current percent Load 
      #var iinst = value['SINSTS']
      #var isousc= value['PREF']
      #if iinst != nil && isousc != nil 
      #  # Drive RGB LED
      #  setcolor(iinst, isousc)
      #  if isousc > 0
      #    load = 100 * iinst / isousc
      #    value['LOAD'] = load
      #  end
      #end
      # Convert JSON object to string 
      var obj_json = json.dump(value)
      # Create URL to call
      var param="?fulljson="+obj_json + "&node="+node_name + "&apikey="+api_key 
      # Post Data to EMONCMS
      var cl = webclient()
      cl.begin( api_url + param)
      var r =  cl.GET()
      print(r, load, param) 
    end
    
    # Callback on each MQTT interception
    tasmota.add_rule("TIC",rule_tic)
    

    EDIT2 : voilà j'ai refait le test, en console berry après avoir entré le script ci-dessus, j'ai ces lignes très longues qui apparaissent :
    838f1e01-771e-4638-b6e6-d7d21984b92a-image.png
    J'ai copié une ligne dans un notepad :
    -1 <function: 0x3fd80e94> ?fulljson={"EASF08":0
    J'ai remplacé le début jusqu'au ? par l'url de mon emoncms, ce qui donne :
    http://emoncms.mondomaine.local/input/post?fulljson={"EASF08":0,"CCASN"[...]
    Si je colle ça dans mon navigateur j'obtiens :
    1568efd4-ac38-4212-b7ab-b3aec41804c0-image.png
    Et les données sont fraiches dans emoncms :
    aecbe44b-1a7c-4552-b0ca-1015507d25de-image.png
    Mais en auto rien ne se passe...

    EDIT3 :
    J'ai fais une nouvelle version du script mais pareil en auto rien ne part. La gestion de la valeur du LOAD est correcte a priori, de même que la gestion de la led (a priori toujours). J'ai décommenté ce que j'avais commenté, hors gestion heures creuses...

    import json
    
    var api_url = "http://emoncms.mondomaine.local/input/post"
    var api_key = "API"
    var node_name = "linky"
    
    def setcolor(iinst, isousc)
      var red = tasmota.scale_uint(iinst, 0, isousc, 0, 255)
      var green = 255 - red
      var channels = [red, green, 0]
      light.set({"channels":channels, "bri":64, "power":true})
    end
    
    def rule_tic(value, trigger)
      # Got Heures Creuses contract so I will calculate total consumption
      # adding Heures Creuses (HCHC) + Heures Pleines (HCHP) and create new value for emoncms 
      # Change label depending on name for your contract type
      #var htot = value['HCHP'] + value['HCHC']
      # Create new value HTOT converted to kWH
      #value['HTOT'] = htot / 1000.0
      # Calculate current percent Load 
      var iinst = value['SINSTS']
      var isousc= value['PREF'] * 1000
      if iinst != nil && isousc != nil 
        # Drive RGB LED
        setcolor(iinst, isousc)
        if isousc > 0
          load = 100 * iinst / isousc
          value['LOAD'] = load
        end
      end
      # Convert JSON object to string 
      var obj_json = json.dump(value)
      # Create URL to call
      var param="?fulljson="+obj_json + "&node="+node_name + "&apikey="+api_key 
      # Post Data to EMONCMS
      var cl = webclient()
      cl.begin( api_url + param)
      var r =  cl.GET()
      print(r, load, param) 
    end
    
    # Callback on each MQTT interception
    tasmota.add_rule("TIC",rule_tic)
    
    

    Dites moi si c'est correct ou pas, j'ai vu que PREF était en kva, donc pour comparer à SINSTS qui est en va il faut ajouter un x1000 sur PREF. Le reste doit fonctionner normalement...

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

    @Obi_Yoann Je viens de trouver la source du problème... Un nettoyage un peu rapide du code. Je viens d'uploader sur GitHub une mise à jour qui devrait régler les problèmes de sauvegarde de la configuration sur ESP avec partition littlefs.

    1 Reply Last reply
    • O Obi_Yoann

      @Nicolas-Bernaerts Pour ma part je flash systématiquement avec ton tasmota-flash (vachement pratique!) :
      ./tasmota-flash --esp32-s2 --erase --after no_reset --flash ../../teleinfo32s2.factory.bin
      Il faut juste reset manuellement, en appuyant ou non sur le bouton du mode download, et ça se passe bien.
      En mode download au départ avant de lancer la commande, il commence par faire un erase, puis demande à rebooter, ce qu'il faut faire rapidement toujours en mode download, puis il flash, et indique enfin que le redémarrage manuel en mode normal doit être fait.

      @Charles pour le mode console usb, honnêtement je ne sais pas trop, sur le S2 je suis sûr qu'en mode normal il n'est pas du tout vu par l'ordinateur, j'ai refais le test à l'instant, en mode download oui on a un device série et ESP32-S2 qui apparait, en mode normal absolument rien n'est détecté sur plusieurs machine... Il doit manquer un truc, mais avec le D1 Mini ESP32 en effet j'ai un device tout le temps. Pas avec le Wemos S2 Mini que j'ai, peut être une particularité de ce modèle aussi?
      De ce que j'avais vu ici : https://www.reddit.com/r/esp32/comments/s3efjv/wemos_s2_mini/ j'avais compris qu'il n'y avait pas d'USB-TTL sur ce modèle en tout cas... 🤔

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

      @Obi_Yoann Je viens de mettre à jour tasmota-flash sur GitHub. Il intègre le bon paramètre -fm dio pour les ESP32.

      O 1 Reply Last reply
      • Barbu DorB Barbu Dor

        @Obi_Yoann Pour le mode console USB il faut flasher tasmota32s2cdc.factory.bin
        Si tu veux flasher un build perso, il faut alors faire un build perso qui inclue le nécessaire pour le CDC

        @Charles TU peux faire quelque chose pour que j'ai les 3 points de réputation afin de pouvoir poster plus rapidemment 😄
        Merci

        O Offline
        O Offline
        Obi_Yoann
        wrote on last edited by Obi_Yoann
        #335

        @Barbu-Dor Génial! J'ai changé le board de mon device dans platformio_override.ini :

        [env:tasmota32s2cdc-tic]
        extends                     = env:tasmota32s2
        build_flags                 = ${env:tasmota32s2.build_flags} -DMY_LANGUAGE=fr_FR
        board                  = esp32s2cdc
        board_build.filesystem = littlefs
        

        Après compilation et mise à jour via l'interface web je confirme que j'ai bien un serial de connecté quand je branche à mon ordi!!! 🤯
        Par contre je ne trouve pas les paramètres série à utiliser (par ex dans putty), ça serait documenté quelque part? Je n'ai pas trouvé pour le moment!

        EDIT : bon bah en fait j'ai trouvé, la conf de base de putty en 9600 est valide, j'ai bien la console affichée directement dessus. Merci beaucoup!!! C'est même bon en 115200, ça n'a pas l'air très incommandant pour le coup! ^^

        CharlesC 1 Reply Last reply
        • Barbu DorB Barbu Dor

          @Obi_Yoann Pour le mode console USB il faut flasher tasmota32s2cdc.factory.bin
          Si tu veux flasher un build perso, il faut alors faire un build perso qui inclue le nécessaire pour le CDC

          @Charles TU peux faire quelque chose pour que j'ai les 3 points de réputation afin de pouvoir poster plus rapidemment 😄
          Merci

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

          @Barbu-Dor j'ai pas trouvé (si tenté que je puisse), j'ai disable la reputation car je trouve ça trop chiant dans tous les cas je filtre les inscriptions car c'était ingérable avec les BOT et scammer

          1 Reply Last reply
          • O Obi_Yoann

            @Barbu-Dor Génial! J'ai changé le board de mon device dans platformio_override.ini :

            [env:tasmota32s2cdc-tic]
            extends                     = env:tasmota32s2
            build_flags                 = ${env:tasmota32s2.build_flags} -DMY_LANGUAGE=fr_FR
            board                  = esp32s2cdc
            board_build.filesystem = littlefs
            

            Après compilation et mise à jour via l'interface web je confirme que j'ai bien un serial de connecté quand je branche à mon ordi!!! 🤯
            Par contre je ne trouve pas les paramètres série à utiliser (par ex dans putty), ça serait documenté quelque part? Je n'ai pas trouvé pour le moment!

            EDIT : bon bah en fait j'ai trouvé, la conf de base de putty en 9600 est valide, j'ai bien la console affichée directement dessus. Merci beaucoup!!! C'est même bon en 115200, ça n'a pas l'air très incommandant pour le coup! ^^

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

            @Obi_Yoann en CDC ya pas de baudrate en fait il s'en fout peut importe celui que tu choisis ça fonctionne.
            Fais gaffe certains terminaux séries contrôlent les ligne DTR/CTS et parfois ça met le S2 en mode download et le firmware démarre jamais (c'est du vécu)

            CharlesC Barbu DorB 2 Replies Last reply
            • CharlesC Charles

              @Obi_Yoann en CDC ya pas de baudrate en fait il s'en fout peut importe celui que tu choisis ça fonctionne.
              Fais gaffe certains terminaux séries contrôlent les ligne DTR/CTS et parfois ça met le S2 en mode download et le firmware démarre jamais (c'est du vécu)

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

              @Obi_Yoann il est pas beau le nouveau Denky D4
              8Mb de Flash
              2Mb de PSRAM
              USB-C
              Mini WS2812 RGB
              QWIIC Connecteur
              USB/SERIAL on board
              Antenne performante

              e443b23d-431a-440d-9fc3-93878f9726ec-image.png

              Avec ça aucun pb de comm/USB et Berry a de la ressource 🙂

              O 1 Reply Last reply
              • CharlesC Charles

                @Obi_Yoann en CDC ya pas de baudrate en fait il s'en fout peut importe celui que tu choisis ça fonctionne.
                Fais gaffe certains terminaux séries contrôlent les ligne DTR/CTS et parfois ça met le S2 en mode download et le firmware démarre jamais (c'est du vécu)

                Barbu DorB Offline
                Barbu DorB Offline
                Barbu Dor
                wrote on last edited by
                #339

                @Charles
                J'ai des pbs avec Termite sous windows, je peux envoyer des commandes mais je ne reçoit rien
                Avec le terminal intégré au tasmota web-installer ca marche bien
                Pas eu le temps de tester d'autres terminaux pour l'instant

                CharlesC 1 Reply Last reply
                • Barbu DorB Barbu Dor

                  @Charles
                  J'ai des pbs avec Termite sous windows, je peux envoyer des commandes mais je ne reçoit rien
                  Avec le terminal intégré au tasmota web-installer ca marche bien
                  Pas eu le temps de tester d'autres terminaux pour l'instant

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

                  @Barbu-Dor j’ai jamais trouvé de terminal idéal sous Windows depuis qq décennies 😜
                  Sous Mac j’ai trouvé mon bonheur avec Serial

                  1 Reply Last reply
                  • CharlesC Charles

                    @Obi_Yoann il est pas beau le nouveau Denky D4
                    8Mb de Flash
                    2Mb de PSRAM
                    USB-C
                    Mini WS2812 RGB
                    QWIIC Connecteur
                    USB/SERIAL on board
                    Antenne performante

                    e443b23d-431a-440d-9fc3-93878f9726ec-image.png

                    Avec ça aucun pb de comm/USB et Berry a de la ressource 🙂

                    O Offline
                    O Offline
                    Obi_Yoann
                    wrote on last edited by Obi_Yoann
                    #341

                    @Charles
                    b915b2f1-c0b2-4b94-b555-a5597908f935-image.png
                    la CB est prête!!!! Blague à part ça serait pour quand cette pépite? Pas de connecteur pour un SSD1306? 😅

                    Pour revenir sur le sujet export des données vers emoncms via le script berry, ce matin il retournait à nouveau des erreurs 400 lors du GET, avec des balises plus ou moins foireuses qui sont arrivées dans le emoncms, genre des concaténation d'étiquettes :
                    e0e34343-6cd1-4496-9ead-03ddf21ddc25-image.png
                    Mais aussi et surtout des chaines très longues qui ne passaient pas dans le GET (je n'ai pas fais de capture d'écran, après un reboot du tasmota c'était revenu à la normale).
                    Je voulais éviter ça mais avec le TIC qui est quand même pas mal normé par ENEDIS (par ex ici), j'ai finis par faire une nouvelle map, en reprenant les entrée du tic et en recopiant si présent en sortie. Comme ça en sortie vers le emoncms je n'ai que des balises "attendues" et on peut, si besoin, ne garder que celles qui nous intéressent (il suffit de commenter le bloc de recopie de la balise concernée). Je n'ai pas contrôlé s'il manque des balises par rapport à la spec, j'ai juste pris toutes les balises présentes en sortie de mon linky et fais quelques macro dessus via notepad++...
                    A voir si c'est stable sur quelques heures...

                    import json
                    
                    var api_url = "http://emoncms.mondomaine.local/input/post"
                    var api_key = "XXX"
                    var node_name = "linky"
                    
                    def setcolor(iinst, isousc)
                      var red = tasmota.scale_uint(iinst, 0, isousc, 0, 255)
                      var green = 255 - red
                      var channels = [red, green, 0]
                      light.set({"channels":channels, "bri":64, "power":true})
                    end
                    
                    def rule_tic(value, trigger)
                      # Calculate current percent Load 
                      var iinst = value['SINSTS']
                      var isousc= value['PREF'] * 1000
                      if iinst != nil && isousc != nil 
                        # Drive RGB LED
                        setcolor(iinst, isousc)
                        if isousc > 0
                          load = 100 * iinst / isousc
                          value['LOAD'] = load
                        end
                      end
                      var output = {}
                      if value['ADSC'] != nil
                        output['ADSC'] = value['ADSC']
                      end
                      if value['CCASN'] != nil
                        output['CCASN'] = value['CCASN']
                      end
                      if value['CCASN-1'] != nil
                        output['CCASN-1'] = value['CCASN-1']
                      end
                      if value['EASD01'] != nil
                        output['EASD01'] = value['EASD01']
                      end
                      if value['EASD02'] != nil
                        output['EASD02'] = value['EASD02']
                      end
                      if value['EASD03'] != nil
                        output['EASD03'] = value['EASD03']
                      end
                      if value['EASD04'] != nil
                        output['EASD04'] = value['EASD04']
                      end
                      if value['EASF01'] != nil
                        output['EASF01'] = value['EASF01']
                      end
                      if value['EASF02'] != nil
                        output['EASF02'] = value['EASF02']
                      end
                      if value['EASF03'] != nil
                        output['EASF03'] = value['EASF03']
                      end
                      if value['EASF04'] != nil
                        output['EASF04'] = value['EASF04']
                      end
                      if value['EASF05'] != nil
                        output['EASF05'] = value['EASF05']
                      end
                      if value['EASF06'] != nil
                        output['EASF06'] = value['EASF06']
                      end
                      if value['EASF07'] != nil
                        output['EASF07'] = value['EASF07']
                      end
                      if value['EASF08'] != nil
                        output['EASF08'] = value['EASF08']
                      end
                      if value['EASF09'] != nil
                        output['EASF09'] = value['EASF09']
                      end
                      if value['EASF10'] != nil
                        output['EASF10'] = value['EASF10']
                      end
                      if value['EAST'] != nil
                        output['EAST'] = value['EAST']
                      end
                      if value['IRMS1'] != nil
                        output['IRMS1'] = value['IRMS1']
                      end
                      if value['LOAD'] != nil
                        output['LOAD'] = value['LOAD']
                      end
                      if value['LTARF'] != nil
                    #    output['LTARF'] = value['LTARF']
                        output['LTARF'] = "BASE"
                      end
                      if value['NGTF'] != nil
                    #    output['NGTF'] = value['NGTF']
                        output['NGTF'] = "BASE"
                      end
                      if value['NJOURF'] != nil
                        output['NJOURF'] = value['NJOURF']
                      end
                      if value['NJOURF+1'] != nil
                        output['NJOURF+1'] = value['NJOURF+1']
                      end
                      if value['NTARF'] != nil
                        output['NTARF'] = value['NTARF']
                      end
                      if value['PCOUP'] != nil
                        output['PCOUP'] = value['PCOUP']
                      end
                      if value['PREF'] != nil
                        output['PREF'] = value['PREF']
                      end
                      if value['PRM'] != nil
                        output['PRM'] = value['PRM']
                      end
                      if value['RELAIS'] != nil
                        output['RELAIS'] = value['RELAIS']
                      end
                      if value['SINSTS'] != nil
                        output['SINSTS'] = value['SINSTS']
                      end
                      if value['SMAXSN'] != nil
                        output['SMAXSN'] = value['SMAXSN']
                      end
                      if value['SMAXSN-1'] != nil
                        output['SMAXSN-1'] = value['SMAXSN-1']
                      end
                      if value['STGE'] != nil
                        output['STGE'] = value['STGE']
                      end
                      if value['UMOY1'] != nil
                        output['UMOY1'] = value['UMOY1']
                      end
                      if value['URMS1'] != nil
                        output['URMS1'] = value['URMS1']
                      end
                      if value['VTIC'] != nil
                        output['VTIC'] = value['VTIC']
                      end
                    
                      # Convert map to json
                      var obj_json = json.dump(output)
                      # Create URL to call
                      var param="?fulljson="+obj_json + "&node="+node_name + "&apikey="+api_key 
                      # Post Data to EMONCMS
                      var cl = webclient()
                      cl.begin( api_url + param)
                      var r =  cl.GET()
                      print(r, load, param) 
                    end
                    
                    # Callback on each MQTT interception
                    tasmota.add_rule("TIC",rule_tic)
                    
                    
                    CharlesC 1 Reply Last reply
                    • O Obi_Yoann

                      @Charles
                      b915b2f1-c0b2-4b94-b555-a5597908f935-image.png
                      la CB est prête!!!! Blague à part ça serait pour quand cette pépite? Pas de connecteur pour un SSD1306? 😅

                      Pour revenir sur le sujet export des données vers emoncms via le script berry, ce matin il retournait à nouveau des erreurs 400 lors du GET, avec des balises plus ou moins foireuses qui sont arrivées dans le emoncms, genre des concaténation d'étiquettes :
                      e0e34343-6cd1-4496-9ead-03ddf21ddc25-image.png
                      Mais aussi et surtout des chaines très longues qui ne passaient pas dans le GET (je n'ai pas fais de capture d'écran, après un reboot du tasmota c'était revenu à la normale).
                      Je voulais éviter ça mais avec le TIC qui est quand même pas mal normé par ENEDIS (par ex ici), j'ai finis par faire une nouvelle map, en reprenant les entrée du tic et en recopiant si présent en sortie. Comme ça en sortie vers le emoncms je n'ai que des balises "attendues" et on peut, si besoin, ne garder que celles qui nous intéressent (il suffit de commenter le bloc de recopie de la balise concernée). Je n'ai pas contrôlé s'il manque des balises par rapport à la spec, j'ai juste pris toutes les balises présentes en sortie de mon linky et fais quelques macro dessus via notepad++...
                      A voir si c'est stable sur quelques heures...

                      import json
                      
                      var api_url = "http://emoncms.mondomaine.local/input/post"
                      var api_key = "XXX"
                      var node_name = "linky"
                      
                      def setcolor(iinst, isousc)
                        var red = tasmota.scale_uint(iinst, 0, isousc, 0, 255)
                        var green = 255 - red
                        var channels = [red, green, 0]
                        light.set({"channels":channels, "bri":64, "power":true})
                      end
                      
                      def rule_tic(value, trigger)
                        # Calculate current percent Load 
                        var iinst = value['SINSTS']
                        var isousc= value['PREF'] * 1000
                        if iinst != nil && isousc != nil 
                          # Drive RGB LED
                          setcolor(iinst, isousc)
                          if isousc > 0
                            load = 100 * iinst / isousc
                            value['LOAD'] = load
                          end
                        end
                        var output = {}
                        if value['ADSC'] != nil
                          output['ADSC'] = value['ADSC']
                        end
                        if value['CCASN'] != nil
                          output['CCASN'] = value['CCASN']
                        end
                        if value['CCASN-1'] != nil
                          output['CCASN-1'] = value['CCASN-1']
                        end
                        if value['EASD01'] != nil
                          output['EASD01'] = value['EASD01']
                        end
                        if value['EASD02'] != nil
                          output['EASD02'] = value['EASD02']
                        end
                        if value['EASD03'] != nil
                          output['EASD03'] = value['EASD03']
                        end
                        if value['EASD04'] != nil
                          output['EASD04'] = value['EASD04']
                        end
                        if value['EASF01'] != nil
                          output['EASF01'] = value['EASF01']
                        end
                        if value['EASF02'] != nil
                          output['EASF02'] = value['EASF02']
                        end
                        if value['EASF03'] != nil
                          output['EASF03'] = value['EASF03']
                        end
                        if value['EASF04'] != nil
                          output['EASF04'] = value['EASF04']
                        end
                        if value['EASF05'] != nil
                          output['EASF05'] = value['EASF05']
                        end
                        if value['EASF06'] != nil
                          output['EASF06'] = value['EASF06']
                        end
                        if value['EASF07'] != nil
                          output['EASF07'] = value['EASF07']
                        end
                        if value['EASF08'] != nil
                          output['EASF08'] = value['EASF08']
                        end
                        if value['EASF09'] != nil
                          output['EASF09'] = value['EASF09']
                        end
                        if value['EASF10'] != nil
                          output['EASF10'] = value['EASF10']
                        end
                        if value['EAST'] != nil
                          output['EAST'] = value['EAST']
                        end
                        if value['IRMS1'] != nil
                          output['IRMS1'] = value['IRMS1']
                        end
                        if value['LOAD'] != nil
                          output['LOAD'] = value['LOAD']
                        end
                        if value['LTARF'] != nil
                      #    output['LTARF'] = value['LTARF']
                          output['LTARF'] = "BASE"
                        end
                        if value['NGTF'] != nil
                      #    output['NGTF'] = value['NGTF']
                          output['NGTF'] = "BASE"
                        end
                        if value['NJOURF'] != nil
                          output['NJOURF'] = value['NJOURF']
                        end
                        if value['NJOURF+1'] != nil
                          output['NJOURF+1'] = value['NJOURF+1']
                        end
                        if value['NTARF'] != nil
                          output['NTARF'] = value['NTARF']
                        end
                        if value['PCOUP'] != nil
                          output['PCOUP'] = value['PCOUP']
                        end
                        if value['PREF'] != nil
                          output['PREF'] = value['PREF']
                        end
                        if value['PRM'] != nil
                          output['PRM'] = value['PRM']
                        end
                        if value['RELAIS'] != nil
                          output['RELAIS'] = value['RELAIS']
                        end
                        if value['SINSTS'] != nil
                          output['SINSTS'] = value['SINSTS']
                        end
                        if value['SMAXSN'] != nil
                          output['SMAXSN'] = value['SMAXSN']
                        end
                        if value['SMAXSN-1'] != nil
                          output['SMAXSN-1'] = value['SMAXSN-1']
                        end
                        if value['STGE'] != nil
                          output['STGE'] = value['STGE']
                        end
                        if value['UMOY1'] != nil
                          output['UMOY1'] = value['UMOY1']
                        end
                        if value['URMS1'] != nil
                          output['URMS1'] = value['URMS1']
                        end
                        if value['VTIC'] != nil
                          output['VTIC'] = value['VTIC']
                        end
                      
                        # Convert map to json
                        var obj_json = json.dump(output)
                        # Create URL to call
                        var param="?fulljson="+obj_json + "&node="+node_name + "&apikey="+api_key 
                        # Post Data to EMONCMS
                        var cl = webclient()
                        cl.begin( api_url + param)
                        var r =  cl.GET()
                        print(r, load, param) 
                      end
                      
                      # Callback on each MQTT interception
                      tasmota.add_rule("TIC",rule_tic)
                      
                      
                      CharlesC Offline
                      CharlesC Offline
                      Charles
                      wrote on last edited by
                      #342

                      @Obi_Yoann si il y a le connecteur QWIIC avec tous les cables existants tu trouveras ton bonheur exemple. J'ai qq protos si ça t'intéressse, passe en MP.

                      Pour les étiquettes je fais la même je trie et envoie que celle qui m'intéressent, tout l'avantage du berry, pas de firmware à compiler pour des petits traitements de ce type

                      1 Reply Last reply
                      • Barbu DorB Offline
                        Barbu DorB Offline
                        Barbu Dor
                        wrote on last edited by
                        #343

                        @Obi_Yoann QWIIC est un connecteur I2C/IIC standardisé par Sparkfun mais rien n'oblige à utiliser des modules Sparkfun avec

                        https://www.sparkfun.com/qwiic

                        CharlesC 1 Reply Last reply
                        • Barbu DorB Barbu Dor

                          @Obi_Yoann QWIIC est un connecteur I2C/IIC standardisé par Sparkfun mais rien n'oblige à utiliser des modules Sparkfun avec

                          https://www.sparkfun.com/qwiic

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

                          @Barbu-Dor et même les modules Adafruit au format Stemma QT (c'est le même que le QWIIC), pour une fois que 2 concurrents se mettent d'accord sur le format ça aide 🙂
                          https://learn.adafruit.com/introducing-adafruit-stemma-qt/what-is-stemma-qt

                          Tous les modules sensors adafruit et sparkfun ont tendance à utiliser ce format maintenant et en plus ils sont chainables de par leur design

                          1 Reply Last reply
                          • O Offline
                            O Offline
                            Obi_Yoann
                            wrote on last edited by Obi_Yoann
                            #345

                            Bonjour à tous! j'ai un soucis récurrent sur mon compteur, et je n'arrive pas à trouver de solution.
                            J'ai des erreurs checksum en pagaille, et le passage du hat wemos teleinfo avec esp32s2 au fameux Denky D4 1.1 de @Charles n'a hélas pas fait évoluer positivement ce soucis, au contraire j'ai même l'impression que c'est encore pire :
                            ead8178b-b203-4f18-8952-548c1abca19c-image.png
                            Je suis en TIC Standard et non historique, et j'ai du coup des trames TIC incomplètes (des balises manquantes notamment), que je n'avais pas avec le wemos teleinfo classique.
                            En terme de stabilité je dois toujours redémarrer l'esp32 relativement régulièrement (toutes les semaines environ) sans quoi il n'arrive plus à analyser les trames pour les rebalancer vers emoncms.
                            Ces erreurs checksums m'embêtent et je pense qu'il faut que je trouve pourquoi ça fait ça.
                            Je me demande s'il n'y aurait pas une incompatibilité entre mon compteur et le teleinfo.
                            Suite à une suggestion de @Charles j'ai refait mes fils, en étamant des deux côtés pour que ça tienne bien, c'est le cas mais pas d'évolution sur les checksum.
                            Est-ce qu'il faudrait que je change une résistance pour améliorer la compatibilité? Si oui laquelle et pour quelle valeur???
                            Est-ce que d'autres personnes utilisent le tasmota teleinfo avec un compteur linky en mode Standard? Pas de soucis de checksum pour vous?

                            CharlesC 2 Replies Last reply
                            • O Obi_Yoann

                              Bonjour à tous! j'ai un soucis récurrent sur mon compteur, et je n'arrive pas à trouver de solution.
                              J'ai des erreurs checksum en pagaille, et le passage du hat wemos teleinfo avec esp32s2 au fameux Denky D4 1.1 de @Charles n'a hélas pas fait évoluer positivement ce soucis, au contraire j'ai même l'impression que c'est encore pire :
                              ead8178b-b203-4f18-8952-548c1abca19c-image.png
                              Je suis en TIC Standard et non historique, et j'ai du coup des trames TIC incomplètes (des balises manquantes notamment), que je n'avais pas avec le wemos teleinfo classique.
                              En terme de stabilité je dois toujours redémarrer l'esp32 relativement régulièrement (toutes les semaines environ) sans quoi il n'arrive plus à analyser les trames pour les rebalancer vers emoncms.
                              Ces erreurs checksums m'embêtent et je pense qu'il faut que je trouve pourquoi ça fait ça.
                              Je me demande s'il n'y aurait pas une incompatibilité entre mon compteur et le teleinfo.
                              Suite à une suggestion de @Charles j'ai refait mes fils, en étamant des deux côtés pour que ça tienne bien, c'est le cas mais pas d'évolution sur les checksum.
                              Est-ce qu'il faudrait que je change une résistance pour améliorer la compatibilité? Si oui laquelle et pour quelle valeur???
                              Est-ce que d'autres personnes utilisent le tasmota teleinfo avec un compteur linky en mode Standard? Pas de soucis de checksum pour vous?

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

                              @Obi_Yoann j'attends qu'ils me passent mon linky en mode standard et je fais des tests chez moi, quand ils sont venus installer le linky impossible qu'ils veuillent me le mettre en mode standard

                              O 1 Reply Last reply
                              • CharlesC Charles

                                @Obi_Yoann j'attends qu'ils me passent mon linky en mode standard et je fais des tests chez moi, quand ils sont venus installer le linky impossible qu'ils veuillent me le mettre en mode standard

                                O Offline
                                O Offline
                                Obi_Yoann
                                wrote on last edited by
                                #347

                                @Charles
                                Hello!
                                J'ai à nouveau mon tasmota en rad depuis 20h apparemment, plus de remontée dans emoncms.
                                En console j'ai ça :
                                93d1e677-d2f6-469b-b8ff-b1a2e42d3bd1-image.png
                                Je pense que les buffer overflows sont ce qui me pose soucis là par rapport à la remontée et le script berry (qui ne tourne plus), probablement parce que je n'ai pas un super décodage/de mauvaises trames dans mon cas.
                                Je précise, mon père est lui aussi équipé d'un Denky D4 tout frais et énormément moins de soucis pour lui! il a une erreur checksum toutes les 10s alors que moi c'est des dizaines par secondes... Donc clairement je penche pour un soucis de compatibilité avec mon modèle de compteur.
                                Mon linky est un ITRON ITE411L3H a priori, type 61 (monophasé, 60 A, généralisation, génération CPL G3)
                                Je trouve très très peu d'info sur ce compteur et des éventuels problèmes sur sa sortie teleinfo. Globalement le dongle USB n'avait pas fonctionné du tout pour moi avec ce compteur, le HAT wemos teleinfo et le Denky D4 fonctionnent un peu mais avec des corruptions et instabilité.

                                CharlesC 1 Reply Last reply
                                • O Obi_Yoann

                                  @Charles
                                  Hello!
                                  J'ai à nouveau mon tasmota en rad depuis 20h apparemment, plus de remontée dans emoncms.
                                  En console j'ai ça :
                                  93d1e677-d2f6-469b-b8ff-b1a2e42d3bd1-image.png
                                  Je pense que les buffer overflows sont ce qui me pose soucis là par rapport à la remontée et le script berry (qui ne tourne plus), probablement parce que je n'ai pas un super décodage/de mauvaises trames dans mon cas.
                                  Je précise, mon père est lui aussi équipé d'un Denky D4 tout frais et énormément moins de soucis pour lui! il a une erreur checksum toutes les 10s alors que moi c'est des dizaines par secondes... Donc clairement je penche pour un soucis de compatibilité avec mon modèle de compteur.
                                  Mon linky est un ITRON ITE411L3H a priori, type 61 (monophasé, 60 A, généralisation, génération CPL G3)
                                  Je trouve très très peu d'info sur ce compteur et des éventuels problèmes sur sa sortie teleinfo. Globalement le dongle USB n'avait pas fonctionné du tout pour moi avec ce compteur, le HAT wemos teleinfo et le Denky D4 fonctionnent un peu mais avec des corruptions et instabilité.

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

                                  @Obi_Yoann peux tu essayer de flasher ton denky avec le soft d'exemple de base du denky D4 téléinfo et voir ce qui arrive dans la console Série ?

                                  @Barbu-Dor c'est toi de mémoire qui avait ajouté le mode standard dans tamota non ?
                                  Tu sais si il y a eu des modifs au niveau de la sérial, visiblement 2 users ont des gros soucis de checksum depuis le passage en mode standard avec des buffer overflow, je cherche une piste des fois qu'il y aurai eu des modif coté driver serial.
                                  Merci à toi

                                  O 1 Reply Last reply
                                  • CharlesC Charles

                                    @Obi_Yoann peux tu essayer de flasher ton denky avec le soft d'exemple de base du denky D4 téléinfo et voir ce qui arrive dans la console Série ?

                                    @Barbu-Dor c'est toi de mémoire qui avait ajouté le mode standard dans tamota non ?
                                    Tu sais si il y a eu des modifs au niveau de la sérial, visiblement 2 users ont des gros soucis de checksum depuis le passage en mode standard avec des buffer overflow, je cherche une piste des fois qu'il y aurai eu des modif coté driver serial.
                                    Merci à toi

                                    O Offline
                                    O Offline
                                    Obi_Yoann
                                    wrote on last edited by
                                    #349

                                    @Charles pas de soucis pour moi, mais aurais-tu un binaire pour pouvoir reflasher le denky après en tasmota? j'ai pas réussi (ni trop tenté en fait) de recompiler tasmota pour lui n'ayant pas la cible... 😅
                                    Comme board tu utilises esp32_8M c'est ça?
                                    Merci de ton aide!

                                    CharlesC 1 Reply Last reply
                                    • O Obi_Yoann

                                      @Charles pas de soucis pour moi, mais aurais-tu un binaire pour pouvoir reflasher le denky après en tasmota? j'ai pas réussi (ni trop tenté en fait) de recompiler tasmota pour lui n'ayant pas la cible... 😅
                                      Comme board tu utilises esp32_8M c'est ça?
                                      Merci de ton aide!

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

                                      @Obi_Yoann j'utilise les versions non officielle flashée avec le WebFlasher (ça se débrouille tout seul, pas besoin de choisir le chip)
                                      Tu as tous les binaires non officiels dont celui avec la téléinfo
                                      https://github.com/Jason2866/Tasmota-specials lis le readme pour le flash 🙂

                                      1 Reply Last reply
                                      • Nicolas BernaertsN Nicolas Bernaerts

                                        @Obi_Yoann Je viens de mettre à jour tasmota-flash sur GitHub. Il intègre le bon paramètre -fm dio pour les ESP32.

                                        O Offline
                                        O Offline
                                        Obi_Yoann
                                        wrote on last edited by Obi_Yoann
                                        #351

                                        @Nicolas-Bernaerts Bonjour!
                                        Je tente à nouveau d'utiliser ta version, j'ai pu la flasher sans soucis sur mon esp32s2 pour info, et elle fonctionne apparemment au poil.
                                        Je voulais recompiler pour ajouter le support de l'écran, mais même sans aller jusque là juste en suivant les instructions je n'arrive plus à compiler.
                                        J'ai tenté sur les releases suivantes de Tasmota :

                                        • v12.0.2
                                        • v12.1.0
                                        • v12.1.1
                                        • v12.2.0
                                          La version 12.0.2 me sort plein d'erreurs sur xdrv_01_9_webserver.ino :
                                        Compiling .pio/build/teleinfo32s2/libdb5/Adafruit_BusIO/Adafruit_SPIDevice.cpp.o
                                        /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino: In function 'void HandleWifiConfiguration()':
                                        /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1866:11: error: 'WIFI_NOT_TESTING' was not declared in this scope
                                               if (WIFI_NOT_TESTING == Wifi.wifiTest) {
                                                   ^~~~~~~~~~~~~~~~
                                        Compiling .pio/build/teleinfo32s2/lib90c/Adafruit_VEML7700/Adafruit_VEML7700.cpp.o
                                        /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1866:11: note: suggested alternative: 'WIFI_NO_SLEEP'
                                               if (WIFI_NOT_TESTING == Wifi.wifiTest) {
                                                   ^~~~~~~~~~~~~~~~
                                                   WIFI_NO_SLEEP
                                        /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1866:36: error: 'struct WIFI' has no member named 'wifiTest'
                                               if (WIFI_NOT_TESTING == Wifi.wifiTest) {
                                                                            ^~~~~~~~
                                        /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1867:37: error: 'struct WIFI' has no member named 'old_wificonfig'
                                                 if (MAX_WIFI_OPTION == Wifi.old_wificonfig) { Wifi.old_wificonfig = Settings->sta_config; }
                                                                             ^~~~~~~~~~~~~~
                                        /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1867:60: error: 'struct WIFI' has no member named 'old_wificonfig'
                                                 if (MAX_WIFI_OPTION == Wifi.old_wificonfig) { Wifi.old_wificonfig = Settings->sta_config; }
                                                                                                    ^~~~~~~~~~~~~~
                                        /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1869:14: error: 'struct WIFI' has no member named 'save_data_counter'
                                                 Wifi.save_data_counter = TasmotaGlobal.save_data_counter;
                                                      ^~~~~~~~~~~~~~~~~
                                        /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1872:12: error: 'struct WIFI' has no member named 'wifi_test_counter'; did you mean 'config_counter'?
                                               Wifi.wifi_test_counter = 9;   // seconds to test user's proposed AP
                                        

                                        Tasmota a visiblement évolué sur ce fichier, si j'ai bien compris, et du coup ton fichier était en double du fichier d'origine ? J'avais tenté la 12.0.2 ayant vu que c'était la version que tu avais compilé pour tes binaires de fin aout... 🙂
                                        Toutes les versions à part la 12.0.2 me sortent moins d'erreurs mais échouent quand même :

                                        Compiling .pio/build/teleinfo32s2/lib3b5/Adafruit_VEML7700/Adafruit_VEML7700.cpp.o
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino: In function 'void TeleinfoLoadConfig()':
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:662:111: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                           teleinfo_config.baud_rate       = TeleinfoValidateBaudRate (UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_RATE));
                                                                                                                                                       ^
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                         int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                             ^~~~~~~~~~~~~~~~
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:663:92: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                           teleinfo_config.log_policy      = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_LOG_POLICY);
                                                                                                                                    ^
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                         int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                             ^~~~~~~~~~~~~~~~
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:664:92: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                           teleinfo_config.msg_policy      = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_MSG_POLICY);
                                                                                                                                    ^
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                         int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                             ^~~~~~~~~~~~~~~~
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:665:88: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                           teleinfo_config.msg_type        = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_MSG_TYPE);
                                                                                                                                ^
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                         int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                             ^~~~~~~~~~~~~~~~
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:666:95: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                           teleinfo_config.update_interval = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_INTERVAL);
                                                                                                                                       ^
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                         int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                             ^~~~~~~~~~~~~~~~
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:667:92: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                           teleinfo_config.percent_adjust  = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_ADJUST);
                                                                                                                                    ^
                                        /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                         int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                        

                                        Là j'avoue que je sèche complètement...
                                        J'ai bien trouvé la déclaration de la fonction par ex UfsCfgLoadKeyInt où effectivement on a 3 arguments :

                                        int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                        

                                        J'ai aussi trouvé que le fichier où cette fonction était déclarée avait évolué le 16 octobre dernier, et qu'avant la déclaration était :

                                        int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value = INT_MAX)
                                        

                                        Donc avec une valeur par défaut en cas d'absence du 3ème argument. Je pense que mes erreurs de compilation viennent de là... Qu'en penses-tu?

                                        Merci d'avance pour ton aide!!! 🙂

                                        EDIT : j'ai repris l'ancien fichier avant refactoring, la compilation va effectivement bien plus loin mais échoue cette fois sur l'erreur suivante :

                                        Retrieved `.pio/build/teleinfo32s2/lib3d8/Adafruit_seesaw_soilsensor_1.3.1/Adafruit_seesaw.cpp.o' from cache
                                        /home/yoann/platformio-core/Tasmota-12.2.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino: In function 'void TeleinfoInit()':
                                        /home/yoann/platformio-core/Tasmota-12.2.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:1334:13: error: 'struct TSettings' has no member named 'energy_kWhtotal'; did you mean 'energy_kWhtotal_ph'?
                                           Settings->energy_kWhtotal = 0;
                                                     ^~~~~~~~~~~~~~~
                                                     energy_kWhtotal_ph
                                        Retrieved `.pio/build/teleinfo32s2/libcc1/BM8563_RTC/BM8563.cpp.o' from cache
                                        Retrieved `.pio/build/teleinfo32s2/lib6e4/AT24C256_512/Eeprom24C128_256.cpp.o' from cache
                                        

                                        En effet la déclaration de energy_kWhtotal n'est plus présente dans tasmota_types.h depuis la version 12.1.0 a priori. Là par contre je ne vois pas de solution à ce problème... 😞

                                        Nicolas BernaertsN 2 Replies Last reply
                                        • O Obi_Yoann

                                          @Nicolas-Bernaerts Bonjour!
                                          Je tente à nouveau d'utiliser ta version, j'ai pu la flasher sans soucis sur mon esp32s2 pour info, et elle fonctionne apparemment au poil.
                                          Je voulais recompiler pour ajouter le support de l'écran, mais même sans aller jusque là juste en suivant les instructions je n'arrive plus à compiler.
                                          J'ai tenté sur les releases suivantes de Tasmota :

                                          • v12.0.2
                                          • v12.1.0
                                          • v12.1.1
                                          • v12.2.0
                                            La version 12.0.2 me sort plein d'erreurs sur xdrv_01_9_webserver.ino :
                                          Compiling .pio/build/teleinfo32s2/libdb5/Adafruit_BusIO/Adafruit_SPIDevice.cpp.o
                                          /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino: In function 'void HandleWifiConfiguration()':
                                          /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1866:11: error: 'WIFI_NOT_TESTING' was not declared in this scope
                                                 if (WIFI_NOT_TESTING == Wifi.wifiTest) {
                                                     ^~~~~~~~~~~~~~~~
                                          Compiling .pio/build/teleinfo32s2/lib90c/Adafruit_VEML7700/Adafruit_VEML7700.cpp.o
                                          /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1866:11: note: suggested alternative: 'WIFI_NO_SLEEP'
                                                 if (WIFI_NOT_TESTING == Wifi.wifiTest) {
                                                     ^~~~~~~~~~~~~~~~
                                                     WIFI_NO_SLEEP
                                          /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1866:36: error: 'struct WIFI' has no member named 'wifiTest'
                                                 if (WIFI_NOT_TESTING == Wifi.wifiTest) {
                                                                              ^~~~~~~~
                                          /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1867:37: error: 'struct WIFI' has no member named 'old_wificonfig'
                                                   if (MAX_WIFI_OPTION == Wifi.old_wificonfig) { Wifi.old_wificonfig = Settings->sta_config; }
                                                                               ^~~~~~~~~~~~~~
                                          /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1867:60: error: 'struct WIFI' has no member named 'old_wificonfig'
                                                   if (MAX_WIFI_OPTION == Wifi.old_wificonfig) { Wifi.old_wificonfig = Settings->sta_config; }
                                                                                                      ^~~~~~~~~~~~~~
                                          /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1869:14: error: 'struct WIFI' has no member named 'save_data_counter'
                                                   Wifi.save_data_counter = TasmotaGlobal.save_data_counter;
                                                        ^~~~~~~~~~~~~~~~~
                                          /home/yoann/platformio-core/Tasmota-12.0.2_MOD3/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino:1872:12: error: 'struct WIFI' has no member named 'wifi_test_counter'; did you mean 'config_counter'?
                                                 Wifi.wifi_test_counter = 9;   // seconds to test user's proposed AP
                                          

                                          Tasmota a visiblement évolué sur ce fichier, si j'ai bien compris, et du coup ton fichier était en double du fichier d'origine ? J'avais tenté la 12.0.2 ayant vu que c'était la version que tu avais compilé pour tes binaires de fin aout... 🙂
                                          Toutes les versions à part la 12.0.2 me sortent moins d'erreurs mais échouent quand même :

                                          Compiling .pio/build/teleinfo32s2/lib3b5/Adafruit_VEML7700/Adafruit_VEML7700.cpp.o
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino: In function 'void TeleinfoLoadConfig()':
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:662:111: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                             teleinfo_config.baud_rate       = TeleinfoValidateBaudRate (UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_RATE));
                                                                                                                                                         ^
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                           int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                               ^~~~~~~~~~~~~~~~
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:663:92: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                             teleinfo_config.log_policy      = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_LOG_POLICY);
                                                                                                                                      ^
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                           int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                               ^~~~~~~~~~~~~~~~
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:664:92: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                             teleinfo_config.msg_policy      = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_MSG_POLICY);
                                                                                                                                      ^
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                           int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                               ^~~~~~~~~~~~~~~~
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:665:88: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                             teleinfo_config.msg_type        = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_MSG_TYPE);
                                                                                                                                  ^
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                           int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                               ^~~~~~~~~~~~~~~~
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:666:95: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                             teleinfo_config.update_interval = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_INTERVAL);
                                                                                                                                         ^
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                           int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                               ^~~~~~~~~~~~~~~~
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:667:92: error: too few arguments to function 'int UfsCfgLoadKeyInt(const char*, const char*, int)'
                                             teleinfo_config.percent_adjust  = UfsCfgLoadKeyInt (D_TELEINFO_CFG, D_CMND_TELEINFO_ADJUST);
                                                                                                                                      ^
                                          /home/yoann/platformio-core/Tasmota-12.1.0_MOD/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem_cfg_csv.ino:105:5: note: declared here
                                           int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                          

                                          Là j'avoue que je sèche complètement...
                                          J'ai bien trouvé la déclaration de la fonction par ex UfsCfgLoadKeyInt où effectivement on a 3 arguments :

                                          int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value)
                                          

                                          J'ai aussi trouvé que le fichier où cette fonction était déclarée avait évolué le 16 octobre dernier, et qu'avant la déclaration était :

                                          int UfsCfgLoadKeyInt (const char* pstr_filename, const char* pstr_key, const int default_value = INT_MAX)
                                          

                                          Donc avec une valeur par défaut en cas d'absence du 3ème argument. Je pense que mes erreurs de compilation viennent de là... Qu'en penses-tu?

                                          Merci d'avance pour ton aide!!! 🙂

                                          EDIT : j'ai repris l'ancien fichier avant refactoring, la compilation va effectivement bien plus loin mais échoue cette fois sur l'erreur suivante :

                                          Retrieved `.pio/build/teleinfo32s2/lib3d8/Adafruit_seesaw_soilsensor_1.3.1/Adafruit_seesaw.cpp.o' from cache
                                          /home/yoann/platformio-core/Tasmota-12.2.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino: In function 'void TeleinfoInit()':
                                          /home/yoann/platformio-core/Tasmota-12.2.0_MOD/tasmota/tasmota_xnrg_energy/xnrg_15_teleinfo.ino:1334:13: error: 'struct TSettings' has no member named 'energy_kWhtotal'; did you mean 'energy_kWhtotal_ph'?
                                             Settings->energy_kWhtotal = 0;
                                                       ^~~~~~~~~~~~~~~
                                                       energy_kWhtotal_ph
                                          Retrieved `.pio/build/teleinfo32s2/libcc1/BM8563_RTC/BM8563.cpp.o' from cache
                                          Retrieved `.pio/build/teleinfo32s2/lib6e4/AT24C256_512/Eeprom24C128_256.cpp.o' from cache
                                          

                                          En effet la déclaration de energy_kWhtotal n'est plus présente dans tasmota_types.h depuis la version 12.1.0 a priori. Là par contre je ne vois pas de solution à ce problème... 😞

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

                                          @Obi_Yoann hello,
                                          En fait j'ai fait évoluer pas mal de choses depuis tasmota 12, mais je n'ai pas tout republié sur GitHub. C'est dans doute pour cela que tes compilations sont en erreur.
                                          Mais je te confirme que tout compile sans problème chez moi sur la base de Tasmota 12.1.1.
                                          Je vais essayer de déposer tous les dernières versions des fichiers demain matin.

                                          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


                                          0

                                          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