Log in Register

Login to your account

Username
Password *
Remember Me

Create an account

Fields marked with an asterisk (*) are required.
Name
Username
Password *
Verify password *
Email *
Verify email *
Captcha *
Welcome, Guest
Username: Password: Remember me

TOPIC: teleinfo arduino

teleinfo arduino 30 Apr 2013 04:42 #21

hormis le hbeat au démarrage de l'arduino
ça valide au moins le mécanisme de génération de message xpl et la com Ethernet
En revanche si je commente la partie getTeleinfo, je ne peux pas téléverser
Tu as probablement trop commenté. Notamment la ligne "#define MAX_XPL_MESSAGE_SIZE"...

Je pense qu'il faut vérifier si la trame xPL teleinfo sort de ta carte: utilises Wireshark pour ça. Tu dois au moins voir passer la trame de hbeat au démarrage. Ca validera que le soucis se situe bien coté arduino.

Quel type d'arduino utilises-tu ? ce code est assez gourmand en RAM, donc peut-être pas compatible en l'état avec ton micro-controleur. Fais un Serial.print dans le loop pour verifier qu'il est bien envoyé en permanence et que l'uC n'a pas bloqué...

Romain
  • gromain
  • Avatar 2013 01 07
  • OFFLINE
  • Administrateur
  • Administrateur
  • Posts: 153
  • Thank you received: 10
  • Karma: 3
The administrator has disabled public write access.

teleinfo arduino 30 Apr 2013 17:05 #22

