Récupérer la téléinformation ERDF sur l’Arduino

La téléinformation, qu’est ce que c’est ?

Si vous disposez d’un compteur électronique ERDF, il y a de fortes chances pour que vous disposiez de 2 bornes dédiées à la téléinformation. Traditionnellement, elle est utilisée par les appareils de gestion de chauffage, de délestage, … Franchement, avec les différents chantiers que j’ai pu faire, je ne l’ai vu que trop rarement utilisée.

Les bornes sont situées dans la partie basse du compteur, coté utilisateur, donc non plombée et généralement repérées par I1 et I2.

Attention, les bornes sont au voisinage de la tension 230V, donc pour toute intervention coupez le disjoncteur général ou faites réaliser l’opération par un électricien. N’ouvrez pas le bornier supérieur, il est réservé à ERDF, le retrait du plombage vous expose à de gros problèmes !

Bornes compteur ERDFBornes compteur ERDF

La téléinformation est en fait un bus de communication numérique modulé de type série. Une partie des informations du compteur est diffusé en permanence de façon cyclique. Chaque donnée fournie est précédée d’une étiquette qui permet de l’identifier.

La téléinformation va par exemple vous fournir l’option tarifaire choisie, l’index de base, les heures creuses/pleines, les périodes TEMPO, EJP, … tout dépend comment est configuré votre compteur. Il se peut que votre compteur ne retourne rien ou pas grand chose, dans ce cas il est fort possible que la téléinformation ne soit pas activée par ERDF, dans ce cas là, malheureusement, la seule solution est de les appeler.

Voici quelques exemples de données extraites de la documentation officielle ERDF :

Exemple de données fourniesExemple de données fournies

Voilà un exemple de trame reçue sur mon compteur :

ADCO 03xxxxxxxxxx D

OPTARIF BASE 0

ISOUSC 45 ?

BASE 064942042 *

PTEC TH.. $

IINST 013 [

IMAX 051 E

MOTDETAT 400000 F

Détail de la trame émise

Extrait de la documentation :

Chaque caractère est émis dans un ensemble cohérent de 10 bits dont la constitution est la suivante :

  • un bit de start correspondant à un “0” logique
  • 7 bits pour représenter le caractère en ASCII
  • 1 bit de parité, parité paire
  • un bit de stop correspondant à un “1” logique
Start Bit Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Stop bit

————-> Sens d’émission

Les trames sont émises les unes après les autres en continu. Entre la fin d’une trame et le début de la suivante, un délai sans l’émission est ménagé. Sa durée est comprise entre 16,7 et 33,4ms. De même le délai entre 2 groupes d’information successifs d’une même trame ne doit pas être supérieur à 33,4ms.

Les trames ont une longueur qui dépend du type de contrat choisi et contiennent toutes les informations présentes dans les mémoires du compteur et pouvant aider à la gestion d’énergie.

Une trame est constituée de trois parties :

  • le caractère “Start TeXt” STX (002 h) indique le début de la trame
  • le corps de la trame est composé de plusieurs groupes d’informations
  • le caractère “End TeXt” ETX (003 h) indique la fin de la trame

Il est admis que l’émission puisse être momentanément interrompue sur la liaison de téléinformation client du compteur, pendant un téléreport par exemple. Dans ce cas :

  • le caractère ASCII “End Of Text” EOT (004 h) est généré avant interruption
  • la reprise de l’émission se fait en début de trame par émission du caractère “STX”.

Toutes les données du compteur sont délivrées par groupes d’information qui forment chacun un ensemble cohérent avec une étiquette et une valeur associée de telle sorte qu’il soit facile de les distinguer les unes des autres. La composition d’un groupe d’information est la suivante

  • un caractère “Line Feed” LF (00A h) indiquant le début du groupe
  • le champ étiquette dont la longueur est inférieure ou égale à huit caractères
  • un caractère “SPace” SP (020 h) séparateur du champ étiquette et du champs donnée
  • le champ donnée dont la longueur est variable
  • un caractère “SPace” SP (020 h) séparateur du champ donnée et du champ contrôle
  • le champ contrôle se composant d’un caractère contenant la “checksum” dont le calcul est donné ci-dessous en remarque
  • un caractère “Carriage Return” CR (00D h) indiquant la fin du groupe d’information

Connexion à l’Arduino

La connexion au compteur va nécessiter un petit montage afin d’isoler galvaniquement l’Arduino au compteur, c’est le rôle de l’optocoupleur. Pour info, la documentation indique que le montage doit accepter une connexion accidentelle du 230V sur les bornes ! Pour se faire, nous utiliserons un optocoupleur bien connu de ce type de montage : le SFH620A. Prenez bien la ref avec le “A” qui indique une version DIP, sinon vous aurez un soucis avec la breadboard. Ce composant vaut moins d’un euro et n’est pas forcément facile à trouver. J’ai trouvé le mien chez semageek.com à 0.79€.

Repères SFH620ARepères SFH620A

Voici le schéma de câblage :

Schéma optocoupleur SFH620ASchéma optocoupleur SFH620A

Avec votre carte Arduino, le schéma est très simple ! Ci dessous, j’utilise un bornier pour me connecter au compteur.

Téléinfo basiqueTéléinfo basique

Concernant le code, il n’est pas bien compliqué. Cependant, nous sommes obligé d’utiliser la librairie SoftwareSerial.h pour déclarer de nouveaux ports Rx/Tx. Pourquoi ? En fait on n’est pas vraiment obligé, … mais lorsque vous chargez le programme, la liaison série sur les bornes 0/1 est déjà active à cause du compteur. Donc soit vous faites comme moi et vous utilisez 2 autres bornes, soit vous débranchez le câble téléinfo pour le chargement du programme. Voila le code pour lire les informations sur le moniteur série :

Idées d’application

Quelques idées d’application pour mettre en oeuvre la téléinformation :

  • Visualisation de la consommation et analyse périodique
  • Affichage sous forme de graphique d’une période sur un LCD
  • Module de délestage pour chauffage électrique (économies d’argent en perspectives !)

A suivre bientôt, mon projet de domotique avec utilisation de la téléinfo !

Author: stratus

Laisser un commentaire