erreur trame TIC ADCO ?
-
Bonjour à tous,
Je débute et je teste la librairie LibTeleinfo avec un esp32 mais avec Teleinfo_DenkyD4.ino
(V1.01 2021-04-18 - Refactored for Denky D4 standalone test only)Tout semble fonctionner mais il y a une erreur sur la variable ADCO.
Affiche 2147483647 au lieu de 031762023755.
La donnée sur la trame traitée n'est pas celle reçue et affichée ! (voir ci- dessous)Y a t'il moyen de corriger cela ?
Nota : sur la version esp32 (ESP32.ino) la valeur ADCO était correcte.Merci à vous.
... HHPHC A ,
MOTDETAT 000000 B
<ETX><STX>
ADCO 031762023755 @
OPTARIF BASE 0
ISOUSC 30 9
BASE 015572905 -
PTEC TH.. $
IINST 002 Y
IMAX 090 H
PAPP 00490 .
HHPHC A ,
MOTDETAT 000000 B
{"ADCO":2147483647, "OPTARIF":"BASE", "ISOUSC":30, "BASE":15572905, "PTEC":"TH..", "IINST":2, "IMAX":90, "PAPP":490, "HHPHC":"A", "MOTDETAT":0}
<ETX><STX>
ADCO 031762023755 @
OPTARIF BASE 0
ISOUSC 30 9 ... -
Bonjour,
Question subsidiaire :
J'ai actuellement un contrat basique (pas de HP-HC) et une TIC Linky "historique".
Si j'ai bien compris, en passant en TIC "standard" je n'aurai aucune information supplémentaire ?Correct ou pas ?
Merci. -
@Géryko said in erreur trame TIC ADCO ?:
Sur mon 1er message :Nota : sur la version esp32 (ESP32.ino) la valeur ADCO était correcte.Je ne suis plus sûr de mon coup ?
Sur la version "basique" il y avait le même problème mais je ne l'avais pas remarqué. -
Bonjour,
Remarques :
-
Un indice : 2147483647 (dec) = 7fffffff (hex) "Comme c'est bizarre !"
Je ne suis pas assez connaisseur pour trouver la cause du problème. -
Sans rapport avec le problème principal.
Lorsque je créer un faux checksum sur une des étiquettes, l'affichage de cette étiquette ne se fait pas OK, mais je n'ai aucun signalement !
Comment faire pour afficher les problèmes sur le moniteur ?
genre ligne 901 du .cpp : TI_Debugf(PSTR("LibTeleinfo::checkLine Err checksum 0x%02X != 0x%02X"), calc_checksum, checksum);
Merci à vous.
-
-
@Géryko ADCO doit être traité comme un long long pour être géré en valeur numérique. Sinon, il faut le traiter en string.
-
Bonjour Nicolas Bernaerts,
et merci pour ta réponse.Mais comme je l'ai écrit, c'est un problème de la bibliothèque LibTeleinfo que je ne sais pas traiter.
Pour l'instant je n'ai rien programmé. L'anomalie est présente avec les exemples fournis.
je ne suis pas assez "performant". en programmation.Je vais quand même y jeter un oeil sur les déclarations mais ???
En clair, que faudrait-il modifier ?PS : à priori, toutes les données sont des "char".
-
Bonsoir à tous,
Le viens de faire des tests complémentaires.
Si ADCO est < à 2147483647 c'est OK ( 7fffffff (hex) 2^31 )
Si ADCO est > à 2147483647 c'est mauvais.Mais je ne comprends pas comment cette valeur est déclarée ?
Il n'y a que du char dans la librairie LibTeleinfo.h et LibTeleinfo.cpp !Quelqu'un peut-il m'aider à résoudre ce petit problème ?
Merci -
Bonsoir à tous,
J'ai trouvé et résolu le problème.
Dans le fichier .ino il y a : Serial.print(atol(me->value));
Il faut : Serial.print(me->value);
Car "atol" convertit en long alors que (me->value) = 12 chiffres.
Merci -
Bonjour,
Autre possibilité, mettre :
(strlen(me->value) > 9) ? SERIAL_DEBUG.print(me->value) : SERIAL_DEBUG.print(atoi(me->value));Mais transformer String en nombre ne sert quasiment à rien pour l'afficher ?
(hormis effacer le zéros non significatifs et revérifier qu'il ne s'agit bien que de chiffres)
Une double erreur peut provoquer un checksum OK. -
@Géryko Oui dans la librairie tous les champs sont traité en mode natif, c'est à dire des char, après sur l'affichage ou autre il faut faire du spécifique cf
https://github.com/hallard/LibTeleinfo/issues/22