Go Down

Topic: Recopie de la valeur de la trame teleinfo Ptec par led (Read 7757 times) previous topic - next topic

robinson17740

23H00 rien
j ai du faire une boulette, vais chercher


bricoleau

Le mieux serait d'afficher quelque part le contenu de la variable PTEC
Il me semblait d'ailleurs que c'était déjà prévu dans ton interface Web

Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

icare

Bonjour,
C'est pas mieux comme cela :

Code: [Select]
if (strncmp("HC..",PTEC,4)==00)
{
  {digitalWrite(ind_ptec,HIGH);};
  }
  else {digitalWrite(ind_ptec,LOW);};
}

Juste pour la présentation, mis à part la façon d'écrire le code
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

bricoleau

Y a des caractères en trop, qui ne devraient toutefois pas gêner à l'exécution.

Code: [Select]
if (strncmp("HC..",PTEC,4)==00)
{
  digitalWrite(ind_ptec,HIGH);
  }
  else {digitalWrite(ind_ptec,LOW);}


Après la présentation n'est pas terrible. Personnellement je préfère :

Code: [Select]
if (strncmp("HC..",PTEC,4)==00)
{
  digitalWrite(ind_ptec,HIGH);
}
else
{
  digitalWrite(ind_ptec,LOW);
}



Mais encore une fois, tu ne donnes pas assez d'info pour qu'on puisse t'aider efficacement.

Je ne vois pas depuis où est appelée ta fonction read_PTEC().
Est-ce que tu as bien modifié la déclaration de PTEC et la fonction traitbuf_cpt() comme conseillé ?

Ton serveur web est-il opérationnel?
Si oui, il me semble qu'il affiche la valeur de PTEC.
Si non, as-tu la possibilité de la snifer par un Serial.print ?
Tu peux vérifier qu'elle est correctement alimentée, même en heures pleines.

Enfin, si je comprends bien, tu as fait l'acquisition du shield téléinfo de chez cartelectronic.
Et derrière, j'imagine que tu l'as monté sur une carte arduino ethernet, ou bien sur une carte standard avec un shield ethernet en plus.
Tu as mentionné que l'écriture sur carte SD ne fonctionne pas.
En regardant rapidement, il me semble que les deux shields ont un lecteur de carte SD qui utilise la pin 4. D'où conflit.
Si c'est bien ça, il semble qu'il te faut couper la connexion de la pin4 sur le shield du haut et mettre la carte SD en bas.

Le shield teleinfo n'est peut-être pas prévu pour fonctionner avec de l'ethernet.

Tiens encore un autre point : régler manuellement l'heure de l'horloge par saisie via le port série, est une hérésie quand on dispose d'une connexion internet. Cela pourrait se faire en automatique, mais gardons ça pour plus tard.
Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

robinson17740

bonjour
 j appel ma fonction dans

Void loop

read_teleinfo();
  read_dep();
  read_web();
  read_PTEC();

pour l 'enregistrement sur sd cela a déjà fonctionner mais j'ai peu etre modifier qqchose dans le programme et je ne vois pas actuellement ou mais cela n"est pas ma priorite
j ai inclu ton petit bout de programme mais la led reste bien allume tous le temps.

robinson17740

bonjour
 j appel ma fonction dans

Void loop

read_teleinfo();
  read_dep();
  read_web();
  read_PTEC();

pour l 'enregistrement sur sd cela a déjà fonctionner mais j'ai peu etre modifier qqchose dans le programme et je ne vois pas actuellement ou mais cela n"est pas ma priorite
j ai inclu ton petit bout de programme mais la led reste bien allume tous le temps.
Oui effectivement il y a bien  dans le serveur une fonction pour afficher la valeur mais marche pas prob code?



robinson17740

C'est balot
 je viens de trouver l'erreur

