Tasmota
-
@charles Ca plante direct en mode standard, en mode historique c'est différent, je pense qu'il arrive à capturer des trames et au moins à l'afficher une fois sur le menu principal, c'est par la suite qu'il plante...
Aucun problème pour faire une capture ! Mais comment faire pour raccorder la sortie hard de la téléinfo sur mon ordi ? (en sachant que je n'ai pas de port série dispo sur celui ci ??)
Ton soft de capture, on peut pas lui indiquer directement une adresse IP pour la capture ? Car comme je t'ai dis, ma précédente capture a été faite sous putty (mais je copie et je colle le log a l'écran donc source d'erreur..) en lui indiquant l'adresse IP du wemos , et je lui ai chargé un prog qui fait la laision série (ma source ci joint) SerialBridgePortal.zip
Je regarde ce soir ce que la commande status 0 donne..
-
@sebh tout ce qui affiche dans un terminal putty ou autre est soumis à la translation de caractère type CR CR/LF ou autre
il faut un programme (comme celui de la capture) qui lit en RAW et écrit en RAW
bien sur tu peux passer sur IP mais j'ai ni le prog d'envoi ni de reception, et bien sur faut pas que ca arrive dans une fenetre de terminal pour les raisons ci dessous.
Le mieux est un module téléinfo, USB, ou Serie comme le PiTinfo ou un truc fait à la main. Le port série est has been sur les ordi faut des adaptateurs Serie/USB ca coute rien,
https://fr.aliexpress.com/item/32969691125.html
le pb du WeMos ESP8266 c'est que t'as qu'un serial donc tu peux pas lire la téléinfo et l'afficher sur la serial USB en même temps. la seule option c'est l'envoyer sur TDX1 mais il te faudra un adaptateur USB/Serial pour ton ordi du coup.
C'est pour ca que j'ai passé en ESP32 c'est plus simple pour débugguer je me galèrais à chaque fois
-
@charles J'ai un convertisseur ft232 que j'avais utilisé pour flasher un module secteur SONOFF, ca marche pareil non ?? Suffit de raccorder le TX ou le RX du module sur le hard de décodage de la téléinfo ?? Ca doit fonctionner avec ton soft ?? Concernant ton applicatif ca tourne sous WIN10 ??
-
@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