Tasmota
-
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) -
@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!
-
@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.
-
@Nicolas-Bernaerts Pour ma part je flash systématiquement avec ton tasmota-flash (vachement pratique!) :
./tasmota-flash --esp32-s2 --erase --after no_reset --flash ../../teleinfo32s2.factory.bin
Il faut juste reset manuellement, en appuyant ou non sur le bouton du mode download, et ça se passe bien.
En mode download au départ avant de lancer la commande, il commence par faire un erase, puis demande à rebooter, ce qu'il faut faire rapidement toujours en mode download, puis il flash, et indique enfin que le redémarrage manuel en mode normal doit être fait.@Charles pour le mode console usb, honnêtement je ne sais pas trop, sur le S2 je suis sûr qu'en mode normal il n'est pas du tout vu par l'ordinateur, j'ai refais le test à l'instant, en mode download oui on a un device série et ESP32-S2 qui apparait, en mode normal absolument rien n'est détecté sur plusieurs machine... Il doit manquer un truc, mais avec le D1 Mini ESP32 en effet j'ai un device tout le temps. Pas avec le Wemos S2 Mini que j'ai, peut être une particularité de ce modèle aussi?
De ce que j'avais vu ici : https://www.reddit.com/r/esp32/comments/s3efjv/wemos_s2_mini/ j'avais compris qu'il n'y avait pas d'USB-TTL sur ce modèle en tout cas... -
@Nicolas-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 persoSinon, tu devrais avoir les lignes de commandes ici : https://tasmota.github.io/docs/ESP32/#flashing
-
@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 -
@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.
-
@Obi_Yoann Je viens de mettre à jour tasmota-flash sur GitHub. Il intègre le bon paramètre -fm dio pour les ESP32.
-
@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! ^^
-
@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
-
@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) -
@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 performanteAvec ça aucun pb de comm/USB et Berry a de la ressource
-
@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 -
@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 -
@Charles
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 :
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)
-
@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
-
@Obi_Yoann QWIIC est un connecteur I2C/IIC standardisé par Sparkfun mais rien n'oblige à utiliser des modules Sparkfun avec
-
@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-qtTous les modules sensors adafruit et sparkfun ont tendance à utiliser ce format maintenant et en plus ils sont chainables de par leur design
-
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 :
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? -
@Obi_Yoann j'attends qu'ils me passent mon linky en mode standard et je fais des tests chez moi, quand ils sont venus installer le linky impossible qu'ils veuillent me le mettre en mode standard