Tasmota
-
@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
-
@Charles
Hello!
J'ai à nouveau mon tasmota en rad depuis 20h apparemment, plus de remontée dans emoncms.
En console j'ai ça :
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é. -
@Obi_Yoann peux tu essayer de flasher ton denky avec le soft d'exemple de base du denky D4 téléinfo et voir ce qui arrive dans la console Série ?
@Barbu-Dor c'est toi de mémoire qui avait ajouté le mode standard dans tamota non ?
Tu sais si il y a eu des modifs au niveau de la sérial, visiblement 2 users ont des gros soucis de checksum depuis le passage en mode standard avec des buffer overflow, je cherche une piste des fois qu'il y aurai eu des modif coté driver serial.
Merci à toi -
@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! -
@Obi_Yoann j'utilise les versions non officielle flashée avec le WebFlasher (ça se débrouille tout seul, pas besoin de choisir le chip)
Tu as tous les binaires non officiels dont celui avec la téléinfo
https://github.com/Jason2866/Tasmota-specials lis le readme pour le flash -
@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...
-
@Obi_Yoann hello,
En fait j'ai fait évoluer pas mal de choses depuis tasmota 12, mais je n'ai pas tout republié sur GitHub. C'est dans doute pour cela que tes compilations sont en erreur.
Mais je te confirme que tout compile sans problème chez moi sur la base de Tasmota 12.1.1.
Je vais essayer de déposer tous les dernières versions des fichiers demain matin. -
@Obi_Yoann hello alors ce soir j'ai regardé la console de tasmota (ESP32 + WeMos TIC) et effectivement je suis aussi gavé d'erreurs de checksum
mais je subodore que ca va trop vite et qu'il n'a pas le temps de tout traiter. du coups j'ai désactivé le script berry qui intercepte MQTT pour poster sur emoncms et la bingo plus d'erreur.
On va investiguer ce coté là car c'est clairement ça
Edit : j'ai réactivé le script pour savoir ou ça déconnait, et bien j'ai trouvé, en fait c'est pas l'interception MQTT elle elle fonctionne parfaitement mais les erreurs arrivent au moment ou le script fait un
cl.get()
pour poster (dans mon cas sur emoncms)Donc ce que j'ai fait, j'ai activé le skip pour avoir l'émission d'une trame complète toutes les 20 secondes environ (en mode standard)
energyconfig skip 15
au moment ou la trame est reçue il fait un post sur emoncms et la série n'arrive plus à suivre, il s'en suit qq erreur de checksum mais c'est pas très grave il se rattrape après.Ensuite j'ai fait la même chose en postant sur emoncms mais sans SSL (le truc gourmand) et du coups quand je fais ça, plus d'erreur (moins secure)
-