Tasmota
-
@sebh yes tu as juste a relier la masse et le TX (sortie après opto) sur le RX de FT232 normalement. Ton adaptateur est 3V3 ou 5V?
Si 5V est que le hard de ta sortie téléinfo est 3V3 ca devrait marcher dans ce sens. Idéalement si il était 3V3 ce serait top car directement compatible. -
@charles Voila c'est fait, capture effectué au bon format avec ton applicatif. Il y a 100 trames de capturé capture_linky.zip Tu me diras si c'est ok pour toi ??
-
@charles Voila c'est fait, capture effectué au bon format avec ton applicatif. Il y a 100 trames de capturé capture_linky.zip Tu me diras si c'est ok pour toi ??
Le fichier me semble parfait, merci
-
Désolé pour le français approximatif, ce n' est pas ma langue maternelle.
J' ai installé un weimos D1(Tasmota)+teleinfo sur mon linky (3 phases + panneau solaire en autoconsommation). Je récupère les infos via MQTT + node red + Influxdb 2 + Grafana.
Le problème c' est que Linky donne beaucoup trop de données pour le message MQTT. Le message MQTT est mal formé est ce termine par ... au lieu de }. En plus de cela, certaines informations ne sont pas transmises. Elles sont tronquées et remplacées par les ... .
Avec Node red j ai réussi a faire un code qui marchait mais voila depuis 3 jours la valeur INSTI a changé de place et n'apparaît plus dans le message MQTT.
Existe il un moyen d'agrandir le nombre de caractères du message MQTT?exemple de message MQTT :
{"Time":"2021-04-23T11:55:03","ENERGY":{"TotalStartTime":"2021-03-02T17:05:35","Total":877.823,"Yesterday":9.525,"Today":5.909,"Period":0,"Power":0,"ApparentPower":940,"ReactivePower":940,"Factor":0.00,"Voltage":235,"Current":4.000,"Load":22,"ADSC":"041976307336","VTIC":2,"NGTF":" BASE ","LTARF":" BASE ","EAST":5456201,"EASF01":5456201,"EASF02":0,"EASF03":0,"EASF04":0,"EASF05":0,"EASF06":0,"EASF07":0,"EASF08":0,"EASF09":0,"EASF10":0,"EASD01":5456201,"EASD02":0,"EASD03":0,"EASD04":0,"EAIT":1046651,"ERQ1":227,"ERQ2":27,"ERQ3":394161,"ERQ4":2454708,"IRMS1":4,"IRMS2":3,"IRMS3":5,"URMS1":235,"URMS2":242,"URMS3":238,"PREF":18,"PCOUP":18,"SINSTS":0,"SINSTS1":974,"SINSTS2":0,"SINSTS3":0,"SMAXSN":3713,"SMAXSN1":4847,"SMAXSN2":656,"SMAXSN3":1714,"SMAXSN-1":3612,"SMAXSN1-1":2299,"SMAXSN2-1":838,"SMAXSN3-1":1240,"SMAXIN":3256,"SMAXIN-1":3574,"CCASN":0,"CCASN-1":0,"CCAIN-1":2446,"UMOY1":233,"UMOY2":239,"UMOY3":235,"STGE":"003A0301","MSG1":"PAS DE MESSAGE ","PRM":2147483647,"RELAIS":0,"NTARF":1,"NJOURF"...
-
@alager2 tu peux utiliser la branche modifiée ici, il y a une blacklist des étiquettes trop longues ça devrait aller mieux
https://github.com/hallard/Tasmota/tree/teleinfo
Pour info la liste actuelle
// Blacklisted label from telemetry // Each label shoud be enclosed by pipe const char kLabelBlacklist[] PROGMEM = "|PJOURF+1" "|MSG1" "|" ;
-
Merci,
question bête, je fais comment pour compiler le firmware? La seule fois ou j' ai fais ca, c'était avec Gitpod en suivant les instructions de Canaletto (https://www.canaletto.fr/post/home-assistant-esp-and-teleinfo). Sur les custom parameters je met quoi?#ifndef USE_TELEINFO #define USE_TELEINFO #endif
-
@alager2 perso j'utilise visual studio code couplé à platform.io.
oui le define à mettre c'est bien USE_TELEINFO
voici mon
platformio_override.ini
pour info avec mes différentes cartes dans ton cas surementtasmota-tic
pour un ESP8266[platformio] [common] platform_packages = ${core.platform_packages} build_unflags = ${core.build_unflags} build_flags = ${core.build_flags} extra_scripts = ${scripts_defaults.extra_scripts} lib_extra_dirs = ${library.lib_extra_dirs} board_build.f_cpu = 160000000L board_build.ldscript = eagle.flash.4m2m.ld ; *** Upload Serial reset method for Wemos and NodeMCU upload_port = /dev/tty.usbserial-14230 upload_speed = 460800 [core] [tasmota_stage] ; *** Esp8266 core for Arduino version Tasmota stage. Backport for PWM selection platform_packages = tasmota/framework-arduinoespressif8266 @ ~2.7.4 build_unflags = ${esp_defaults.build_unflags} build_flags = ${esp82xx_defaults.build_flags} ; *** Use ONE of the two PWM variants. Tasmota default is Locked PWM ;-DWAVEFORM_LOCKED_PHASE -DWAVEFORM_LOCKED_PWM [core_stage] ; *** Esp8266 core for Arduino version stage platform_packages = framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git ; *** Use Xtensa build chain 10.2. GNU13 from https://github.com/earlephilhower/esp-quick-toolchain mcspr/toolchain-xtensa @ 5.100200.201223 build_unflags = ${esp_defaults.build_unflags} -Wswitch-unreachable build_flags = ${esp82xx_defaults.build_flags} ; *** Use ONE of the two PWM variants. Tasmota default is Locked PWM ;-DWAVEFORM_LOCKED_PHASE -DWAVEFORM_LOCKED_PWM -Wno-switch-unreachable [common32] extends = env:tasmota32 platform_packages = ${core32.platform_packages} build_unflags = ${core32.build_unflags} build_flags = ${core32.build_flags} lib_extra_dirs = ${library.lib_extra_dirs} lib/libesp32 upload_port = /dev/tty.usbserial-denky_A7A8 monitor_speed = 115200 board = pico32 [core32] [core32_stage] platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} -DESP32_STAGE=true [library] shared_libdeps_dir = lib lib_extra_dirs = lib/lib_basic lib/lib_i2c lib/lib_display lib/lib_ssl lib/lib_audio lib/lib_rf lib/lib_div [env:tasmota-tic] extends = env:tasmota platform_packages = ${common.platform_packages} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DUSE_TELEINFO [env:tasmota-tic-display] extends = env:tasmota platform_packages = ${common.platform_packages} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DUSE_TELEINFO -DUSE_DISPLAY -DSHOW_SPLASH [env:tasmota32-tic] extends = env:tasmota32 platform_packages = ${common32.platform_packages} build_unflags = ${common32.build_unflags} build_flags = ${common32.build_flags} -DUSE_TELEINFO [env:tasmota32-tic-display] extends = env:tasmota32 platform_packages = ${common32.platform_packages} build_unflags = ${common32.build_unflags} build_flags = ${common32.build_flags} -DUSE_TELEINFO -DUSE_DISPLAY -DSHOW_SPLASH [env:tasmota32-remora] extends = env:tasmota32 platform_packages = ${common32.platform_packages} build_unflags = ${common32.build_unflags} build_flags = ${common32.build_flags} -DUSE_TELEINFO -DUSE_DISPLAY -DSHOW_SPLASH -DUSE_MCP230xx -DUSE_MCP230xx_OUTPUT -DUSE_MCP230xx_DISPLAYOUTPUT [env:denkyd4] extends = env:tasmota32 platform_packages = ${common32.platform_packages} build_unflags = ${common32.build_unflags} build_flags = ${common32.build_flags} -DUSE_TELEINFO -DARDUINO_DENKY_PICOV3 ; -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw ; *** EXPERIMENTAL Tasmota version for ESP32 IDF4.4. [env:denkyd4-idf4] extends = env:tasmota32_base platform = https://github.com/Jason2866/platform-espressif32.git#feature/arduino-idf-v4.4 platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} -DUSE_TELEINFO -DARDUINO_DENKY_PICOV3 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw ;-DESP32_STAGE=true
-
@charles Bonjour Charles, je voulais savoir si tu avais pu tester mon fichier de capture ?? Quelqu'un ici a t il pu tester ta version sur un Wemos D1 Mini car chez moi j'avais des soucis de plantage peut être à ma compilation qui est faite encore sous Arduino IDE ? Merci d'avance pour le retour.
-
@charles merci,
cela dépasse mes compétences. Je vais devoir trouver un tutoriel pour comprendre comment platform.io marche.
-
@alager2 Le lien n'est pas bon, c'est plutôt https://platformio.org/ ^^
-
@charles merci,
cela dépasse mes compétences. Je vais devoir trouver un tutoriel pour comprendre comment platform.io marche.
tu peux déjà regarder comment compiler tasmota sur le tuto dédié ça te permet de ne pas forcément entrer dans les entrailles de platform.io
https://tasmota.github.io/docs/Compile-your-build/ -
@charles Bonjour Charles, je voulais savoir si tu avais pu tester mon fichier de capture ?? Quelqu'un ici a t il pu tester ta version sur un Wemos D1 Mini car chez moi j'avais des soucis de plantage peut être à ma compilation qui est faite encore sous Arduino IDE ? Merci d'avance pour le retour.
@Seb-H C'est bon, c'est corrigé tout devrait fonctionner maintenant, merci @Barbu-Dor pour le coup de main.
La PR n'est pas encore mergée mais tu peux l'essayer et me dire si ok pour toi.
Attention le format d'envoi MQTT a changé, tout est dans un objet JSON nommé TIC
-
@Seb-H C'est bon, c'est corrigé tout devrait fonctionner maintenant, merci @Barbu-Dor pour le coup de main.
La PR n'est pas encore mergée mais tu peux l'essayer et me dire si ok pour toi.
Attention le format d'envoi MQTT a changé, tout est dans un objet JSON nommé TIC
Super, je teste ça dans la soirée. Pour ma part, je m'en fiche des messages MQTT, c'est les messages via domoticz qui m’intéresse.
-
@Seb-H C'est bon, c'est corrigé tout devrait fonctionner maintenant, merci @Barbu-Dor pour le coup de main.
La PR n'est pas encore mergée mais tu peux l'essayer et me dire si ok pour toi.
Attention le format d'envoi MQTT a changé, tout est dans un objet JSON nommé TIC
Super, je teste ça dans la soirée. Pour ma part, je m'en fiche des messages MQTT, c'est les messages via domoticz qui m’intéresse.
Ca a été mergé sur la branche officiel developpement de tasmota
-
Bravo ca fonctionne sur wemos !! En revanche, il reste toujours un petit soucis concernant la gestion du compteur total . J'ai activé le setoption72 , et automatiquement il met à jour le compteur total de tasmota mais prend en référence l'EAST (qui est le compteur total regroupé de tout les compteur du linky). Il faudrait prendre dans le cas d'un contrat de BASE l'EASF01.
Maintenant peut être que cela est différent chez les autres utilisateurs... Il faudrait peut être laisser le choix à chaque utilisateur de l'EASF0x à prendre comme synchro pour le compteur total ?? Je sais pas ce qu'il y a de plus simple...
En revanche, le tarif HP/HC ne me concerne plus mais comment se débrouille tasmota pour envoyer la double tarification sur domoticz (vu qu'il le gère nativement..) ??
-
bonjour
je viens juste de mettre en œuvre un tasmota teleinfo wemos sur un ancien compteur edf en mode historique pour remonter les infos dans jeedom.
Dans jeedom j'ai créé un scénario qui lit toutes les minutes le module tasmota et qui met à jour les valeurs qui lui sont associées dans jeedom (indices, poqer et etat de la connection avec tasmota).
L'interrogation du module wemos se fait via file_get_contents en php.
Au bout d'un certain temps (une heure environ) le file_get_contents retourne une chaine vide.
Et si je fais la meme requete dans un navigateur la page retournée par tasmota est bonne !{"StatusSNS":{"Time":"2021-05-08T07:52:30","ENERGY":{"TotalStartTime":"2021-05-07T13:56:20","Total":3289.434,"Yesterday":23941.357,"Today":22297.748,"Power":[1140,0,0],"Current":[2.000,2.000,1.000],"Load":6,"ADCO":"050426021895","OPTARIF":"HC..","ISOUSC":30,"HCHC":292497726,"HCHP":22297575,"PTEC":"HP..","IINST1":2,"IINST2":2,"IINST3":1,"IMAX1":42,"IMAX2":31,"IMAX3":33,"PMAX":14720,"PAPP":1140,"HHPHC":"A","MOTDETAT":0,"PPOT":0}}}
Enfin si je reboote le tasmota tout rentre dans l'ordre donc j'aurais tendance à mettre en cause ce dernier mais je n'arrive pas a cerner le problème.
J'ai essayé en remplacant file_get_contents par curl et j'ai le meme problème.
En résumé ca marche toujours avec le navigateur, ca marche avec le file_get_contents un moment puis ca ne marche plus et si je reboote le wemos tout rentre dans l'ordre.
Une idée ?
merci d'avance
Ci-dessous le code complet pour info
// lecture des donnees sur tasmota teleinfo solaire
// ip du wemos http://192.168.68.123/
$api = "http://192.168.68.123/cm?cmnd=status 10";ini_set('default_socket_timeout', 10); // timeout pour commande get
$json = file_get_contents($api, true);
$scenario->setlog( 'json > ' . $json);$enligne=1;
if($json === false) {
$scenario->setlog("probleme ");
$enligne=0;} else {
// Step 2: Decodage du JSON et recuperation des infos souhaitees
$jsonData = json_decode($json,true);// recup power et indices
$power=$jsonData["StatusSNS"]["ENERGY"]["Power"]["0"];
$indhc=$jsonData["StatusSNS"]["ENERGY"]["HCHC"];
$indhp=$jsonData["StatusSNS"]["ENERGY"]["HCHP"];// log des donnees
//$scenario->setlog($power . ' / ' . $indhc . ' / ' . $indhp);// mise a jour du virtuel correspondant
$poweractuel = cmd::byString('#[electricite][teleinfo solaire][power]#')->execCmd();
if ($poweractuel != $power) {
cmd::byString('#[electricite][teleinfo solaire][power]#')->event($power);
$scenario->setlog('power ' . $poweractuel . ' > ' . $power);
}$indhcractuel = cmd::byString('#[electricite][teleinfo solaire][ind hc]#')->execCmd();
if ($indhcractuel != $indhc) {
cmd::byString('#[electricite][teleinfo solaire][ind hc]#')->event($indhc);
$scenario->setlog('ind hc ' . $indhcractuel . ' > ' . $indhc);
}$indhpactuel = cmd::byString('#[electricite][teleinfo solaire][ind hp]#')->execCmd();
if ($indhpactuel != $indhp) {
cmd::byString('#[electricite][teleinfo solaire][ind hp]#')->event($indhp);
$scenario->setlog('ind hp ' . $indhpactuel . ' > ' . $indhp);
}
}// recup etat connection actuelle
$enligneactuel = cmd::byString('#[electricite][teleinfo solaire][enligne]#')->execCmd();
if ($enligneactuel != $enligne) {
$scenario->setlog('en ligne ' . $enligneactuel . ' > ' . $enligne);
log::add("alertes","ALERT", 'Etat teleinfo solaire = ' . $enligne);
cmd::byString('#[electricite][teleinfo solaire][enligne]#')->event($enligne);
} -
Bonjour @lebphi
Tasmota est avant tout fait pour fonctionner en MQTT. L'API http peut permettre de passer des commandes de temps en temps mais poller continuellement l'état des senseurs par http soumet Tasmota a du stress.
Par exemple, l'appli TasmoAdmin qui permet de surveiller un ensemble de Tasmota fonctionne par http et elle est connue pour mettre à mal Tasmota. Elle est fortement déconseillée.
Donc il est fort possible qu'une fuite mémoire finesse par casser quelque chose.Je vais jeter un coup d'oeil pour voir si j'arrive a reproduire mais pas sur que ca soit facile a régler.
Si tu ne veux absolument pas passer à MQTT, qui est aujourd'hui "LE" standard en domotique, tu peux essayer de fonctionner à l'inverse avec un règle pour publier vers jeedom avec un WebSend. Certaines personnes font cela avec emoncms.
Par exemple: https://github.com/arendst/Tasmota/discussions/11101#discussioncomment-651394 -
@barbu-dor said in Tasmota:
Tasmota est avant tout fait pour fonctionner en MQTT.
Et aussi avec entrée/sortie MQTT vers Domoticz . Je suis passé la dessus spécialement pour ça. Ca fonctionne bien sauf qu'il reste toujours le petit soucis de synchro du compteur total tasmota à faire avec le bon index de la téléinfo pour la version linky standard . Et je pense qu'il doit aussi avoir l'envoie HP/HC sur domoticz qui ne doit pas fonctionner correctement..
-
Merci de vos réponses.
En fait j'avais commencé par MQTT mais j'ai galéré avec les 2 plugins jeedom MQTT qui m'ont fait n'importe quoi notamment en dupliquant x fois des commandes MQTT venant de tasmota. Ca devenait ingérable du coup j'ai essayé autrement.
Vu ce que vous me dites je vais ressayer MQTT mais sans les plugins, en passant par un programme python ou php independant de jeedom. -
@lebphi Je viens de reactiver MQTT. Tout fonctionne correctement par contre la aussi il y a au bout d'un moment un plantage de tasmoto qui decroche de maqtt et n'arrive plus a se reconnecter. Si je fais un restart tout refonctionne.
D'ou peut venir le probleme ? Ca servirait a quelque chose de refaire une install complete de tasmota ?