Java 2 Ada

Suivi de consommation éléctrique avec clef USB Teleinfo ADTEK

By Stephane Carrez

Les compteurs EDF r飥nt disposent d'un module 魥ttant p鲩odiquement des informations sur la consommation 鬩ctrique. Le compteur utilise un protocol s鲩e ࠱200 baud, le signal est modul頰ar une porteuse ࠵0Khz (Voir t鬩information EDF pour les d鴡ils ainsi que la Sp飩fication Technique EDF). Cet article explique comment r飵p鲥r ces informations et les rendre visibles 蠴ravers plusieurs graphes. En deux mots, le principe est de r飵p鲥r les informations EDF, d'envoyer ces informations sur un serveur et afficher tous les graphes et r鳵ltats ࠴ravers une interface Web accessible depuis Internet.

bbox-teleinfo.png

T鬩information avec clef USB ADTEK

La soci鴩 Adtek propose un petit module T鬩info USB permettant de r飵p鲥r la t鬩information via un port s鲩e. La communication se fait ࠹600 baud, 8-bits, sans parit鮠Sous Linux, il faut charger les deux modules usbserial et ftdi_sio. Suivant la version du driver ftdi, la clef USB peut ne pas être reconnue, il faut alors indiquer les identifiants du fabricant et du produit lors du chargement du driver.

insmod usbserial.ko
insmod ftdi_sio.ko vendor=0x0403 product=0x6015

Si tout se passe bien le driver va cr饲 le device /dev/ttyUSB0 lorsque la clef est mont饺

usbserial: USB Serial Driver core
USB Serial support registered for FTDI USB Serial Device
ftdi_sio 2-2:1.0: FTDI USB Serial Device converter detected
usb 2-2: Detected FT232RL
usb 2-2: FTDI USB Serial Device converter now attached to ttyUSB0
usbcore: registered new interface driver ftdi_sio
ftdi_sio: v1.4.3:USB FTDI Serial Converters Driver

Petit agent de monitoring

Un petit agent de monitoring va lire en permanence les trames EDF de t鬩information via le port s鲩e. Il doit collecter les donn饳 et envoyer les r鳵ltats toutes les 5 minutes en utilisant un POST HTTP vers le serveur qui lui est donn頡u d魡rrage.

edf-teleinfo /dev/ttyUSB0 http://server/teleinfo.php &

Cet agent peut tourner dans un Raspberry Pi, un BeagleBone Black. Dans mon cas, je le fais tourner sur ma Bbox Sensation ADSL. A d馡ut, on peut utiliser un PC standard mais ce n'est pas optimal pour la consommation 鬩ctrique. Source de l'agent: edf-teleinfo.c

La compilation de l'agent se fait simplement avec l'une des commandes suivantes:

gcc -o edf-teleinfo -Wall -O2 edf-teleinfo.c
arm-angstrom-linux-gnueabi-gcc -o edf-teleinfo-arm -Wall -O2 edf-teleinfo.c

Cré¡´ion des fichiers RRDtool

Le compteur EDF envoie une mesure toutes les 2 secondes (option -s de rrdtool). La consommation 鬩ctrique est enregistr饠sous deux data sources: hc (Heures creuses) et hp (Heures pleines). Les min, max et average sont calcul鳠pour des p鲩odes de 1 mn (30 mesures), 5mn (150 mesures) et 15 mn (450 mesures).

rrdtool create teleinfo-home.rrd -s 2 \
   DS:hc:COUNTER:300:0:4294967295 \
   DS:hp:COUNTER:300:0:4294967295 \
   RRA:AVERAGE:0.1:30:1800 \
   RRA:MIN:0.1:30:1800 \
   RRA:MAX:0.1:30:1800 \
   RRA:AVERAGE:0.1:150:1800 \
   RRA:MIN:0.1:150:1800 \
   RRA:MAX:0.1:150:1800 \
   RRA:AVERAGE:0.1:450:1800 \
   RRA:MIN:0.1:450:1800 \
   RRA:MAX:0.1:150:1800

Alors que les Heures creuses et Heures pleines sont d馩nies comme COUNTER, l'intensit頩nstantan饠et la puissance apparente sont repr鳥nt饳 avec des gauges variant de 0 ࠷0A ou 0 ࠱5000W.

rrdtool create teleinfo_power-home.rrd -s 2 \
   DS:ic:GAUGE:300:0:70 \
   DS:pap:GAUGE:300:0:15000 \
   RRA:AVERAGE:0.1:30:1800 \
   RRA:MIN:0.1:30:1800 \
   RRA:MAX:0.1:30:1800 \
   RRA:AVERAGE:0.1:150:1800 \
   RRA:MIN:0.1:150:1800 \
   RRA:MAX:0.1:150:1800 \
   RRA:AVERAGE:0.1:450:1800 \
   RRA:MIN:0.1:450:1800 \
   RRA:MAX:0.1:150:1800

La cré¡´ion des fichiers est à ¦aire une seule fois sur le serveur. Si la cré¡´ion est faite dans un ré°¥rtoire /var/lib/collectd/rrd alors on peut facilement utiliser Collectd Graph Panel pour l'affichage des graphes.

Collecte des informations

Sur le serveur, une page fait l'extraction des paramè´²es de la requê´¥ POST et remplit la base de donné³ RRDtool.

L'agent envoie les informations suivantes:

  • date: le temps Unix correspondant à ¬a premiè²¥ mesure,
  • end: le temps Unix de la derniè²¥ mesure,
  • hc: la valeur du compteur sur les heures creuses,
  • hp: la valeur du compteur sur les heures pleines,
  • ic: le courant instantan鬍
  • pap: la puissance apparente.

Comme l'agent envoie les donn饳 par lot de 150 valeurs (ou plus si il y a eu des probl譥s de connection), la mise ࠪour se fait en ins鲡nt plusieurs valeurs ࠬa fois. Dans ce cas, rrdupdate s'attend ࠡvoir le timestamp Unix suivit des valeurs des deux data sources (courant et puissance). Voici un extrait de la commande:

rrdupdate \
  /var/lib/collectd/rrd/home/teleinfo/teleinfo_power-home.rrd \
  1379885272:4:1040 1379885274:4:1040 1379885276:4:1040 \
  1379885278:4:1040 1379885280:4:1040 1379885282:4:1040 \
  1379885284:4:1040 1379885286:4:1040 1379885288:4:1040 ...

Pour l'installation de la collecte, copier le fichier edf-collect.php sur le serveur en s'arrangeant pour rendre accessible la page via le serveur web. Source: edf-collect.php.txt

Affichage des informations

Collectd Graph Panel est une application web 飲ite en PHP et Javascript permettant d'afficher les graphes collect鳠par collectd. Si les graphes sont cr饳 au bon endroit, alors cette application les reconnaitra et permettra de les afficher. Pour cela, il faut ajouter le plugin teleinfo.php dans le r鰥rtoire plugin. Source: teleinfo.php.txt

unzip CGP-0.4.1.zip
cp teleinfo.php.txt CGP-0.4.1/plugin/teleinfo.php

Et maintenant

Voir sa consommation 鬩ctrique a un petit cot頬udique. Parfois c'est surprenant de constater que la consommation 鬩ctrique ne descend pas en dessous de 200W. Ceci dit c'est normal avec toutes ces Box, d飯deurs, switch et autres appareils qui mꭥ en veille consomme quelques watts.

Suiviconso

Planete Domotique

To add a comment, you must be connected. Login to add a comment