lundi 12 septembre 2011

Liaison téléinfo : le compteur électrique on the web

Les compteurs électriques récents disposent d'une sortie à  deux fils émettant en temps réel la consommation de votre installation : la liaison téléinfo. Les données étant présentes, il est dommage de ne pas pouvoir en disposer ! Nous allons y remédier. L'idée de base est de récupérer la consommation et de pouvoir la suivre de n'importe ou.
le montage aura 3 étages :
  • l'adaptation du signal pour le rendre facilement exploitable
  • la récupération et l'analyse des données
  • la présentation sur le réseau sous forme de graphiques[1]

Adaptation du signal

On trouve chez edf les spécifications techniques de la sortie téléinfo. Outre le signal, elles décrivent les messages que vous pourrez recevoir (nous y reviendrons). La 1ère étape est de transformer le signal pour le rendre lisible par notre équipement. plutôt que de ré-inventer la roue, une petite recherche sur le web nous remonte nombre de schémas (voir les liens). La source première semble être Bernard Lefrancois, mais ce n'est sans doute pas la seule. Quoi qu'il en soit, le montage est simple :
  • un optocoupleur
  • une/deux NAND
Voici ma version du schéma réalisé avec Kicad : schema teleinfo Voir ci-dessous pour les sources des schémas et le pourquoi de tous ces connecteurs inutiles.

Récupération des données

la 1ère étape est de récupérer tout cela avec un PC pour valider le concept. On s'installe donc au pied du compteur avec son PC portable et sa plaque d'essai[2] 1st Le port série est relié au connecteur Liaison vers un PC du schéma ci-dessus.
Parlons maintenant un peu des données. Elles sont transmises en boucle par votre compteur à  un débit de 1200 Bauds en 7E1[3]. Chaque trame commence par le caractère STX:0x02 et se termine par ETX:0x03. le contenu des trames dépend de votre abonnement. Dans mon cas (monophasé, heures creuses/pleines), on trouve ceci : plaque à  essai pour PC
ADCO XXXXXX088671 K
OPTARIF HC.. <
ISOUSC 60 <
HCHC 005124904 _
HCHP 007483956 =
PTEC HC.. S
IINST 002 Y
IMAX 052 F
PAPP 00400 %
HHPHC D /
MOTDETAT 000000 B
dans la GTL Je ne vais pas vous décrire par le menu les différents champs, tout est très bien détaillé dans le pdf linké précédemment. Sachez cependant que ce qui va nous intéresser le plus est :
  • HCHC : consommation totale en heures creuses
  • HCHP : consommation totale en heures pleines
  • PTEC : période tarifaire en cours (ici heures creuses)
  • IINST : l'intensité instantanée
Une fois ceci connu, il est très simple d'exploiter les données, on lit la trame sur le port série, on converti les caractères en nombre, et voila ! Vous trouverez même chez MicElectroLinGenMet des programmes en C tout fait pour exploiter ces données.
Bon, c'est bien joli de suivre sa consommation pour faire des économies, mais c'est pas en laissant un PC allumé qu'on va améliorer les choses !

On the web

Il me faut donc un moyen de lire et exporter tout cela sur le web à  basse consommation. Mon choix s'est porté sur une plateforme arduino. Pourquoi ? C'est simple :
  • il faut un arduino dans tout projet électronique[4]
  • c'est facile d'accès, tout intégré et avec plein de bibliothèques
  • les extensions[5] sont faciles et existent en grand nombre (en particulier pour l'ethernet)
  • les AVR c'est le bien
Arduino dans la GTLBref, des arguments imparables !
Pour l'ethernet, mon choix s'est porté sur un modèle à  enc28J60 plutôt que l'officiel à  base de Wiznet. Il est plus lourd à  programmer, mais beaucoup moins cher. Ici, une comparaison[6] entre les 2 shields.
Le reste n'est que du C, très simple donc ;)
Le programme est relativement léger. On lit le port série régulièrement, on accumule dans un tableau pour conserver un historique sur 24h et on affiche le tout via l'API Google chart. Vous trouverez les sources ci-dessous.
web
Voila, après quelques mois de fonctionnement sur plaque à  essai, tout va bien. J'avais prévu d'en faire un typon[7] mais au final, je me suis contenté d'une plaque à  trous.
Vous pouvez voir comme je suis fort en soudure et routage[8] :)
coté face coté pile en fonctionnement

Conclusion

Voila, un montage simple et facile qui vous permettra d'attendre le super nouveau compteur d'EDF. Dans les évolutions, on pourrait envisager une intégration Google powermeter[9] ou un historique plus grand[10]
Dans les utilisations réelles[11] je peux citer :
  • le réglage de la pompe à  chaleur pour qu'elle ne déborde plus en heures pleines
  • la découverte de l'oubli du chauffe-eau pendant les vacances[12]
Et pour finir, quelques liens :

Notes

[1] parce que j'aime bien les graphiques !
[2] madame ne vous laissera sans doute pas faire très longtemps ;)
[3] 7 bits de data, parité pair, 1 bit de stop
[4] au milieu, à  gauche
[5] shields
[6] en faveur du wiznet
[7] voir dans les sources kicad ci-dessous
[8] ironie inside
[9] si j'arrive à  faire du SSL?
[10] pour l'instant via un munin hébergé ailleurs
[11] je veux dire autre que le plaisir de voir de jolies couleurs
[12] et envoi de mamie pour l'extinction :)


Commentaires du post original