Ré-écriture de Wifinfo pour traiter le mode standard du Linky
-
J'ai ajouté un test dans build_emoncms_json au cas ou on a jamais reçu de message teleinfo , dans ce cas j'avais un reboot par le watchdog.
if(! first_item) // go to next node me = me->next; //marc else if (me->free) { //1st item is free : empty list ! Debugln("Teleinfo list is empty !"); break; } //fin marc if( ! me->free ) {
C'est le code qui était déjà dans tinfoJSONTable.
Il faudra voir pour httpRequest si tu as encore un soucis et pour jeedomPost.
J'ai dimensionné le tableau à 400 et j'ai mis ta modif String(atol(me->value)).
Github est à jour.
Marc
-
Bonjour
J'ai trouvé 2 problèmes dans le code.
Il faut commenter la ligne 339 du fichier webclient.cpp
La fonction this->on("/tinfo.json", & { plante systématiquement chez moi. J'ai fait en sorte qu'elle sorte des le début et je n'ai visiblement plus de plantage intempestif.Je ne sais pas trop bien ou ça plante, mais je recois juste le message "setReinit tinfoJSONTable" et ensuite ça fait un hard reset.
Je n'ai pas encore trouvé d'où ca peut provenir. Si je trouve, je ferait à nouveau un pull request pour que ce soit incorporé à ton code sans que l'un ou l'autre ait à reprendre les modifs manuellement.
Pierre
-
as-tu remplacé sizeof(tabNames) par 38 ?
Marc -
J'ai repris ton code directement mais ca ne fonctionne pas mieux.
Par ailleurs, en continunant à chercher j'ai remarqué que mes reboots avait lieu au bout d'un nombre variable de minute + 10 secondes systématiquement.
Si je ne me trompe pas, le watchdog hardware est de 10s, il doit y avoir une boucle quelque part qui dure trop longtemps et qui fait rebooter le systeme. Je vais regarder ça.Pierre
-
J'ai trouvé ce qui faisait planter le programme. Il faut modifier la taille maximale des datas en mode standard. Certaines dépassent les 16 octets et peuvent monter à 98 octets.
Il n'y a plus de problème avec le code suivant:
struct _ValueList
{
ValueList *next; // next element (for compatibility)
char name[16]; // LABEL of value name
//char value[16]; // value
char value[98]; //Changed for standard type
uint8_t checksum; // checksum
uint8_t flags; // specific flags
uint8_t free; // checksum
uint8_t filler; // unused, for boundary
};Il faut aussi changer la ligne suivante
memset(me->value, 0, 16); en memset(me->value, 0, 98);Je pense que la vérification des TAG valide devrait etre fait dans la classe TInfo et pas dans la classe webClient. Cela permettrait d'avoir quelque chose de plus générique. Tu peux regarder ce que j'ai écrit dans mon fork de ton répo
Pierre
-
Bonsoir à tous, je n'ai toujours pas de Github mais ma version "remasterisée" pour Linky en mode Standard et Jeedom avec la dernière version du plugin Teleinfo (requette en mode POST en non plus GET) fonctionne. Il me reste à finaliser les interface EmonCMS (que je ne peux pas tester) et MQTT.
Les sources sont ici avec un bin compilé pret à flasher : https://drive.google.com/drive/folders/1SxTt7uEn-4zt3LfUq1NbdaFKlY1nju0r?usp=sharing@Charles libre à vous de récupérer ces sources et de les intégrer a votre travail, ce serait avec plaisir.
-
Nouvelle version dans disponible (au même endroit), correction d'un bug sur la réception des trames et amélioration de la gestion des tags de début et fin de paquets/trames
-
Encore une nouvelle version (25/05/2019 v2.0.1) qui corrige un bug sur la réception des données (pertes et fausses infos TIC quand le minuteur pour émettre les données à Jeedom interrompt la réception du port série). Cette version est stable mais ne gère pas encore le MQTT.
-
Je suis avec grand intérêt ce post.
Est il possible d'ajouter la prise en charge des implusions du compteur gaz (Gazpar) qui est situé juste à côté du compteur electrique ? -
Bonjour @Charles
Je ne sais pas si c'est toujours d'actualité, mais je serai intéressé par l'evolution de ta GUI. Cela à l'air top. Il y a moyen de tester en beta ? avoir accès à un repository ?
(je commence à me plonger dans le code de la Wininfo, c'est plutôt énorme
Merci!
Nicolas.
-
Bonjour à tous, de mon coté je voulais justement gérer la teleinfo avec du MQTT et faire une petite carte dans un boitier DIN. Je suis donc très intéressé par ce post.
Une question cette version gére le mode historique et standard ?
Je voulais avoir aussi des entrées de comptage sur ma carte pour faire une carte de gestion des consommations -
Bonjour
J'ai mis mon projet complet sur github qui utilise la libTeleinfo de Charles, ça peux peut-être servir pour d'autres applications.
le lien est: (https://github.com/marco402/piloteVMC.git)
Marc
-
-
@Patrice said in Ré-écriture de Wifinfo pour traiter le mode standard du Linky:
Je suis avec grand intérêt ce post.
Est il possible d'ajouter la prise en charge des implusions du compteur gaz (Gazpar) qui est situé juste à côté du compteur electrique ?je me posais la meme question ?
tu en penses quoi charles ?
-
Messieurs,
J'ai plutôt une bonne nouvelle, je viens de créer une PR pour ajouter la téléinfo à l'excellent Firmware Tasmota. Celui ci supporte un nombre impressionnant de devices, de fonctions et il est d'une stabilité exemplaire. Et bien entendu des compteurs d'impulsions sont déjà gérés.
Ma PR (basique pour le moment juste de l'affichage) est parfaitement fonctionnelle et elle est dispo ici
Nous n'auront plus qu'a maintenir la partie téléinfo ce qui soulagera tout le monde et nous beneficierons de toules les nouveautés de ce firmware.
-
@admin géniale
-
j'ai luté plusieurs heures mais je n'ai pas réussi a intégré Tasmota-teleinfo
a chaque fois je ne trouve pas le module type wifinfo dans le tasmota
je ne sais même si ta config est remonté dans mon tasmota
-
@Nicolas-Deraedt le PR a été mergé ce qui veut dire que la branche developement de Tasmota contient la téléinfo
il te faut donc charger la branche development de tasmota (directement depuis le github tasmota). Ensuite décommenter la ligne
#define USE_TELEINFO
du fichiermy_user_config.h
pour l'activer dans le firmware#define USE_TELEINFO // Add support for Teleinfo via serial RX interface // #define USE_TELEINFO_STANDARD // Use standard mode (9600 bps) else it's historical mode (1200 bps)
Tu compiles bien la version
tasmota-sensors
Ensuite une fois ton module opé, tu mets la config suivante (ou directement ce template
{"NAME":"WifInfo","GPIO":[7,255,255,208,6,5,255,255,255,255,255,255,255],"FLAG":15,"BASE":18}
) en fonction de ton câblage attention pour le moment je pense que ça ne fonctionne qu'avec la liaison série hardware (Teleinfo que tu dois connecter sut RX (GPIO3)) donc déconnecté la teleinfo quand tu flash l'ESP sinon conflit.Et voila ensuite ce que ça donne
-
merci beaucoup pour ton retour
j'y suis presque , j'ai un problème pour compiler en tasmota-sensors ( je ne pense pas avoir la bonne méthode ). Je décommente le sensors dans platformio.ini mais dans les informations après flashage je suis toujours en Program Version 8.3.1.6(tasmota)
Build Date & Time 2020-06-29T09:24:28 Core/SDK Version 2_7_1/2.2.2-dev(38a443e)j'utilise arduino avec la version github tasmota developpement
j'ai bien le TX 210 qui s'affiche
j'utilise un pitinfo que je déconnecte avant le flashagemerci pour ton aide
-
j'utilise platform.io aussi avec VStudio code, je change la ligne dans le fichier
platformio_override.ini