J'ai testé comme tu le suggères sous Wireshark, et je vois bien le hbeat passer sur le réseau au démarrage de l'arduino, puis il passe de façon irrégulière jusqu’à s’arrêter. Voilà d'ailleurs un export du log de cette ligne:
E@1@xpl-stat
{
hop=1
source=arduino-teleinfo.garage
target=*
}
hbeat.basic
{
interval=1
port=3865
remote-ip=192.168.8.16
}
Une chose que je saisi mal. La trame téléinfo se trouve dans le hbeat ou bien on doit voir passer un autre log pour l'envoi des infos téléinfo une fois le hbeat envoyé?
J'ai utilisé un arduino uno, mais je viens de faire des tests avec un mega 2560 et le log est identique avec Wireshark.
Par contre, avec le moniteur série du soft arduino je ne vois passer que 2 hbeat-message sans la remontée téléinfo (j'ai pris soin de modifier les entrées SoftSerial sur 10-11).

Je ne comprends comment faire "un Serial.print dans le loop". Il faut déclarer dans le code cette commande ? Désolé pour ma réponse mais je débute en prog...
En tout cas, merci pour votre intérêt à ce sujet car je gratte dans mon coin depuis un bon moment en glanant des infos trouvées sur le net sans résultat...
  • Christophe
  • Nophoto
  • OFFLINE
  • Fresh Boarder
  • Rank0
  • Posts: 6
  • Karma: 0
The administrator has disabled public write access.

teleinfo arduino 30 Apr 2013 19:40 #23

est-ce que tu lis "Send Teleinfo stat" dans le serial monitor de l'IDE toutes les minutes ?

Tu peux ajouter au niveau de la boucle loop()
Serial.print("x");
delay(100);

Tu devrais donc avoir "x" dans le serial monitor envoyé en permanence... sauf si le code bloque. Il sera alors temps de rajouter d'autre mouchard de ce type à des endroits stratégiques comme avant et après "getTeleinfo();" et "sendTeleinfoBasic();"

Romain
  • gromain
  • Avatar 2013 01 07
  • OFFLINE
  • Administrateur
  • Administrateur
  • Posts: 153
  • Thank you received: 10
  • Karma: 3
The administrator has disabled public write access.

teleinfo arduino 01 May 2013 13:33 #24

est-ce que tu lis "Send Teleinfo stat" dans le serial monitor de l'IDE toutes les minutes ?
Non il n'y a jamais cette ligne, il n'y a que le log donné dans mon premier message + hbeat au démarrage du log.

Suivant tes conseils, j'ai donc mis les lignes à diverses endroit dans la boucle loop()
Serial.print("x");
delay(100);
Voila mes résultat:
Début de la loop
Send hbeat message
xxxxxxxSend hbeat message

ADCO 020322552822 8
OPTARIF BASE 0
ISOUSC 30 9
BASE 040845015 &
PTEC TH.. $
IINST 004 [
IMAX 024 E
PAPP 01040 &
MOTDETAT 000000 B

ADCO 020322552822 8
Sum = 56
Cheksum = 56
ADCO=020322552822
valeur=020322552822
OPTARIF BASE 0
Sum = 48
Cheksum = 48
OPTARIF=BASE
valeur=BASE
ISOUSC 30 9
Sum = 57
Cheksum = 57
ISOUSC=30
valeur=30
BASE 040845015 &
Sum = 38
Cheksum = 38
PTEC TH.. $
Sum = 36
Cheksum = 36
PTEC=TH..
valeur=TH..
IINST 004 [
Sum = 91
Cheksum = 91
IINST=4
valeur=004
IMAX 024 E
Sum = 69
Cheksum = 69
IMAX=24
valeur=024
PAPP 01040 &
Sum = 38
Cheksum = 38
PAPP=1040
valeur=01040
MOTDETAT 000000 B
Sum = 66
Cheksum = 66
MOTDETAT=000000
valeur=000000
Nb lignes valides :8
et la lecture de la trame se continue indéfiniement.

Puis avant "getTeleinfo();" 2 fois "Send hbeat message" puis 1 x

Après "getTeleinfo();" les x n'apparaissent plus

Avant "sendTeleinfoBasic();" idem

Après "sendTeleinfoBasic();" idem

Il semble bien qu'il y ai un blocage par la.
Une autre chose que je ne m'explique pas. Tu m'as dit que ce code est assez gourmand. Une version Uno est elle suffisante? Pourquoi je n'arrive pas à logger la trame teleinfo avec un Mega alors que le code est identique hormis la déclaration des pins pour le softwareSerial.
  • Christophe
  • Nophoto
  • OFFLINE
  • Fresh Boarder
  • Rank0
  • Posts: 6
  • Karma: 0
The administrator has disabled public write access.

teleinfo arduino 01 May 2013 16:34 #25

J'ai essayé de compiler le code teleinfo de Cquad pour le charger sur l'arduino que j'ai récupéré, je ne dois pas avoir les bonnes lib ou la bonne version de l'IDE (1.0.3). Du coup je peux pas trop aider.

Quelle version de l'IDE utilises-tu ? avec des libs spécifiques ou celles d'origine ?

Quand j'aurais réussi la compilation je pense que je serai plus efficace dans le debug.

Théoriquement avec un arduino Mega tu as de la marge, donc ça devrait fonctionner. Il y a peut-être autre chose.

Romain

PS. la teleinfo qui tourne sur notre SMB est différente de la version de CQuad, avec davantage de type d'abonnement supportés, mais incompatible -pour le moment- avec le shield Wiznet.
  • gromain
  • Avatar 2013 01 07
  • OFFLINE
  • Administrateur
  • Administrateur
  • Posts: 153
  • Thank you received: 10
  • Karma: 3
The administrator has disabled public write access.

teleinfo arduino 01 May 2013 16:39 #26

Plop

Romain jais rebranché arduino uno sur compteur tu peut teste le code se charge bien mes toujours bloquer au premier message TW en route tu c'est comment te connecté ^^
  • manu
  • Avatar540
  • OFFLINE
  • Fresh Boarder
  • Rank0
  • Posts: 7
  • Karma: 0
The administrator has disabled public write access.

teleinfo arduino 01 May 2013 17:18 #27

J'utilise l'IDE 1.0.4, mais la 1.0.3 donne le même résultat, Pour les libs, oui j'utilise celle d'origine.
Par rapport à votre projet xPLduino, y a t il des tarifs et des soluces d'approvisionnement de vos cartes?
  • Christophe
  • Nophoto
  • OFFLINE
  • Fresh Boarder
  • Rank0
  • Posts: 6
  • Karma: 0
The administrator has disabled public write access.

teleinfo arduino 01 May 2013 18:11 #28

ok merci manu.

Entre temps j'ai récupéré la 1.0.4 et ça compile. J'ai certainement dû customiser les lib de ma version 1.0.3 Laughing

@Christophe:

d'après ce que tu as posté précédemment, le serial monitor te remonterait ça:
Nb lignes valides :8
Est-ce systématique ?
car dans le code "ar_teleinfo2.ino" on trouve ça à la ligne 254:
Serial.print("Nb lignes valides :"); Serial.println(trameComplete);
    if (trameComplete < 11) trameComplete=0; // on a pas les 11 valeurs, il faut lire la trame suivante
ce qui veut dire que l'arduino ne récupére pas la trame complète donc reste enfermé dans la boucle
while (!trameComplete){
...
}
C'est moche hein ?

Alors pourquoi il ne récupérerait pas la trame complète... je sais pas. J'ai pas de compteur chez moi. J'essaierai chez manu.

En ce qui concerne la Uno, j'ai fait l'essais: pas assez de RAM.

Ce que tu peux faire, avec la Mega, c'est modifier les conditions de l'information trame complète:
trameComplete < 11 devient trameComplete >= 8
la trame xPL devrait alors être envoyer, même si les données sont incomplètes.

Romain
  • gromain
  • Avatar 2013 01 07
  • OFFLINE
  • Administrateur
  • Administrateur
  • Posts: 153
  • Thank you received: 10
  • Karma: 3
The administrator has disabled public write access.

teleinfo arduino 01 May 2013 22:04 #29

Effectivement je n'ai pas le même nombre de lignes valides. En fait je ne dois pas avoir le même abonnement que lui, pas d'heures pleines/creuses dans mon cas.
J'ai modifié ces paramètres (tramecomplete et variables) dans tout le code mais sans succès.
En continuant dans les tests, je me suis amusé avec
Serial.print("x");
delay(100);
Et il me semble que le code bloque dans la partie getTeleinfo (j'avais d'ailleurs trop commenté de code l'autre jour, pour la compil...)
c'est juste après cptSerial.available () {
while (!trameComplete){
    while(CaractereRecu != 0x02) // boucle jusqu'a "Start Text 002" début de la trame
    if (cptSerial.available()) {
    {
que l'affichage d'un caractère se répète à l'infini...
Sinon en commentant la getTeleinfo en début de Void loop, j'obtiens bien un envois XPL mais vide
Send hbeat message
Send Teleinfo stat
xpl-stat
{
hop=1
source=arduino-teleinfo.garage
target=*
}
teleinfo.basic
{
adco=
optarif=
isousc=0
ptec=
iinst=0
imax=0
papp=0
motdetat=
device=teleinfo
}
  • Christophe
  • Nophoto
  • OFFLINE
  • Fresh Boarder
  • Rank0
  • Posts: 6
  • Karma: 0
The administrator has disabled public write access.

teleinfo arduino 30 May 2013 18:59 #30

Je vois que ca marche pas terrible...
Vous avez reussi a faire avancer le problème.
Je vais reprendre sur le code, j'étais assez pris ces derniers temps.
  • Steeve
  • Nophoto
  • OFFLINE
  • Fresh Boarder
  • Rank0
  • Posts: 2
  • Karma: 0
The administrator has disabled public write access.
Backtotop