if (strncmp("PETC",&buff[1],5)==0){
      strncpy(PTEC,&buff[6],4);
      PTEC[4]='\0';


c'est pas bon de veillir !!!!!!!!!!!!! :0(

bricoleau

 :D

Essaye vraiment d'afficher le contenu de la variable PTEC par un Serial.println

C'est quand même mieux qu'une led qui ne s'allume que si PTEC est bien alimentée et contient la bonne valeur... seulement à partir de 22h30  :smiley-evil:

Et pour

Quote from: robinson17740
...mais marche pas prob code?
désolé je ne suis pas devin. Tu peux expliciter "marche pas" stp ?
Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

robinson17740

#23
Jan 23, 2015, 08:44 pm Last Edit: Jan 23, 2015, 08:49 pm by robinson17740
sur le web j ai une valeur du type 17734
et ma led reste toujours allume quelque soit la periode

Artouste

sur le web j ai une valeur du type 17734
et ma led reste toujours allume quelque la periode

bonsoir
tu ne peux pas déjà faire un log brut des trames emises comme je l'ai suggéré plus haut, aux alentours du point (heure) de bascule.
enregistrer le log sur un PC avec terminalbpp (exemple) et ensuite  faire une analyse du fichier log ?

si le probleme est juste un probleme d'analyse de chaine (parsing) ça va se voir tres vite


robinson17740

pour moi c'est du chinois dsl
je sors bien toutes les valeurs quand elles sont en decimales
du type
#
client.print(PAPP,dec);
client.print(IINST,dec);
mais pas client.print(PTEC);
normalement la trame PTEC passe de HC.. a TH.. a 22h30 sans rien faire

Artouste

pour moi c'est du chinois dsl
je sors bien toutes les valeurs quand elles sont en decimales
...
:smiley-mr-green:
bon ! , on va déjà attendre de voir ce soir si les modifs de code proposées sont efficaces.

si ce n'est pas le cas , demain (fin de journée pour moi) "on" t'expliquera comment faire un log brut pour analyse.

robinson17740

#27
Jan 24, 2015, 01:28 am Last Edit: Jan 24, 2015, 10:52 am by robinson17740
Malgres la correction du code, pas de changement led ON

fdufnews

Là il y a un petit problème
Code: [Select]
if (strncmp("PETC",&buff[1],5)==0){
      strncpy(PTEC,&buff[6],4);
      PTEC[4]='\0';

tu demandes de comparer 5 caractères mais tu n'en mets que 4 en référence. Il manque l'espace en fin de chaîne. En plus c'est PTEC pas PETC
Code: [Select]
if (strncmp("PTEC ",&buff[1],5)==0){
      strncpy(PTEC,&buff[6],4);
      PTEC[4]='\0';

A l'exécution de ce code, normalement PTEC devrait contenir soit HC.. soit HP..

robinson17740

#29
Jan 24, 2015, 10:30 pm Last Edit: Jan 24, 2015, 11:18 pm by robinson17740
Là il y a un petit problème
Code: [Select]
if (strncmp("PETC",&buff[1],5)==0){
      strncpy(PTEC,&buff[6],4);
      PTEC[4]='\0';

tu demandes de comparer 5 caractères mais tu n'en mets que 4 en référence. Il manque l'espace en fin de chaîne. En plus c'est PTEC pas PETC
Code: [Select]
if (strncmp("PTEC ",&buff[1],5)==0){
      strncpy(PTEC,&buff[6],4);
      PTEC[4]='\0';

A l'exécution de ce code, normalement PTEC devrait contenir soit HC.. soit HP..
Quote
et ensuite tu trouve la fonction
Code: [Select]

///////////////////////////////////////////////////////////////////
// Periode en cours
///////////////////////////////////////////////////////////////////
void read_PTEC()
{
 if (strncmp("HC..",PTEC,4)==0)
 {
 {digitalWrite(ind_ptec,LOW);};
 }
 else {digitalWrite(ind_ptec,HIGH);};
 }


Quote
ainsi que la recopie sur la page web
Code: [Select]

client.println("<body bgcolor=#00C7CC><p align=center>");   
           client.println("<br ><font color=#FFFFFF><font size=7>Bienvenue<br>sur</font></p>");
           client.println("<p align=center><font color=#FAFEA><font size=8>HOMELANOUE<br ><br>");
           client.println("<img src=http://image.noelshack.com/fichiers/2014/50/1418070763-hello-newsletter.gif width=175 height=70></p>");
         client.println("<br ><p align=center><font size=6>");
         client.println("Index HP  ""<font color=red>");client.print((INDEX1/1000),DEC);client.print("</font>""  KWh""<br>");
         client.println("Index HC  ""<font color=blue>");client.print((INDEX2/1000),DEC);client.print("</font>""  KWh""<br>");           
         client.println("Puissance Apparente ""<font color=white>");client.print(PAPP,DEC);client.print("</font>""  V A""<br>");
         client.println("Periode Tarifaire En Cours ");client.print(PTEC);client.print("<br>"

Go Up