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

    Tasmota

    Scheduled Pinned Locked Moved Téléinfo
    525 Posts 31 Posters 180.9k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • SebHS Offline
      SebH @Barbu Dor
      last edited by

      @Barbu-Dor
      Je fais suite à notre échange qui date d'un moment concernant le choix de la résistance en série avec l'opto. A la base j'avais une 1.5K et j'avais de temps à autre des erreurs de com. Puis je suis passer à une 1K, et il me semble que globlement les erreurs ont augmenter. J'ai donc fait suite à ton post, j'ai sortis l'oscillo, j'obtiens environ comme toi, pas loin de 5v C/C . Avec une 220 ohms, même pas la peine d'essayer, je décode rien du tout... Du coup, je suis repassé a une 1.5K... Si quelqu'un comprend quelque chose la dedans, car moi je pige plus rien

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

        @Charles je confirme que ma version gère le mode historique et le mode standard.

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

          @Obi_Yoann j'avais publié une réponse sur GitHub avant de voir tes messages ici.
          J'ai reçu des ESP32S2. J'ai ajouté la prise en compte de ce proc comme une cible de compilation. Le problème du serveur FTP qui plante au boot est réglé. Son démarrage et son arrêt sont maintenant manuels : ftp_start et ftp_stop. Il me reste à le tester en vrai avec un flux TIC (Le S2 n'a pas de port série sur le connecteur USB en mode normal ...).

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

            @Obi_Yoann dans ton screen tu as 2 GPIO avec Tinfo_RX. Ce doit être une partie du problème.

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

              @Obi_Yoann un complément : ton partionnement proposé sur GitHub ne semble pas compatible avec le S2. Il empêche toute mise à jour en OTA et il empêche la sauvegarde de la configuration. Il faut partir du partitionnement standard avec 320k de littlefs. C'est peu, mais c'est le seul qui fonctionne d'après de rapides tests.
              Tous les message reset sont classiquement un problème de mauvaise vitesse (1200 pour 9600 ou vive versa).

              O 1 Reply Last reply Reply Quote
              • O Offline
                Obi_Yoann @Nicolas Bernaerts
                last edited by Obi_Yoann

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

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

                  @Obi_Yoann
                  Si tu n'as pas connecté le TIC, il n'y a aucune raison d'avoir des données en entrée.
                  GPIO11 est une entrée analogique, c'est peut être le problème. D'après la doc, il faudrait plutôt utiliser GPIO21 a GPIO38.
                  https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/hw-reference/esp32s2/user-guide-saola-1-v1.2.html

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

                    J'ai forcé TELEINFO_RX en tant que digital input. Cela pourrait régler le problème des reset intempestifs sur un port initialement analogique. Le code est sous GitHub. Il faut juste le recompiler.
                    Tiens moi au courant si cela règle le pb.

                    O 1 Reply Last reply Reply Quote
                    • O Offline
                      Obi_Yoann @Nicolas Bernaerts
                      last edited by

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

                      CharlesC Nicolas BernaertsN 2 Replies Last reply Reply Quote
                      • CharlesC Offline
                        Charles @Obi_Yoann
                        last edited by Charles

                        @Obi_Yoann pour envoyer les données vers EMONCMS avec tasmota, c'est super simple avec un script en berry, regarde l'exemple ici (a adapter):

                        https://github.com/hallard/WeMos-TIC#send-data-to-emoncms-with-berry-esp32-only

                        D'ailleurs si tu es sur ESP32 tu dois avoir les LOG via l'USB puisque la GPIO pour le TInfo_rx n'est pas la Serial RX de la console ?

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

                          @Obi_Yoann Tu as raison ... sur un ESP32S2 la sauvegarde des parametres de configuration ne fonctionne pas. Dès que l'on sauvegarde la config GPIO, le boitier devient instable et ne se reconnecte plus.

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

                            @Nicolas-Bernaerts Je viens de tester le firmware tasmota32s2.firmware.bin en mode erase. Il est totalement instable, on ne peut enregistrer aucun paramètre. Dès que l'on enregistre un paramètre, le module devient inaccessibl. Il faut sans doute attendre que le firmware 32S2 se stabilise.

                            Barbu DorB O 2 Replies Last reply Reply Quote
                            • Barbu DorB Offline
                              Barbu Dor @Nicolas Bernaerts
                              last edited by

                              @Nicolas-Bernaerts
                              Je comprend pas ta remarque.
                              Tasmota sur S2 est stable depuis 1 an.
                              Je viens de charger tasmota32s2 sur mon DevKit et je peux sauvegarder les GPIO sans soucis.

                              Nicolas BernaertsN 1 Reply Last reply Reply Quote
                              • O Offline
                                Obi_Yoann @Nicolas Bernaerts
                                last edited by 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...

                                O Nicolas BernaertsN 2 Replies Last reply Reply Quote
                                • O Offline
                                  Obi_Yoann @Obi_Yoann
                                  last edited by

                                  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.

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

                                    @Obi_Yoann

                                    Oui il faut adapter le script avec tes étiquettes ou supprimer le traitement pour avoir toutes les données comme tu as fait, c'est bien.

                                    Il faudrait un peu plus de debug tu peux changer les lignes

                                      cl.begin( api_url + param)
                                      var r =  cl.GET()
                                      print(r, load, param) 
                                    

                                    par

                                      var full = api_url + param
                                      print(full) 
                                      cl.begin( full)
                                      var r =  cl.GET()
                                      print(r, load, param) 
                                    

                                    tu ne fais pas de SSL ça devrait passer sur le S2 en terme de ressources.

                                    Si tu copies colle le lien complet affiché dans la console dans le browser et que ça fonctionne, alors oui il y a un hic.

                                    S2 qui par ailleurs sait faire en natif de l'USB serial, peut être il faut compiler avec une option pour ça mais il me semblait que c'était par défaut car j'ai fait ces tests sans aucun soucis, j'avais les traces sur l'USB (mode serial) @Barbu-Dor ?
                                    Il faut juste attendre 2/3 secondes au boot pour que l'USB natif monte (et que ton S2 soit connecté à un ordi pour que ça monte)

                                    O 1 Reply Last reply Reply Quote
                                    • O Offline
                                      Obi_Yoann @Charles
                                      last edited by Obi_Yoann

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

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

                                        @Barbu-Dor En fait j'avais un probleme de parametre pour le flash avec esptool.py. En utilisant -fm dio le firmware tasmota32s2 est totalement stable. Autant pour moi.

                                        O Barbu DorB 2 Replies Last reply Reply Quote
                                        • O Offline
                                          Obi_Yoann @Nicolas Bernaerts
                                          last edited by

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

                                          Barbu DorB Nicolas BernaertsN 2 Replies Last reply Reply Quote
                                          • Barbu DorB Offline
                                            Barbu Dor @Nicolas Bernaerts
                                            last edited by

                                            @Nicolas-Bernaerts maintenant Je flashe quasi systématiquement avec le Web flasher mais cela ne marche que pour les binaires officiels ou semi-officiels
                                            Donc généralement, je flashe un binaire officiel, je connecte au wifi et ensuite j'update avec un binaire perso

                                            Sinon, tu devrais avoir les lignes de commandes ici : https://tasmota.github.io/docs/ESP32/#flashing

                                            1 Reply Last reply Reply Quote
                                            • First post
                                              Last post

                                            0

                                            Online

                                            5.7k

                                            Users

                                            534

                                            Topics

                                            5.0k

                                            Posts

                                            Top Topics

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

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

                                            Popular Tags

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