Actualités | Audio/Vidéo | Evènements | DIY | Domotique | Informatique | Maison | Mobile | Sécurité

Mise en place d'un modem TELEINFO sur un compteur EJP

Envoyer Imprimer PDF
Note des utilisateurs: / 18
MauvaisTrès bien 

Cet article vous présente comment exploiter les bornes de téléinformation de votre compteur pour suivre votre consommation électrique. Grâce à ces informations, vous pourrez visualiser les différents couts de votre maison et optimiser votre facture en changeant votre mode de consommation.

Pour exploiter les données de téléinformation de votre compteur, vous devez utiliser votre PC et brancher un modem de téléinformation entre votre PC et le compteur à relever. Ce type de modem est en vente chez Planete-domotique.com. Pour une somme de 50 euros, vous pouvez acquérir un modem permettant d'exploiter jusqu'à deux compteurs. Le deuxième compteur pourra être utilisé pour lire les informations de production (si vous avez une éolienne ou des capteurs photovoltaïques pour revendre de l'électricité à EDF).

Le modem se connecte sur le port USB d'un PC et sur votre compteur. Vous pouvez utiliser un cable réseau CAT5 ou du cable téléphonique pour brancher votre modem sur les bornes de téléinformation.

De mon coté, j'utilise depuis quelques temps un modem de téléinformation que je pilote depuis mon PC Linux. Les données sont sauvées dans une base MySQL via des scripts php et sh. Les Graphes sont générés avec l'API Google jsapi.

Tout d'abord commençons par la présentation de mon compteur électrique. Je possède un compteur EDF Triphasé avec un abonnement EJP. Le contrat EJP est un ancien contrat EDF qui n'est plus possible de souscrire. Ce contrat est basé sur un tarif intéressant 343 jours de l'année. En contre partie, le tarif de l'électricité est élevé pendant les 22 autres jours de l'année. EDF se sert de ces 22 jours pour délester son réseau en forçant les utilisateurs d'EJP à consommer moins durant ces 22 jours. Pour forcer les usagers, EDF pratique un tarif élevé pendant ces 22 jours.

Pour ma part, je souhaite donc monitorer ma consommation pour voir si je peux optimiser ma consommation, surtout durant ces 22 jours.

Voici la photo du compteur:

En haut à droite, les bornes de téléinformation que j'ai relié au modem à l'aide d'un fil réseau CAT5.

Le modem de téléinformation se connecte sur le port USB du PC. Il peut se trouver jusqu'à 40 mètres du compteur EDF sans perturbation. Si vous utilisez un cable à la limite de la longueur acceptable, vous pourrez connecter la masse à la terre afin de fiabiliser la connexion. De mon coté, je n'ai pas eu besoin de mettre la masse à la terre car mon modem est prêt de mon compteur.

Le modem est auto alimenté par le port USB. il est livré dans un boitier avec un cable USB:

Il faut déviser le couvercle pour arriver au bornier permettant de connecter les fils qui iront jusqu'aux bornes de téléinformation de vos compteurs. Pour vous aider sur le branchement, vous pouvez consulter la documentation de cartelectronic.fr :

Mon PC est un PC sous Linux. Pour lire les informations du modem, il y a deux solutions:

Connaissant mieux le langage php que le python, j'ai réutilisé les scripts php du forum. Mon compteur est un triphasé, j'ai donc modifié les scripts php pour traiter les informations de chaque phase. Ensuite j'ai encapsuler le php dans des scripts sh afin de planifier un script pour sauver régulièrement les informations de téléinformation en base de données et un script pour générer un graphe.

Je lis mes informations de téléinformation avec le script suivant:

#!/bin/bash
cd /home/myfolder/public_html/edf
php sauve.php --sauve > /dev/null 2>/dev/null

Le script sauve.php a été modifié pour mon besoin triphasé:

 <?php
/* * PHP-Teleinfo - script d'acqusition * v.0.1.5 * * Utilisation : * /usr/bin/php /var/www/dom/teleinfo/log.php -->> /opt/dom/teleinfo.csv * * Pour creer le fichier CSV : * /usr/bin/php /var/www/dom/teleinfo/log.php --header > /opt/dom/teleinfo.csv * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * (c) 2007 Radim BADSI */ /* Liste des messages a sauvegarder */ $messages = array("EJPHN","EJPHPM","PAPP","PTEC","IINST1","IINST2","IINST3"); /* Nombres d'essais maximum */ $jmax = 10; /* Chemin d'acces a la bibliotheque PHP-Teleinfo */ $phpteleinfo_path = "teleinfo.php"; if ($argv[1] == "--header") { $csv = chr(34) . "Date" . chr(34) . ","; /* Generer l'en-tete */ foreach($messages as $etiquette) { $csv .= chr(34) . $etiquette . chr(34) . ","; } } else { /* Lire les messages */ include ($phpteleinfo_path); $j = 0; // Nombre d'essais do { $csv = chr(34) . time() . chr(34) . ","; $valid_etiq = 0; // Nombre d'etiquettes valides recuperees sleep(2); // Attendre 1s avant chaque tentative $trame = teleinfo(); foreach ($messages as $etiquette) { if ($trame[$etiquette]) { $valid_etiq++; $csv .= chr(34) . $trame[$etiquette] . chr(34) . ","; } $j++; // Incrementer le nombre d'essais if ($j >= $jmax) die(); } } while ($valid_etiq != count($messages)); } /* Remplacer la derniere virgule par un saut a la ligne */ $csv = substr_replace($csv, "\n", -1, 1); /* Afficher le CSV */ ##echo($csv); $csv2=chop($csv); $table=array(); $table=explode(",",$csv2); mysql_connect('localhost','root','xxx'); mysql_select_db('edf'); if ($table[1]!='') { $res = mysql_query("INSERT INTO conso (id,Date,EJPHN,EJPHPM,PAPP,PTEC,IINST1,IINST2,IINST3) VALUES ('0',$table[0],$table[1],$table[2],$table[3],$table[4],$table[5],$table[6],$table[7])"); } mysql_close(); ?>

Voici un exemple de données lues avec mon modem:

ADCO 03----------
OPTARIF EJP.
ISOUSC 20
EJPHN 174297706
EJPHPM 002113651
PTEC HN..
IINST1 000
IINST2 001
IINST3 000
IMAX1 034
IMAX2 032
IMAX3 035
PMAX 16160
PAPP 00370
MOTDETAT 000000
PPOT 00

Je stocke ces informations dans un table MySQL qui a cette structure:

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE TABLE IF NOT EXISTS `conso` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`EJPHN` int(9) NOT NULL,
`EJPHPM` int(9) NOT NULL,
`PAPP` int(5) NOT NULL,
`PTEC` varchar(4) NOT NULL,
`IINST1` int(3) NOT NULL,
`IINST2` int(3) NOT NULL,
`IINST3` int(3) NOT NULL,
`Date` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `Date` (`Date`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1435 ;

Ensuite, je fais des extractions pour générer directement des graphes jsapi. Ces graphiques Google sont simples à générer, il suffit de générer une page HTML de ce modèle :

<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Date');
data.addColumn('number', 'PH1 A');
data.addColumn('number', 'PH2 A');
data.addColumn('number', 'PH3 A');
data.addRows(200); data.setValue(0, 0, '2011/09/22 18:15:01'); data.setValue(0, 1, 0); data.setValue(0, 2, 9); data.setValue(0, 3, 0); data.setValue(1, 0, '2011/09/22 18:20:01'); data.setValue(1, 1, 0); data.setValue(1, 2, 9); data.setValue(1, 3, 0); data.setValue(2, 0, '2011/09/22 18:25:01'); data.setValue(2, 1, 0); data.setValue(2, 2, 3); data.setValue(2, 3, 1);
data.setValue(199, 0, '2011/09/24 09:30:01');
data.setValue(199, 1, 0);
data.setValue(199, 2, 4);
data.setValue(199, 3, 1);
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, {width: 800, height: 600, title: 'Intensite A'});
}
</script>
</head>
<body>
<div id="chart_div"></div>
</body>
</html>

Vous pouvez consulter mon script extrait_jour.php pour voir comment mettre en oeuvre un tel graphe:

On peut aussi faire la somme des consommations de chaque phase:

 

Mes scripts sont planifiés (croné) tous les 15 minutes:

0-55/5 * * * * root /home/myfolder/public_html/edf/sauve.sh
1,16,31,46 * * * * root /home/myfolder/public_html/edf/extrait.sh
6 9 * * * root /home/myfolder/public_html/edf/extrait_jour.sh

 

J'ai réalisé divers scripts pour faire d'autres graphiques. Je vous propose mon package complet qui pourra vous donner d'autres idées : Sources-Arno.

 

Conclusion

Pour résumer, le modem de téléinformation est le moyen le plus simple et le moins honéreux pour récupérer votre consommation électrique. La mise en oeuvre est simple. Plusieurs membres de TLD en parlent, vous n'aurez pas de mail à trouver du support.

C'est à mon avis la façon la méthode la plus précise donnant la consommation réelle (la même qui est relevée par EDF).

 

Cet article vous est proposé par Arno : Linuxiens de naissance, Arno travaille dans le domaine de l'informatique. Il s'intéresse à tous les domaines : informatique, électronique, mécanique et bricolage en tout genre. Arno est un source d'inspiration constante.

 

Ils en parlent aussi

Mise à jour le Mercredi, 15 Août 2012 20:33  

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Recherche

Les Flux RSS de TLD
Instagram

Produits Partenaires

GCE Electronics est partenaire de Touteladomotique.com RFXCOM.com est partenaire de Touteladomotique.com



Liens Utiles

Boutiques Partenaires

Liens Utiles

Un don pour TLD ?

Pourquoi faire un don ?

Publicité

Espaces publicitaires à louer
Contactez-nous

Connexion