Recopie de la valeur de la trame teleinfo Ptec par led

Bonjour je cherche a exploite les resultat de la teleinfo
je veux afficher via des leds la couleur du jour , Demain et Ptec
je ne trouve aucune aide sur la toile pour creer le code pour Mon mega
j ai deja adapter un schema me permettant de retrouver les info releves Hc Hp en kwh
la puissance apparente , l' intensite consommee
Merci de votre aide, je suis parti du schema fournit par Cartelec version 3e que j ai adapter a mes besoins je suis actuellement avec une conf pour HCHP et vais passer ensuite en BBX(tempo)

Il y a vraiment personne pour m aider!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

robinson17740:
Bonjour je cherche a exploite les resultat de la teleinfo
je veux afficher via des leds la couleur du jour , Demain et Ptec
je ne trouve aucune aide sur la toile pour creer le code pour Mon mega
j ai deja adapter un schema me permettant de retrouver les info releves Hc Hp en kwh
la puissance apparente , l' intensite consommee
Merci de votre aide, je suis parti du schema fournit par Cartelec version 3e que j ai adapter a mes besoins je suis actuellement avec une conf pour HCHP et vais passer ensuite en BBX(tempo)

bonsoir
tu recupere déja les infos de bases ?

Bonjour, oui comme déjà indiqué j exploite les info sur serveur web index hp, hc puissance apparente et intensité instantanée mais impossible d extraire la valeur de PTEC et de pouvoir actionner de ce fait une led ou un relais
merci si t'as un tuyau

robinson17740:
Bonjour, oui comme déjà indiqué j exploite les info sur serveur web index hp, hc puissance apparente et intensité instantanée mais impossible d extraire la valeur de PTEC et de pouvoir actionner de ce fait une led ou un relais
merci si t'as un tuyau

Bonsoir
OK
Déjà il faut voir sur un log brut, si les infos que tu (re)cherche sont bien présentes.
selon ton type de contrat, ce n'est pas une obligation

une bonne base de lecture , la doc ERDF

Si je demande c'est que j ai deja l"abonnement qui va bien la trame teleinfo avec toutes les donnees qui m interresse je demande juste a pouvoir traiter la valeur PTEC

joint ce que j ai adapter et qui fonction deja hormis l enregistrement sur Sd
je chercherais pourquoi plus tard
et ensuite il me faudra trouver un moyen de telecharger les fichiers sauvegarder depuis la page web du montage

HOME_LA_NOUE3.ino (21.7 KB)

bonjour
il bien quelqu un a deja utilser la trame PTEC pour piloter un relais pour les heures creuses quand meme?

Bonjour

Je sens bien que tu es dans la panade et cherche désespérément à avoir des infos.
Alors je vais essayer de t'aider.

Ne le prends pas mal, mais tes demandes ne me semblent pas très claires (ceci explique probablement le peu de réponses).

Quand je regarde ton code, cela me paraît être un assemblage précaire de différents morceaux chopés par ci par là.
Mais bon, on va essayer de s'en débrouiller.

Le fichier .ino que tu as posté est bien la dernière version que tu utilises ?
Si non, merci de remettre la bonne référence.

Si oui, y a un truc que je ne comprends pas : d'habitude, la téléinfo est reçue via un protocole série à 1200 bauds, sur des pin dédiées de l'arduino.
Là dans ton code, j'ai l'impression que seule la liaison série principale est utilisée (celle qui correspond aux pins 0 et 1). Tu récupères les infos du compteur par un Serial.read(), et en même temps tu balances des Serial.print().

Et puis je vois un

Serial.println(F("Reglage heure OK - installer le cavalier pour la teleinfo"));

Y a des subtilités de cablage dont tu n'aurais pas parlé ?

Je ne vois pas où est le problème, il suffit d'ajouter un test sur la trame que tu veux tester dans la fonction traitbuf_cpt

Bonjour Bricoleau

c 'est bien la dernière version et elle est fonctionnelle
ce code est a l origine fournit avec le shield Téléifo de chez Cartelectronique , je l ai un peu allégé des fonction non utile en fonction de mon abonnement et j ai assemble avec un serveur web
la programmation de la carte se faisant par usb pins 0 et 1 ainsi que l'envoi sériel du shield teleinfo d'ou la présence d'un cavalier a retirer le temps ( j'ai remplacer le cavalier par un inverseur question de commodité) du téléversement et du réglage de la rtc inclus sur celle si.
du bout de mes 45 ans j essaye de faire pour le mieux pour comprendre tous le processus de programmation
je débute avec la programmation autant la partie electronique ne va pas trop me poser de pb malgres que mes etudes la dessus remonte a fort long, j'y arrive encore .

Donc quelque part je suis deçu car j ai des reponses faites par des pro de la programmation pour qui tous est simple il suffit de .................
Mais pour le il suffit de,, ne m'aide pas pour autant , moi je peu faire de meme sur des forums de dépannage en téléphonie ou internet et je dépanne personne si je ne les guide pas, pas a pas dans leur recherche de panne en y mettant un peu de pedagogie et sur au niveau de mon interlocuteur (par de petites demonstrations simples qui permettes de comprendre les chose simplement) .

Alors,

Après être allé faire un tour sur le site de Cartelectronic je vois un peu mieux de quoi il s'agit.

Comme il s'agit d'un produit commercial, je me garderai bien de donner mon avis sur la qualité du code fourni, mais je n'en pense pas moins :smiling_imp:

Je n'ai pas décortiqué tout le code, mais en prenant comme hypothèse qu'il fonctionne, tu dois pouvoir effectuer les modifs ci-dessous

J'ai vu que tu as déclaré une variable globale PTEC.

char PTEC[4] = "";

D'après la doc ERDF, PTEC est une chaîne de 4 caractères.
Dans ta variable, il te faut prévoir un caractère supplémentaire pour ajouter le \0 terminal.

La bonne déclaration est donc

char PTEC[5] = "";

La modif que je te propose consiste à alimenter cette variable globale, lors de l'analyse de la trame.
Charge ensuite à toi d'exploiter le contenu de cette variable pour en faire ce que tu veux.

Dans la fonction traitbuf_cpt(), ajoute les lignes ci-dessous

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

Par la suite, ailleurs dans ton programme, pour savoir si tu es en heure creuse, le code sera

if (strncmp("HC..", PTEC, 4)==0)
{
//on est en heures creuses
...
}

Dis moi si ça fonctionne

robinson17740:
je débute avec la programmation autant la partie electronique ne va pas trop me poser de pb malgres que mes etudes la dessus remonte a fort long, j'y arrive encore .

Donc quelque part je suis deçu car j ai des reponses faites par des pro de la programmation pour qui tous est simple il suffit de .................
Mais pour le il suffit de,, ne m'aide pas pour autant

On est pas devin, on ne peut pas savoir que tu débutes.

Si tu analyses la fonction traitbuf_cpt, tu vois que pour chaque trame traitée il y a un test de la présence d'un mot clé particulier OPTARIF, HCHP, ... ensuite un traitements sur les caractères qui suivent cet en-tête.

Bonjour
je vais tester des que possible
et je rends compte merci

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

avec bien sur

#define ind_ptec, 11
pinMode(ind_ptec,OUTPUT);pinMode(ind_ptec,LOW);

oups je crois que la condition est invrese
donc

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

Donc l heure de verité 22h30

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

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

Bonjour,
C'est pas mieux comme cela :

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

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

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 :

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.

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.