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.
    • 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
                  • Barbu DorB Offline
                    Barbu Dor @Obi_Yoann
                    last edited by

                    @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 CharlesC 2 Replies Last reply Reply Quote
                    • Nicolas BernaertsN Offline
                      Nicolas Bernaerts @Obi_Yoann
                      last edited by

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

                        @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 Reply Quote
                        • O Offline
                          Obi_Yoann @Barbu Dor
                          last edited by 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 1 Reply Last reply Reply Quote
                          • CharlesC Offline
                            Charles @Barbu Dor
                            last edited by

                            @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 Reply Quote
                            • CharlesC Offline
                              Charles @Obi_Yoann
                              last edited by 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 Barbu DorB 2 Replies Last reply Reply Quote
                              • CharlesC Offline
                                Charles @Charles
                                last edited by

                                @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 Reply Quote
                                • Barbu DorB Offline
                                  Barbu Dor @Charles
                                  last edited by

                                  @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 Reply Quote
                                  • CharlesC Offline
                                    Charles @Barbu Dor
                                    last edited by

                                    @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 Reply Quote
                                    • O Offline
                                      Obi_Yoann @Charles
                                      last edited by 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 1 Reply Last reply Reply Quote
                                      • CharlesC Offline
                                        Charles @Obi_Yoann
                                        last edited by

                                        @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 Reply Quote
                                        • Barbu DorB Offline
                                          Barbu Dor
                                          last edited by

                                          @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 Reply Quote
                                          • CharlesC Offline
                                            Charles @Barbu Dor
                                            last edited by Charles

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