Community Forum
    • Blog
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. Obi_Yoann
    3. Posts
    O
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 21
    • Groups 0

    Posts

    Recent
    • RE: Tasmota

      @Nicolas-Bernaerts Bonjour!
      J'ai tenté de compiler cette version mais je me heurte à un problème quand j'active la compilation des graphes. Dès que c'est "autorisé" dans le user_config_override.h :
      e26452a2-f4c4-4315-8ca3-63a6299aa12f-image.png

      Apparemment il me manque des déclarations de membres (day_last_wh, hour_last_wh) quelque part.
      Il manquerait aussi une déclaration pour kTeleinfoGraphColorPhase et kTeleinfoGraphColorPeak, qu'effectivement je ne trouve nul part. Dans les versions précédente, ces 2 derniers étaient déclarés dans xnrg_15_teleinfo.ino, mais ça a changé dans le dernier commit :
      a15039b6-ac76-4eb1-9377-9a87eda47812-image.png
      De mon côté j'ai toujours l'ancienne "nomenclature" qui est présente dans le fichier xsns_104_teleinfo_graph.ino aux lignes 1980 et 2237 et 2242 :
      $ find . -type f -exec fgrep -Hnn "kTeleinfoGraphColorPhase" {} ;
      ./tasmota/tasmota_xsns_sensor/xsns_104_teleinfo_graph.ino:1980: GetTextIndexed (str_text, sizeof (str_text), phase, kTeleinfoGraphColorPhase);
      ./tasmota/tasmota_xsns_sensor/xsns_104_teleinfo_graph.ino:2237: GetTextIndexed (str_text, sizeof (str_text), phase, kTeleinfoGraphColorPhase);

      $ find . -type f -exec fgrep -Hnn "kTeleinfoGraphColorPeak" {} ;
      ./tasmota/tasmota_xsns_sensor/xsns_104_teleinfo_graph.ino:2242: GetTextIndexed (str_text, sizeof (str_text), phase, kTeleinfoGraphColorPeak);

      J'ai applique le changement lié commit 6ef0508 sur ces 3 occurences et ça passe apparemment.
      Pour l'autre problème, je vois qu'apparemment le même commit 6ef0508 a changé les déclarations en question, dans le fichier c'est bien ça?
      85438b7f-3b88-4307-a382-6e1570fb9e4e-image.png
      Idem j'ai suivi les modifications et appliqué aux 12 occurences dans xsns_104_teleinfo_graph.ino les modifications, du coup ça compile! Peut-être que le fichier xsns_104_teleinfo_graph.ino dans le github n'est pas la version la plus récente?

      Sur ma version je rajoute le support de l'écran, de la led du shield de @Charles, et du berry (raison pour laquelle j'essaye de compiler une version custom, j'ai bien noté que ta version compilée marchait parfaitement, sans ces éléments additionnels!).
      Pour info il y a eu à nouveau une évolution de xdrv_01_9_webserver.ino, comme l'autre fois j'ai juste reporté tes modifications dans le fichier de la 12.4.0 et ça compile sans soucis. 🙂

      EDIT : bon bin apparemment il doit manquer d'autres choses par rapport aux graphes, en compilant avec je n'ai plus rien qui marche, il reçoit les messages mais ne les "parse" pas correctement :
      2cf76e2c-bafd-42cb-936a-3c3ffcd932cd-image.png
      Alors qu'en le désactivant avant de compiler c'est tout bon :
      c22c9840-e587-4f44-ac91-8b4a668df66c-image.png
      Je sèche! 😞

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @Nicolas-Bernaerts said in Tasmota:

      @Obi_Yoann hello,
      Bien joué !
      En fait concernant ce fichier xdrv_01_9_webserver.ino, c'est encore plus simple ... j'ajoute seulement ces lignes au fichier d'origine :

      #ifdef EXTENSION_NAME
      "<div style='text-align:right;font-size:11px;'>" EXTENSION_NAME " " EXTENSION_VERSION " <small>(" EXTENSION_BUILD ")</small> " D_BY " " EXTENSION_AUTHOR "</div>"
      #endif

      Cela me permet entre autre d'avoir la version de build dans la home page.

      Donc dans le fichier de la 12.2.0, tu ajoutes ces lignes au même endroit ...et c'est tout.

      Effectivement c'est bien plus simple et propre! Modification faite et compilée chez moi, ras nickel.
      Pour info petit script berry pour cette version pour la remontée vers emoncms :

      import json
      
      var api_url = "http://192.168.xxx.xxx/input/post"
      var api_key = "xxx"
      var node_name = "ENERGY"
      
      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)
        # Convert map to json
        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, param) 
      end
      
      # Callback on each MQTT interception
      tasmota.add_rule("METER",rule_tic)
      tasmota.add_rule("ENERGY",rule_tic)
      

      Cela transmets à emoncms deux objets, METER en fonction du délai de journalisation (par défaut 300s/5mn), et ENERGY apparemment à chaque trame reçue du TIC (si je dis pas de bêtise).
      Voici ce qui est envoyé pour ENERGY :
      c63a4a8a-9b8d-4d86-b1db-cceedad41a44-image.png
      Et pour METER :
      34444e5d-63a3-43b4-9cf0-858d1101c104-image.png
      La puissance souscrite utilisée pour calculer le "LOAD" et règler la couleur de la led n'est hélas présent que dans l'objet "METER", du coup que toutes les 5mn (ou moins si on règle moins).
      C'est une alternative qui peut être intéressante quand on est une buse comme moi en MQTT et pas fichu de comprendre comment faire pour envoyer les données de Tasmota vers emoncms via MQTT!!! 🤣

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @Nicolas-Bernaerts je reviens sur le sujet compilation de la 12.1.1, a priori le plus simple serait de renommer la cible, au lieu de teleinfo32s2 j'ai changé en tasmota32s2-ticnb et ça compile direct sans manipulation, et sans devoir placer une fichier manuellement... Plutôt cool! Pas encore trouvé de solution pour la 12.2.0...

      EDIT : ok j'ai la raison de l'erreur lors de la compilation en 12.2.0.
      Pour rappel j'ai ce message lors de la phase "linking" en fin de compilation :

      Compiling .pio/build/tasmota32s2-ticnb/FrameworkArduino/stdlib_noniso.c.o
      Compiling .pio/build/tasmota32s2-ticnb/FrameworkArduino/wiring_pulse.c.o
      Compiling .pio/build/tasmota32s2-ticnb/FrameworkArduino/wiring_shift.c.o
      Archiving .pio/build/tasmota32s2-ticnb/libFrameworkArduino.a
      Indexing .pio/build/tasmota32s2-ticnb/libFrameworkArduino.a
      Linking .pio/build/tasmota32s2-ticnb/firmware.elf
      /home/yoann/.platformio/packages/toolchain-xtensa-esp32s2@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld: /tmp/cc9rHlIH.ltrans5.ltrans.o:(.literal+0x300): undefined reference to `ESP_getFlashChipRealSize()'
      /home/yoann/.platformio/packages/toolchain-xtensa-esp32s2@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld: /tmp/cc9rHlIH.ltrans5.ltrans.o: in function `HTTPClient::HTTPClient()':
      <artificial>:(.text+0x428f): undefined reference to `ESP_getFlashChipRealSize()'
      collect2: error: ld returned 1 exit status
      *** [.pio/build/tasmota32s2-ticnb/firmware.elf] Error 1
      ============================================================================================================================= [FAILED] Took 57.43 seconds =============================================================================================================================
      
      Environment        Status    Duration
      -----------------  --------  ------------
      tasmota32s2-ticnb  FAILED    00:00:57.428
      ======================================================================================================================== 1 failed, 0 succeeded in 00:00:57.428 ========================================================================================================================
      

      Le problème concerne effectivement la fonction ESP_getFlashChipRealSize, appelée dans le fichier xdrv_01_9_webserver.ino ligne 2453 :
      WSContentSend_P(PSTR("}1" D_FLASH_CHIP_SIZE "}2%d KB"), ESP_getFlashChipRealSize() / 1024);

      Le problème c'est qu'entre la 12.1.1 et la 12.2.0, la déclaration de cette fonction a sauté dans le fichier ./tasmota/tasmota_support/support_esp.ino !
      Elle est bien déclarée mais uniquement dans une section ESP8266, plus dans la section ESP32.
      A priori c'est le commit 452c6fabb05f5700e59c4d9bb90eb4b0cafada47 du 17 septembre : https://github.com/arendst/Tasmota/commit/452c6fabb05f5700e59c4d9bb90eb4b0cafada47
      d5a99825-6b14-440f-9379-74a4d83ce052-image.png

      Si je comprends l'évolution suivante :
      75acc9e1-bdb1-424a-bf97-dc323b7d8825-image.png
      Il faudrait probablement faire une modification similaire... 🙂

      EDIT 2 :
      f029274f-20b8-4179-8dcd-7a98d449c564-image.png
      Et la lumière fut! 😎
      J'ai modifié la ligne 2453 du fichier ./tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino comme suivant :

      WSContentSend_P(PSTR("}1" D_FLASH_CHIP_SIZE "}2%d KB"), ESP.getFlashChipSize() / 1024);
      
      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @Nicolas-Bernaerts YES!
      J'ai réussi à compiler la version 12.1.1 avec cette technique! 👍🏻
      Pas possible de compiler la cible tasmota32s2 avec tes fichiers présents, j'ai une erreur sur un include incorrect :

      Indexing .pio/build/tasmota32s2/lib8be/libWire.a
      Archiving .pio/build/tasmota32s2/liba79/libAdafruit_CCS811-1.0.0.14.a
      Indexing .pio/build/tasmota32s2/liba79/libAdafruit_CCS811-1.0.0.14.a
      Archiving .pio/build/tasmota32s2/lib345/libSPI.a
      Indexing .pio/build/tasmota32s2/lib345/libSPI.a
      /home/yoann/platformio-core/Tasmota-12.1.1_MOD/tasmota/tasmota_xdrv_driver/xdrv_17_rcswitch.ino:44:10: fatal error: RCSwitch.h: No such file or directory
      
      ******************************************************************
      * Looking for RCSwitch.h dependency? Check our library registry!
      *
      * CLI  > platformio lib search "header:RCSwitch.h"
      * Web  > https://registry.platformio.org/search?q=header:RCSwitch.h
      *
      ******************************************************************
      
       #include <RCSwitch.h>
                ^~~~~~~~~~~~
      compilation terminated.
      Archiving .pio/build/tasmota32s2/lib5c1/libAdafruit_MAX31865-1.1.0-custom
      Indexing .pio/build/tasmota32s2/lib5c1/libAdafruit_MAX31865-1.1.0-custom
      Archiving .pio/build/tasmota32s2/lib325/libAdafruit_MCP9808_Tasmota.a
      Indexing .pio/build/tasmota32s2/lib325/libAdafruit_MCP9808_Tasmota.a
      Archiving .pio/build/tasmota32s2/lib628/libAdafruit_SGP30-1.2.0.a
      Indexing .pio/build/tasmota32s2/lib628/libAdafruit_SGP30-1.2.0.a
      

      A la place j'ai téléchargé dans le dossier ~/.platformio/packages/framework-arduinoespressif32/variants/tasmota/ le fichier http://ota.tasmota.com/tasmota32/release/tasmota32s2-safeboot.bin et relancé la compilation de teleinfo32s2, je confirme que ça fonctionne...
      Bref, j'ai pu compiler la version 12.1.1 c'est déjà cool! Merci de ton aide!
      J'essaierais plus tard de regarder pourquoi ça foire avec la 12.2.0, il y a du y avoir une évolution importante sur cette version.

      @Charles mais c'est TRES juste ce que tu dis ma foi! Encore une défaillance de mes yeux, je n'avais même pas remarqué! ^^

      Je vais tenter le reset, je l'avais essayé sur une ancienne version mais pas sur la dernière.

      Je vais aussi tenter l'ESP32 Passthru dont tu parles, mais ça implique un pc pas loin du compteur j'imagine j'ai juste?

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @Charles said in Tasmota:

      @Obi_Yoann tu n’as pas flashé la dernière version de tasmota spécial car la barre et le contrat sont fixés depuis cette semaine 😉

      Tout à fait!!! Merci de l'info!!!
      Flashé et effectivement la barre fonctionne!
      420c46f7-04ef-43e7-8841-bea6a6d83362-image.png
      Hélas toujours les checksums, et energy total est "négatif".
      Ah et pour une raison qui m'échappe, le contrat n'est plus bon, j'étais en 6A et j'ai pas changé! 😅
      En tout cas c'est top, merci!

      @Nicolas-Bernaerts je suis vraiment désolé d'être aussi pénible mais toujours pas possible de compiler hélas avec la dernière release, j'ai bien tout récupéré et replacé aux bons endroits, mais en 12.1.1 et en 12.2.0 j'ai des erreurs à la toute fin de la compilation.
      Le script que je passe pour placer tes fichiers aux bons endroits (j'espère) :

      cp ../tasmota/teleinfo/platformio_override.ini .
      cp ../tasmota/teleinfo/user_config_override.h tasmota/
      cp ../tasmota/common/esp8266_16M14M.json boards/
      cp ../tasmota/teleinfo/xnrg_15_teleinfo.ino tasmota/tasmota_xnrg_energy/
      cp ../tasmota/teleinfo/xdrv_01_9_webserver.ino tasmota/tasmota_xdrv_driver/
      cp ../tasmota/common/xdrv_50_filesystem_cfg_csv.ino tasmota/tasmota_xdrv_driver/
      cp ../tasmota/common/xdrv_94_ip_address.ino tasmota/tasmota_xdrv_driver/
      cp ../tasmota/common/xdrv_96_ftp_server.ino tasmota/tasmota_xdrv_driver/
      cp ../tasmota/common/xdrv_97_tcp_server.ino tasmota/tasmota_xdrv_driver/
      cp ../tasmota/common/xdrv_98_esp32_board.ino tasmota/tasmota_xdrv_driver/
      cp ../tasmota/common/xsns_120_timezone.ino tasmota/tasmota_xsns_sensor/
      unzip ../tasmota/common/FTPClientServer.zip -d lib/default/
      
      

      Mon arborescence :
      ~/platformio-core/tasmota (ton repo github)
      ~/platformio-core/Tasmota-12.1.1_MOD (version 12.1.1 avec tes fichiers)
      ~/platformio-core/Tasmota-12.2.0_MOD (version 12.2.0 avec tes fichiers)
      Le script ci-dessus je le passe depuis les dossiers Tasmota*_MOD naturellement.
      Pour la 12.1.1 l'erreur que j'ai :

      Creating filesystem with content:
      No files added -> will NOT create littlefs.bin and NOT overwrite fs partition!
      Unexpected naming conventions in this build environment -> Undefined behavior for further build process!!
      Expected build environment name like 'tasmota32-whatever-you-want'
      Will download safeboot binary from URL:
      http://ota.tasmota.com/tasmota32/release/teleinfo32s2-safeboot.bin
      safeboot binary written to variants dir.
          Offset | File
       -  0x1000 | /home/yoann/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s2/bin/bootloader_dout_80m.bin
       -  0x8000 | /home/yoann/platformio-core/Tasmota-12.1.1_MOD/.pio/build/teleinfo32s2/partitions.bin
       -  0xe000 | /home/yoann/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin
       -  0x10000 | /home/yoann/.platformio/packages/framework-arduinoespressif32/variants/tasmota/tasmota32s2-safeboot.bin
       - 0xe0000 | /home/yoann/platformio-core/Tasmota-12.1.1_MOD/.pio/build/teleinfo32s2/firmware.bin
      usage: esptool merge_bin [-h] --output OUTPUT [--format {r,a,w}]
                               [--flash_freq {keep,80m,60m,48m,40m,30m,26m,24m,20m,16m,15m,12m}]
                               [--flash_mode {keep,qio,qout,dio,dout}]
                               [--flash_size FLASH_SIZE]
                               [--spi-connection SPI_CONNECTION]
                               [--target-offset TARGET_OFFSET]
                               [--fill-flash-size FILL_FLASH_SIZE]
                               <address> <filename> [<address> <filename> ...]
      esptool merge_bin: error: argument <address> <filename>: [Errno 2] No such file or directory: '/home/yoann/.platformio/packages/framework-arduinoespressif32/variants/tasmota/tasmota32s2-safeboot.bin'
      *** [.pio/build/teleinfo32s2/firmware.bin] Explicit exit, status 2
      ============================================================================================================================= [FAILED] Took 46.89 seconds =============================================================================================================================
      
      Environment    Status    Duration
      -------------  --------  ------------
      teleinfo32s2   FAILED    00:00:46.890
      ======================================================================================================================== 1 failed, 0 succeeded in 00:00:46.890 ========================================================================================================================
      

      J'ai regardé dans le dossier mentionné, je n'ai effectivement pas ce fichier mais un autre :

      (platformio-core) yoann@powerripper:~/platformio-core/Tasmota-12.1.1_MOD$ ls ~/.platformio/packages/framework-arduinoespressif32/variants/tasmota/
      teleinfo32s2-safeboot.bin
      

      teleinfo32s2 au lieu de tasmota32s2, aucune idée de pourquoi!
      Avant de compiler teleinfo32s2, et avant d'incorporer tes fichiers via mon script, j'avais compilé avec succès tasmota32s2 depuis ce même dossier Tasmota-12.1.1_MOD (puis j'ai purgé les dossier .cache et .pio).

      Pour la version 12.2.0 :

      Compiling .pio/build/teleinfo32s2/FrameworkArduino/stdlib_noniso.c.o
      Compiling .pio/build/teleinfo32s2/FrameworkArduino/wiring_pulse.c.o
      Compiling .pio/build/teleinfo32s2/FrameworkArduino/wiring_shift.c.o
      Archiving .pio/build/teleinfo32s2/libFrameworkArduino.a
      Indexing .pio/build/teleinfo32s2/libFrameworkArduino.a
      Linking .pio/build/teleinfo32s2/firmware.elf
      /home/yoann/.platformio/packages/toolchain-xtensa-esp32s2@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld: /tmp/ccBxihnE.ltrans5.ltrans.o:(.literal+0x300): undefined reference to `ESP_getFlashChipRealSize()'
      /home/yoann/.platformio/packages/toolchain-xtensa-esp32s2@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld: /tmp/ccBxihnE.ltrans5.ltrans.o: in function `HTTPClient::HTTPClient()':
      <artificial>:(.text+0x428f): undefined reference to `ESP_getFlashChipRealSize()'
      collect2: error: ld returned 1 exit status
      *** [.pio/build/teleinfo32s2/firmware.elf] Error 1
      ============================================================================================================================= [FAILED] Took 52.68 seconds =============================================================================================================================
      
      Environment    Status    Duration
      -------------  --------  ------------
      teleinfo32s2   FAILED    00:00:52.682
      ======================================================================================================================== 1 failed, 0 succeeded in 00:00:52.682 ========================================================================================================================
      

      Là je sèche complètement, aucune idée de pourquoi ça fait ça. 😞
      Vraiment désolé, je sais pas pourquoi je galère à ce point mais je pense pas être très loin de "la vérité"! ^^

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @Charles Merci pour ton retour, je pense que mon problème est différent, de base j'étais sans SSL et j'ai pas testé avec (le emoncms est local, je crains pas trop les interceptions) mais j'ai testé à l'instant de désactiver le script (et rebooter) mais pareil toujours autant d'erreur checksum :
      0c8d6e70-e789-4d5f-b09c-3e010f713f42-image.png
      Mon père est passé aussi en TIC Standard sur le sien et très très peu d'erreur, même avec le même script berry que sur le mien et sans skip. Ca sent la différence de compteur, mais je sais pas ce qu'il a...
      Sur la version précompilée de @Nicolas-Bernaerts, je n'ai pas encore testé le script Berry (pas sûr qu'il marche tel quel d'ailleurs, je pense qu'il faut que j'ajoute le support de Berry qui n'est pas dedans je crois de base), mais aucune erreur checksum avec le wemos tic et l'esp32s2. Il interprête, apparemment, tout parfaitement!
      Le energy total est correct, la barre de "charge" est correcte aussi, current est plus précis et active power aussi :
      f5feff4c-c4a6-49b5-8b8c-db314c898897-image.png
      @Nicolas-Bernaerts merci beaucoup! je récupère tout et tente la compilation!!! 😎🙏🏻

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @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... 😞

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @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!

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @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é.

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      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?

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @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)
      
      
      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @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! ^^

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @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... 🤔

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @Charles Merci de ton retour!
      J'ai réussi à avancer un peu, je viens de comprendre que la résolution de nom ne se fait pas en utilisant mes DNS locaux hélas, si je renseigne l'IP à la place du fqdn dans l'url, j'obtiens alors une erreur 400 au lieu de -1, donc au moins ça progresse! C'est très étrange parce que la résolution fonctionne pourtant apparemment, si je fais un ping en console classique il trouve bien l'IP!
      Je vais continuer de jouer, je penche sur un problème au niveau des balises dans le json, elles sont entourées de " et je me demande si ça coince pas dans le code. Idem si je colle l'URL affichée en log via le print(full) dans le navigateur, j'ai un success direct.
      EDIT : je continue les tests... ya un truc dans le json qui m'échappe mais je vais finir par comprendre.

      EDIT2 : mon problème d'erreur 400 était lié à 2 balises, NGTF (Nom du calendrier tarifaire) et LTARF (Libellé tarif fournisseur en cours), les deux étaient sous le format suivant :

      "NGTF":"      BASE      "
      "LTARF":"      BASE      "
      

      Je les ai forcé dans le code à juste "BASE" et je n'ai plus d'erreur 200 apparemment, les données sont envoyées toutes les 5s à emoncms avec succès... Plus qu'à tuner tout ça! Merci de votre aide les gars!

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      Bon en fait en log j'ai le retour du GET(), qui est un -1... Donc en fait ça confirme bien que la commande ne passe pas, je devrais avoir un 200 je pense. Est-ce qu'il me manque un truc? Vu que le firmware est compilé à la main, c'est clairement possible!
      b0f09a4e-01c9-49b1-90ac-4939bdfa7e6a-image.png
      Le "LOAD" est affiché correctement lui maintenant.

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @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...

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @Nicolas-Bernaerts ah désolé je n'ai pas été clair dans mon expression, j'ai fais trop de test dans un laps de temps trop court, du coup je n'ai pas bien décrit ce que j'ai fait!
      Mes captures d'écran ont été faites après avoir placé le HAT de charles qui est branché sur le TIC.

      Actuellement j'ai 2 ESP32S2 identiques, l'un flashé avec le tasmota teleinfo de charles, l'autre avec ta version.

      Le fonctionnement avec le firmware de Charles est correct dans le sens où j'ai bien les données du TIC Standard qui remontent dans l'interface, sans soucis particulier. Ce que je n'arrive pas à faire avec ce firmware c'est la remontée d'info vers un emoncms.

      Avec ta version, ce que je vois sur l'ESP32S2 c'est que je n'arrive pas à enregistrer le changement de baud rate, il reste à 1200bds. Je change le bouton, j'enregistre, je reviens dedans il est toujours à 9600, je reboot l'ESP32S2 et il revient à 1200. Idem avec la console. Je penche plutôt sur le fait qu'il ne bascule pas en 9600 réellement, je ne sais pas pourquoi, et du coup c'est "incorrect" par rapport au mode Standard. C'est pareil avec tous les autres paramètres sur la page configuration/configure teleinfo, tous les paramètres de cette page reviennent à leurs paramètres par défaut au reboot.
      Si je fais save et que je reviens sur la page, la valeur présente quand j'ai fais save est bien reprise, mais au reboot ça revient par défaut, pour moi c'est un bug lié à l'ESP32S2 qui cause ça mais pour débugger sans serial... 😬

      Utilisant le HAT, je n'ai pas vraiment la main sur quel GPIO est utilisable sur l'ESP32S2, mais vu que ça fonctionne correctement au niveau lecture sur l'autre firmware avec la même configuration, je pense que matériellement on est bon.

      J'ai compilé la nouvelle version, j'ai le même comportement quant à l'enregistrement du mode 1200/9600, ça ne survit par à un reboot et revient à chaque fois en 1200.
      Je boot, il est en 1200, je change la conf et passe en 9600, mais j'ai toujours ça en console :
      e5f7ef22-c904-4f74-9f68-1359fd0511bf-image.png
      Ca incrémente sur la fenêtre principale mais sans jamais qu'un message soit bien interprété :
      d865d0ad-23d6-43ca-8701-f9ee4978af1f-image.png
      Je n'ai bien ici à nouveau que le gpo11 définit comme tinfo rx.
      Et je me suis pas gouré quand j'ai flashé la version fraichement compilée (on sait jamais! je commence à avoir un paquet de fichiers... ^^)
      88bad94e-8150-4e1a-b00c-ebe730ce0aa0-image.png
      Merci encore de ton aide, je pense qu'on n'est pas loin de la solution mais c'est pénible de pas avoir de log à fournir! 😣

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @Nicolas-Bernaerts
      Merci de ton retour!
      Désolé du retard de mon côté, j'étais en vacances et sans les esp32... 😅
      J'ai incorporé tes modifications et compilé sans soucis, puis flashé, idem sans soucis. J'ai pu me connecter sur le wifi compteur-xxxx pour lui indiquer mon wifi, ça connecte et reboot nickel.
      Pour le moment l'esp n'est pas branché sur le TIC, j'ai configuré le bon gpio pour le TINFO RX (le 11). J'ai testé par contre simplement l'enregistrement du passage de 1200 à 9600, je continue de ne pas avoir ce paramètre d'enregistré, ça ne survit pas au redémarrage, est-ce que tu aurais une idée de ce qui pourrait causer ça?
      J'ai toujours le même comportement lorsque je branche le TIC, plein de reset et aucune data utile :
      29a81436-526c-4581-a48d-4289074b57ef-image.png
      J'ai bien qu'un GPIO cette fois d'enregistré pour le TINFO RX.
      Je comprends pas pourquoi ça fait ça, mais c'est clair que c'est pénible de pas pouvoir débugger via l'usb...
      a7c11eb1-47b8-4a97-96d1-db6931f4243b-image.png

      OK pour le littlefs, j'ai tenté, ça compilait bien et semblait fonctionner, mais j'avais pas testé l'OTA... je suis revenu sur les partitions normales.

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      @Charles Merci du retour!
      J'ai bien l'affichage (vide) de la partie teleinfo pourtant :
      6b5057be-0828-4828-994f-2a927a3bfd78-image.png
      Je penche plutôt sur un problème de configuration, il n'écrit aucun fichier de configuration quand j'enregistre les paramètres.
      J'ai trouvé dans le code source les lignes de commande (via la commande tic_help on a un bel aperçu) :
      10:07:35.978 CMD: tic_help
      10:07:35.982 HLP: tic_enable = enable teleinfo (ON / OFF)
      10:07:35.983 HLP: tic_rate = set serial rate (1200, 9600, 19200)
      10:07:35.984 HLP: tic_msgp = message publish policy :
      10:07:35.984 HLP: 0 - Never
      10:07:35.985 HLP: 1 - Every TIC message
      10:07:35.986 HLP: 2 - When Power fluctuates (± 5%)
      10:07:35.986 HLP: 3 - With Telemetry only
      10:07:35.987 HLP: tic_msgt = message type publish policy :
      10:07:35.988 HLP: 0 - None
      10:07:35.988 HLP: 1 - METER only
      10:07:35.989 HLP: 2 - TIC only
      10:07:35.990 HLP: 3 - METER and TIC
      10:07:35.990 HLP: tic_ival = ROM update interval (mn)
      10:07:35.991 HLP: tic_adj = maximum power ajustment ()
      10:07:35.992 HLP: tic_log = [littlefs] log policy (0:buffered, 1:immediate)
      10:07:35.993 HLP: tic_rot = [littlefs] force log rotate
      10:07:35.994 RSL: RESULT = {"tic_help":"Done"}
      J'ai tenté de modifié la configuration via la commande tic_rate, elle est bien prise en compte au niveau du webui une fois passée dans la console tasmota (tic_rate 9600), mais n'est pas enregistrée et revient à 1200 après un reboot, et j'ai toujours les "reset" par dizaines, et rien qui remonte comme données...
      Par ex j'enregistre le tic_rate à 9600 mais les reset continuent :
      10:11:45.615 CMD: tic_rate 9600
      10:11:45.620 RSL: RESULT = {"tic_rate":9600}
      10:11:45.953 TIC: Message reset
      10:11:45.954 TIC: Message reset
      10:11:46.221 TIC: Message reset
      10:11:46.472 TIC: Message reset
      Si je reviens sur le firmware teleinfo d'origine, pas d'erreur visible.
      Pour la configuration je suis sur la configuration automatique :
      468d5be5-e0f1-40e2-b83f-a85eb4f83c62-image.png
      L'écran et la led fonctionne bien!

      posted in Téléinfo
      O
      Obi_Yoann
    • RE: Tasmota

      J'ai le même comportement avec un esp32s2, la configuration teleinfo est réinitialisée lors d'un redémarrage, et je n'ai pas les commandes energyconfig comme dans la version de Charles. Est-ce que ça pourrait être lié au littlefs? j'ai l'impression pourtant que c'est bien fonctionnel...
      Sur l'esp32s2 :
      1696f04c-e215-44ec-a011-14305f698037-image.png
      Et la partition n'est pas vide, mais à peine mieux :
      59859c70-dcb8-4d3d-8517-e024852dc5fe-image.png

      posted in Téléinfo
      O
      Obi_Yoann