Téléinfo EDF – Suivi conso de votre compteur électrique

teleinfo_edf_conso_electriqueA l’ère de la domotique et des économies d’énergie, le suivi de la consommation d’électricité dans nos maison devient un point incontournable. Détecter les appareils électriques gourmands, optimiser sa consommation en jouant sur les tarifs heures creuses/pleines, opter pour des ampoules à économie d’énergie et couper ses équipements multimédia lorsqu’on ne s’en sert pas : autant de gestes qui prennent sens à partir du moment où l’on peut en mesurer l’effet sur sa facture EDF.

Dans cet article, nous allons explorer une méthode très simple pour collecter et analyser les informations de notre compteur EDF et les représenter sur un graphique. Comme toujours sur magdiblog.fr, nous utiliserons un Raspberry Pi pour construire ce petit système 🙂

Téléinfo EDF, qu’est ce que c’est ?

Depuis quelques années, EDF a ajouté à ses compteurs électriques domestiques la possibilité de lire à distance les informations enregistrées (consommation heures creuses/pleines, consommation instantanée, intensité max, etc…). Ceci permet, entre autre, de renvoyer les informations vers votre coffret EDF extérieur afin que les agents EDF puissent effectuer le relevé de consommation (et donc établir une facture) sans avoir à accéder à votre compteur à l’intérieur de votre maison. Les compteurs compatibles disposent de deux bornes I1 et I2, permettant de récupérer directement les informations sur un bus UART-TTL 🙂

Pour plus d’informations sur la téléinfo EDF et son mode de fonctionnement, vous pouvez consulter le document « Sorties de télé-information client des appareils de comptage électroniques utilisés par ERDF« , publié par EDF et disponible ici : ERDF-NOI-CPT_02E.pdf

GPIO et optocoupleur

La première étape consiste à créer le petit circuit électronique qui fera l’interface entre le GPIO du Raspberry Pi et le compteur EDF. Il s’agit simplement de « démoduler » le signal sortant des bornes I1 et I2 du compteur,  à l’aide d’un optocoupleur et d’une paire de résistances. Le circuit est ensuite relié a la broche UART du GPIO du Raspberry Pi ce qui nous permettra de récupérer les trames de données du compteur EDF.

Pour cette partie, je me suis largement inspiré de cet article très synthétique : http://lhuet.github.io/blog/2014/01/montage-teleinfo.html

Matériel nécessaire

  • SFH620A-pinoutoptocoupleur SFH620A
  • résistance 1.2 kΩ
  • résistance 3.3 kΩ
  • une carte d’expérimentation ou « breadbord »
  • des câbles « wire jumper »
  • une plaque epoxy

Montage et branchement

Voici un schéma électronique du circuit qui est très répandu sur la toile :

teleinfo_schemaCe qui nous donne un montage très simple à réaliser :

IMG_7732

Voici ce que ça donne avec un petit bout d’epoxy :

IMG_7734

Le branchement sur le port GPIO du Pi est également très simple. On utilise l’alimentation 3,3V du GPIO (fil rouge), la masse du GPIO (fil noir) et la broche 15 RXD (fil jaune).

IMG_7909Pour plus de détails sur le port GPIO du Pi, je vous invite à consulter cet article : http://www.magdiblog.fr/gpio/gpio-entree-en-matiere/

Il ne reste qu’à connecter les deux fils bleus (ou blanc et bleu, que vous pouvez utiliser dans n’importe quel sens) aux bornes I1 et I2 du compteur EDF (généralement en bas à droite) :

IMG_8250Et voilà 🙂 A ce stade, votre Raspberry Pi est bombardé en continu par les infos envoyées par votre compteur EDF 🙂

Récupération des données

Dans un premier temps il convient d’activer le port série du Raspberry Pi :

Dans le fichier /boot/cmdline.txt :

- supprimer les paramètres suivants :
console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

Puis dans le fichier /etc/inittab :

- commentez la ligne suivante (tout en bas du fichier) en ajoutant un # devant :
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Redémarrer votre Raspberry Pi :

shutdown -r now

Enfin, pour créer un périphérique idoine et configurer le port série de manière à récupérer correctement les informations  :

stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

A ce stade, vous devriez avoir un périphérique /dev/ttyAMA0 qui renvoi l’ensemble des données émises par votre compteur EDF.
En faisant un cat sur ce fichier, vous devriez voir défiler vos données de consommation EDF 🙂

cat /dev/ttyAMA0

capture_teleinfoNote : Si vous n’avez que des lignes du type ADCO 012345678945 ?, il se peut que la téléinfo ne soit pas activée sur votre compteur. Il vous suffit normalement de faire une demande à EDF pour l’activer.

Données de la téléinfo EDF

Comme indiqué dans le document « Sorties de télé-information client des appareils de comptage électroniques utilisés par ERDF« , publié par EDF et disponible ici : ERDF-NOI-CPT_02E.pdf, et selon votre type d’abonnement EDF, vous pouvez récupérer les informations suivantes :

  • ADCO : Identifiant du compteur
  • OPTARIF : Option tarifaire (type d’abonnement)
  • ISOUSC : Intensité souscrite
  • BASE : Index si option = base (en Wh)
  • HCHC : Index heures creuses si option = heures creuses (en Wh)
  • HCHP : Index heures pleines si option = heures creuses (en Wh)
  • EJP HN : Index heures normales si option = EJP (en Wh)
  • EJP HPM : Index heures de pointe mobile si option = EJP (en Wh)
  • BBR HC JB : Index heures creuses jours bleus si option = tempo (en Wh)
  • BBR HP JB : Index heures pleines jours bleus si option = tempo (en Wh)
  • BBR HC JW : Index heures creuses jours blancs si option = tempo (en Wh)
  • BBR HC JW : Index heures pleines jours blancs si option = tempo (en Wh)
  • BBR HC JR : Index heures creuses jours rouges si option = tempo  (en Wh)
  • BBR HP JR : Index heures pleines jours rouges si option = tempo (en Wh)
  • PEJP : Préavis EJP si option = EJP 30mn avant période EJP
  • PTEC : Période tarifaire en cours
  • DEMAIN : Couleur du lendemain si option = tempo
  • IINST : Intensité instantanée (en ampères)
  • ADPS : Avertissement de dépassement de puissance souscrite (en ampères)
  • IMAX : Intensité maximale (en ampères)
  • PAPP : Puissance apparente (en Volt.ampères)
  • HHPHC : Groupe horaire si option = heures creuses ou tempo
  • MOTDETAT : Mot d’état (autocontrôle)

Une trame commence toujours par l’étiquette ADCO et se termine par le MOTDETAT.

Chaque message, ou ligne, d’une trame est formé de la manière suivante :

ETIQUETTE espace VALEUR espace CHECKSUM

Seules l’ETIQUETTE et la VALEUR nous seront utiles. La CHEKSUM, ou somme de contrôle sert uniquement à vérifier l’intégrité que la trame.

Données utiles

Avant d’aller plus loin, il convient de faire le point sur les données récupérées. AMHA, seules deux informations sont réellement intéressantes à observer :

  • la puissance instantanée en Watts (permet de voir sa consommation de « courant » au cours de la journée)
  • la consommation d’électricité en Wh servant d’élément de facturation à EDF (permet de voir sa consommation global par jour/mois/année en fonction des périodes tarifaires)

Petit détail technique, ces informations ne sont pas directement disponibles ; il va falloir les déduire des données remontées par la téléinfo. Et c’est là que j’en profite pour remercier mon cher cousin Vincent pour m’avoir éclairé sur la subtilité de la chose. Merci Vincent 😉

En effet, la téléinfo ne vous montre que la puissance apparente en Volt.Ampère (étiquette PAPP dans la trame). Rien à voir avec la puissance active en Watts ! Non monsieur ! Enfin presque ! Nous connaissons tous cette formule de puissance :

P = U x I (puissance en watt = tension en Volt X intensité en Ampère)

Seulement voilà, cette formule n’est valable qu’en courant continu… En courant alternatif, tel que délivré par EDF/ERDF, il faut multiplier ce résultat par un facteur de puissance appelé cos phi… Le problème, c’est que ce facteur de puissance est variable en fonction des appareils électriques qui consomment du courant dans votre maison… Rapport à un problème de phase d’après les experts… ^^ Pour les plus courageux d’entre vous, je vous conseille cet article qui explique très bien le pourquoi du comment de la chose : http://www.energieplus-lesite.be/index.php?id=11495

M’enfin bref, revenons à notre téléinfo. Nous n’avons donc pas directement la puissance active en Watt, mais, nous avons l’intensité instantanée en Ampère ! Il nous suffira donc de multiplier ce nombre par 230V (ou 220V, ou 240V, selon que vous soyez proche ou non du transformateur) pour avoir une puissance instantanée en Watt 🙂 Nous aurons ainsi une idée approximative de la puissance instantanée consommée par tous les appareils de notre maison, ce qui nous permettra par exemple de constater que le chauffe eau fonctionne de telle heure à telle heure, que télé éteinte, on consomme 250W de moins, et que « Oh mon Dieu !!! » une plaque de cuisson ça consomme à MOOOOOOOOORRRRRTTT, 6000 W !!!

En ce qui concerne la consommation quotidienne de courant en Wh, nous devrons également ruser car la téléinfo ne donne que le nombre total de Wh consommés depuis l’installation de votre compteur. Pour avoir la consommation sur une journée, il va donc falloir faire la différence entre le nombre total de Wh consommées ce jour et le nombre total de Wh consommés la veille. Rien de bien méchant donc 🙂

Voyons maintenant comment procéder pour récupérer et traiter ces données à l’aide de scripts PHP et d’une base de données SQLite. Nous utiliserons ensuite la librairie graphique Google Chart pour tracer de jolies courbes de notre consommation d’électricité 🙂

Traitement des données et création d’un graphique de suivi

Le principe général est simple : un script PHP est exécuté à intervalles réguliers (toutes les minutes pour la puissance instantanée, et une fois par jour pour la consommation quotidienne en Wh), récupère les données de la téléinfo puis les stocks dans une base de données SQLite. Dans un second temps, une page web PHP/HTML lit les infos dans la base de données SQLite et affiche les graphiques.

  • teleinfo_func.php : script PHP qui contient les fonctions nécessaires aux différents scripts.
<?php

  $sqlite = 'teleinfo.sqlite';

  //
  //  renvoie une trame teleinfo complete sous forme d'array
  //
  function getTeleinfo () {

    $handle = fopen ('/dev/ttyACM0', "r"); // ouverture du flux

    while (fread($handle, 1) != chr(2)); // on attend la fin d'une trame pour commencer a avec la trame suivante

    $char  = '';
    $trame = '';
    $datas = '';

    while ($char != chr(2)) { // on lit tous les caracteres jusqu'a la fin de la trame
      $char = fread($handle, 1);
      if ($char != chr(2)){
        $trame .= $char;
      }
    }

    fclose ($handle); // on ferme le flux

    $trame = chop(substr($trame,1,-1)); // on supprime les caracteres de debut et fin de trame

    $messages = explode(chr(10), $trame); // on separe les messages de la trame

    foreach ($messages as $key => $message) {
      $message = explode (' ', $message, 3); // on separe l'etiquette, la valeur et la somme de controle de chaque message
      if(!empty($message[0]) && !empty($message[1])) {
        $etiquette = $message[0];
        $valeur    = $message[1];
        $datas[$etiquette] = $valeur; // on stock les etiquettes et les valeurs de l'array datas
      }
    }

    return $datas;

  }

  //
  //  enregistre la puissance instantanée en V.A et en W
  //
  function handlePuissance () {
    global $sqlite;
    $db = new SQLite3($sqlite);
    $db->exec('CREATE TABLE IF NOT EXISTS puissance (timestamp INTEGER, hchp TEXT, va REAL, iinst REAL, watt REAL);'); // cree la table puissance si elle n'existe pas

    $trame = getTeleinfo (); // recupere une trame teleinfo

    $datas = array();
    $datas['timestamp'] = time();
    $datas['hchp']      = substr($trame['PTEC'],0,2); // indicateur heure pleine/creuse, on garde seulement les carateres HP (heure pleine) et HC (heure creuse)
    $datas['va']        = preg_replace('`^[0]*`','',$trame['PAPP']); // puissance en V.A, on supprime les 0 en debut de chaine
    $datas['iinst']     = preg_replace('`^[0]*`','',$trame['IINST']); // intensité instantanée en A, on supprime les 0 en debut de chaine
    $datas['watt']      = $datas['iinst']*220; // intensite en A X 220 V

    if($db->busyTimeout(5000)){ // stock les donnees
      $db->exec("INSERT INTO puissance (timestamp, hchp, va, iinst, watt) VALUES (".$datas['timestamp'].", '".$datas['hchp']."', ".$datas['va'].", ".$datas['iinst'].", ".$datas['watt'].");");
    }

    return 1;
  }

  //
  //  enregistre la consommation en Wh
  //
  function handleConso () {
    global $sqlite;
    $db = new SQLite3($sqlite);
    $db->exec('CREATE TABLE IF NOT EXISTS conso (timestamp INTEGER, total_hc INTEGER, total_hp INTEGER, daily_hc REAL, daily_hp REAL);'); // cree la table conso si elle n'existe pas

    $trame     = getTeleinfo (); // recupere une trame teleinfo

    $today     = strtotime('today 00:00:00');
    $yesterday = strtotime("-1 day 00:00:00");

    // recupere la conso totale enregistree la veille pour pouvoir calculer la difference et obtenir la conso du jour
    if($db->busyTimeout(5000)){
      $previous = $db->query("SELECT * FROM conso WHERE timestamp = '".$yesterday."';")->fetchArray(SQLITE3_ASSOC);
    }
    if(empty($previous)){
      $previous = array();
      $previous['timestamp'] = $yesterday;
      $previous['total_hc']  = 0;
      $previous['total_hp']  = 0;
      $previous['daily_hc']  = 0;
      $previous['daily_hp']  = 0;
    }

    $datas = array();
    $datas['query']     = 'hchp';
    $datas['timestamp'] = $today;
    $datas['total_hc']  = preg_replace('`^[0]*`','',$trame['HCHC']); // conso total en Wh heure creuse, on supprime les 0 en debut de chaine
    $datas['total_hp']  = preg_replace('`^[0]*`','',$trame['HCHP']); // conso total en Wh heure pleine, on supprime les 0 en debut de chaine

    if($previous['total_hc'] == 0){
      $datas['daily_hc'] = 0;
    }
    else{
      $datas['daily_hc']  = ($datas['total_hc']-$previous['total_hc'])/1000; // conso du jour heure creuse = total aujourd'hui - total hier, on divise par 1000 pour avec un resultat en kWh
    }

    if($previous['total_hp'] == 0){
      $datas['daily_hp'] = 0;
    }
    else{
      $datas['daily_hp']  = ($datas['total_hp']-$previous['total_hp'])/1000; // conso du jour heure pleine = total aujourd'hui - total hier, on divise par 1000 pour avec un resultat en kWh
    }

    if($db->busyTimeout(5000)){ // stock les donnees
      $db->exec("INSERT INTO conso (timestamp, total_hc, total_hp, daily_hc, daily_hp) VALUES (".$datas['timestamp'].", ".$datas['total_hc'].", ".$datas['total_hp'].", ".$datas['daily_hc'].", ".$datas['daily_hp'].");");
    }
  }

  //
  //  recupere les donnees de puissance des $nb_days derniers jours et les met en forme pour les affichers sur le graphique
  //
  function getDatasPuissance ($nb_days) {
    global $sqlite;
    $months    = array('01' => 'janv', '02' => 'fev', '03' => 'mars', '04' => 'avril', '05' => 'mai', '06' => 'juin', '07' => 'juil', '08' => 'aout', '09' => 'sept', '10' => 'oct', '11' => 'nov', '12' => 'dec');
    $now  = time();
    $past = strtotime("-$nb_days day", $now);

    $db = new SQLite3($sqlite);
    $results = $db->query("SELECT * FROM puissance WHERE timestamp > $past ORDER BY timestamp ASC;");

    $sums = array();
    $days = array();
    $datas = array();

    while($row = $results->fetchArray(SQLITE3_ASSOC)){
      $year   = date("Y", $row['timestamp']);
      $month  = date("n", $row['timestamp']-1);
      $day    = date("j", $row['timestamp']);
      $hour   = date("G", $row['timestamp']);
      $minute = date("i", $row['timestamp']);
      $second = date("s", $row['timestamp']);
      $datas[] = "[{v:new Date($year, $month, $day, $hour, $minute, $second), f:'".date("j", $row['timestamp'])." ".$months[date("m", $row['timestamp'])]." ".date("H\hi", $row['timestamp'])."'}, {v:".$row['va'].", f:'".$row['va']." V.A'}, {v:".$row['watt'].", f:'".$row['watt']." kW'}]";

    }

    return implode(', ', $datas);
  }

  //
  //  recupere les donnees de consommation des $nb_days derniers jours et les met en forme pour les affichers sur le graphique
  //
  function getDatasConso ($nb_days) {
    global $sqlite;
    $months    = array('01' => 'janv', '02' => 'fev', '03' => 'mars', '04' => 'avril', '05' => 'mai', '06' => 'juin', '07' => 'juil', '08' => 'aout', '09' => 'sept', '10' => 'oct', '11' => 'nov', '12' => 'dec');
    $now  = time();
    $past = strtotime("-$nb_days day", $now);

    $db = new SQLite3($sqlite);
    $results = $db->query("SELECT * FROM conso WHERE timestamp > $past ORDER BY timestamp ASC;");

    $datas = array();

    while($row = $results->fetchArray(SQLITE3_ASSOC)){
      $day    = date("j", $row['timestamp'])." ".$months[date("m", $row['timestamp'])];
      $datas[] = "['".$day."', {v:".$row['daily_hp'].", f:'".$row['daily_hp']." kWh'}, {v:".$row['daily_hc'].", f:'".$row['daily_hc']." kWh'}]";
    }

    return implode(', ', $datas);
  }

?>
    • teleinfo_puissance.php : script PHP exécuté toutes les minutes pour enregistrer la puissance instantanée en V.A et en W.
#!/usr/bin/php5
<?php

header('Content-type: text/html; charset=utf-8');

require_once('/root/teleinfo/teleinfo_func.php');

handlePuissance();

?>
  • teleinfo_conso.php : script PHP exécuté tous les jours juste avant minuit pour enregistrer la consommation en Wh.
#!/usr/bin/php5
<?php

header('Content-type: text/html; charset=utf-8');

require_once('/root/teleinfo/teleinfo_func.php');

handleConso();

?>
  • teleinfo_graph.php : page PHP/HTML qui permet d’afficher les deux graphiques
<?php require_once('teleinfo_func.php'); ?>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

<div id="puissance">
  <div id="chart_div"></div>
  <div id="filter_div"></div>
</div>
<div id="conso"></div>


<script type="text/javascript">
  google.load('visualization', '1.0', {'packages':['controls']});
  google.setOnLoadCallback(drawDashboard);
  
  function drawDashboard() {

    var data = new google.visualization.DataTable();
        data.addColumn('date', 'Date');
        data.addColumn('number', 'V.A');
        data.addColumn('number', 'kW');
        data.addRows([<?php echo getDatasPuissance (5); ?>]);

    var dashboard = new google.visualization.Dashboard(
            document.getElementById('puissance'));

    var rangeSlider = new google.visualization.ControlWrapper({
          'controlType': 'ChartRangeFilter',
          'containerId': 'filter_div',
          'options': {
             filterColumnLabel : 'Date',
             ui : {chartType: 'LineChart', chartOptions: {
                             height : 80,
                             backgroundColor: '#FFF',
                             colors : ['#375D81', '#ABC8E2'],
                             curveType : 'function',
                             focusTarget : 'category',
                             lineWidth : '1',
                             'legend': {'position': 'none'},
                             'hAxis': {'textPosition': 'in'},
                             'vAxis': {
                               'textPosition': 'none',
                               'gridlines': {'color': 'none'}
                             }
                 }}
          }
        });
        
    var lineChart = new google.visualization.ChartWrapper({
          'chartType': 'LineChart',
          'containerId': 'chart_div',
          'options': {
                             title: '',
                             height : 400,
                             backgroundColor: '#FFF',
                             colors : ['#375D81', '#ABC8E2'],
                             curveType : 'function',
                             focusTarget : 'category',
                             lineWidth : '1',
                             legend : {position: 'bottom',  alignment: 'center', textStyle: {color: '#333', fontSize: 16}},
                             vAxis : {textStyle : {color : '#555', fontSize : '16'}, gridlines : {color: '#CCC', count: 'auto'}, baselineColor : '#AAA', minValue : 0},
                             hAxis : {textStyle : {color : '#555'}, gridlines : {color: '#DDD'}}
          }
        });

    dashboard.bind(rangeSlider, lineChart);
    dashboard.draw(data);

  }
  
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  
  function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Date');
    data.addColumn('number', 'Heures pleines');
    data.addColumn('number', 'Heures creuses');
    data.addRows([<?php echo getDatasConso (365); ?>]);
    var options = {
                   title: '',
                   height : 200,
                   backgroundColor: '#FFF',
                   colors : ['#375D81', '#ABC8E2'],
                   curveType : 'function',
                   focusTarget : 'category',
                   lineWidth : '1',
                   isStacked: true,
                   legend : {position: 'bottom',  alignment: 'center', textStyle: {color: '#333', fontSize: 16}},
                   vAxis : {textStyle : {color : '#555', fontSize : '16'}, gridlines : {color: '#CCC', count: 'auto'}, baselineColor : '#AAA', minValue : 0},
                   hAxis : {textStyle : {color : '#555'}, gridlines : {color: '#DDD'}}
              };
    var chart = new google.visualization.ColumnChart(document.getElementById("conso"));
    chart.draw(data, options);
  }


</script>

Pour installer et configurer un serveur web Apache et PHP5. Je vous propose de suivre la procédure décrite dans cette article : PiHomeDashScreen – Installation et configuration. Vous pourrez ensuite afficher cette page PHP/HTML dans votre navigateur.

Résultat

Et voici le résultat pour la puissance instantanée en V.A et W :

teleinfo_edf_conso_electrique

Et le résultat pour la consommation quotidienne heures pleines/creuses en kWh :

teleinfo_edf_conso_kWh_heure_creuse_pleine

Comme toujours, les idées d’amélioration, les remarques et toutes les questions sont les bienvenues en commentaire de cet article 🙂

Dans mon prochain article « RaspberryPi + Razberry + Domoticz : Le combo parfait ! » je vous montrerai comment créer un système domotique complet et à moindre frais pour gérer efficacement votre maison 🙂

MàJ : Un micro module USB prêt à l’emploi est disponible ici : http://hallard.me/teleinfo/. Je ne l’ai pas encore tester, mais cela semble être une solution idéale, quoi que beaucoup plus cher qu’un petit optocoupleur 😉

253 réflexions au sujet de « Téléinfo EDF – Suivi conso de votre compteur électrique »

  1. Sylvain

    Merci pour l’article bien détaillé mais j’avais été un peu plus fainéant et j’avais acheté un module spécifique pour raspberry sur suiviconso.fr

    Pour ce qui est de la consommation instantanée j’avais par contre soumis une modification de la requête sql pour calculer la différence d’index entre 2 mesures plutôt que la consommation en Ampères. En effet mes radiateurs hachent énormément et en fonctions des périodes des radiateurs et de la mesures, je pouvais avoir un facteur 10 entre les 2 manières de calculer.

    Répondre
    1. Olivier Auteur de l’article

      Effectivement, j’observe le même phénomène de hache sur le sèche serviettes de la salle de bain. Mais en prenant une mesure toutes les 60 secondes, les résultats sont plutôt cohérents.

      Répondre
  2. Sylvain

    Bonjour,

    les techniciens qui ont mis en place mon compteur n’ont pas installé le téléreport.
    J’aimerais savoir si je peux mettre à disposition les fils au niveau de ma sonnette afin de ne payer le forfait exorbitant pour qu’ils puissent effectuer la relève.

    Répondre
    1. Olivier Auteur de l’article

      Dans quand date le compteur ? Si c’est après 2003, en théorie vous pouvez demander à activer la téléinfo 🙂
      Ce serait pas mal de lister les « types » de compteurs compatibles avec la téléinfo.

      Répondre
      1. olivier

        Bonjour, je pense que mon précédent commentaire n’a pu vous parvenir. erdf lorsqu’il ont changé mon compteur (à l’extérieur) il y a dix ans ont coupé le fil qui reliait l’ancien compteur à mon préavis EJP (mon chauffage se coupait automatiquement via un délesteur avec possibilité de mettre en marche forcée ) qui se trouve à 20m à l’intérieur de la maison , on me dit que je n’ai pas de téléinformation donc pas possibilité de mettre un gestionnaire d’énergie de type legrand 0 038 21 pour que mon chauffage se coupe automatiquement, or j’ai un petit boitier tempo qui indique la tarification bleu blanc rouge et heure pleine, heure creuse branché sur une prise électrique, cela ne veut-il pas dire que l’information arrive ?
        deuxième chose ou à défaut d’automatisme que j’aimerai mettre en place éteindre ou allumer mon chauffage via mon système domotique mais il faut un module avec fil pilote au niveau du tableau électrique en amont de mon disjoncteur différentiel pour l’ensemble des disjoncteurs du plancher chauffant ou de mon délesteur déjà en place. Pourriez vous me donner quelques conseils, edf me renvoyant sur erdf, erdf sur les électriciens et les électriciens sur edf …

        Répondre
        1. Laurent

          Bonjour,
          Réponse tardive mais je découvre l’article.

          Le module pour la tarification Bleu, blanc et rouge sur une prise fonctionne avec des données sur du courant porteur.
          Certains équipements de domotique fonctionnent comme cela afin d’éviter du câblage mais à l’époque ils ne rendait pas des données toujours fiables.
          Cela n’a donc rien à voir avec les infos passées sur les bornes dédiées à cet effet sur un compteur EDF.
          Aucune possibilité de récupérer quoi que ce soit de ce boitier je pense.
          Il n’y a donc pas de solution puisque le « top EJP » n’était qu’un « drick » passé en autre fréquence sur le 50 Hz du 220V pour le relais de délestage à l’autre bout.
          D’ailleurs le contrat et le compteur ne doivent pas être jeune, cela fait belle lurette qu’EDF ne propose plus de contrat « Bleu, blanc, rouge » au particuliers et encore plus longtemps pour l’EJP.

          Concernant la domotique que ce soit des radiateurs, une chaudière ou du plancher chauffant tout se pilote, ce n’est qu’une question de cout au final.
          Et pour du plancher chauffant très honnêtement il vaut mieux faire appel à un électricien pour au moins implanter les relais de puissance sur le tableau. Et en même temps lui demander de mettre à dispo un bornier en TOR (tout ou rien) qui s’assimilera à une simple télécommande comme un interrupteur.
          Inutile de dire que sur ce type de montage il est impératif que l’électricien vous mette un bornier isolé galvaniquement ou par optocouplage !
          Sinon danger grave d’électrisation, y compris pour le type qui bidouille les fils sur le bornier !!!
          Il existe un article sur le courant porteur, pas très prisé en général et + cher que la HF : http://www.futura-sciences.com/magazines/maison/infos/dossiers/d/maison-domotique-maison-intelligente-1007/page/5/

          Voilà, ça ne résout pas votre problème mais au moins vous savez qu’on ne pilote pas un plancher chauffant comme un simple interrupteur, il y a de l’intensité en max là dedans, donc danger plus important.
          Ensuite il y a des limites au bricolage, si on ne sait pas ce qu’on fait il peut en résulter de très grosse surprises.
          Le courant reste dangereux, peut être une raison pour laquelle le courant porteur n’a jamais autant percé que la radio en transmission sans fil.

          Salutations.

          Répondre
          1. alsaco79

             » cela fait belle lurette qu’EDF ne propose plus de contrat « Bleu, blanc, rouge » au particuliers » : faux, c’est toujours d’actualité…il suffit de le demander.

  3. Ping : Raspberry | Pearltrees

  4. Bruno

    Bonjour,

    merci pour cet article très intéressant. Moi qui envisageait d’installer une pince ampèremétrique…

    J’ai une question : comment transmettre sans fil les données du compteurs EDF à la carte Raspberry si elle n’est pas dans la même salle ?

    Répondre
    1. Olivier Auteur de l’article

      Hum… Pour ma part, j’ai un Raspberry Pi collé à coté du compteur EDF qui transmet les données en WiFi à mon serveur central. Je pense que c’est de loin la meilleure solution (mais cela oblige à avoir un Pi dédié à cela à côté du compteur…). En revanche, tu peux tirer lé fils de la téléinfo sur plus de 80m sans problème. Donc tu peux envisager d’utiliser une gaine proche de ton Pi pour tirer les deux fils de la téléinfo jusqu’au compteur EDF 🙂

      Répondre
      1. Bruno

        Merci pour ta réponse.

        Ton serveur central, est-ce bien ta box adsl ?

        Effectivement je pense installer un Raspberry Pi à côté de mon compteur EDF. Mon problème qui suit est alors de controler le Raspberry Pi, sachant qu’il n’y a pas de place pour mettre un écran/clavier à cet emplacement. Conseilles tu un contrôle par VNC ?

        Par ailleurs, je me demandais si ce montage sera toujours fonctionnel avec l’arrivée du nouveau compteur Linky ?

        Répondre
        1. Olivier Auteur de l’article

          Mon serveur central est un Raspberry Pi qui me sert à piloter l’ensemble de la domotique de ma maison 🙂
          Pour contrôler le Pi à distance il convient d’utiliser SSH. Inutile d’installer une interface graphique…
          Je ne pense pas que le nouveau compteur Linky offrira la même interface téléinfo que les compteurs actuels étant donné qu’il est sensé proposé un système de suivi conso embarqué… A tester 🙂

          Répondre
          1. Nicolas

            Hello Olivier et bravo pour cet article !

            intéressé par ce montage et possesseur d’un ‘ancien’ compteur avec teleinfo, je viens de poser la question à ERDF à propos de l’interface téléinfo du linky pour savoir si linky causera pareil que la spec http://www.erdf.fr/sites/default/files/ERDF-NOI-CPT_02E.pdf. ERDF a été très prompt a me répondre :

            Bonjour,

            Comme évoqué dans votre précédent mail, vous avez raison, je vous confirme que les interfaces sont identiques à celles de votre ancien compteur.

            Cordialement.

            bon à savoir, je vais pouvoir me lancer dans l’aventure 🙂
            merci à toi !

            Nicolas

  5. Bruno

    Serait ce possible d’avoir le Pi du compteur EDF comme serveur central de domotique (je veux également connecter des capteurs de température / humidité (environ 5 de chaque)) ?

    Répondre
      1. Laurent

        Bonjour,

        Pas certain que les sondes acceptent un câble très très long, alors que la téléinfo peut être transportée sur un câble jusqu’à 500 mètres, grandiose.
        Donc à moins de mettre des sondes en HF, ce qui serait très prohibitif en cout total, mieux vaut placer le serveur en fonction des contraintes d’éloignement des sondes.
        C’est mon avis toujours, d’autant qu'(il y en aura 5 de chaque.

        Répondre
        1. Lucky56

          Bonjour,

          Je souhaiterais faire prochainement du télérelevé avec un Raps. Le compteur se trouvera à 80m de la maison. Donc le raps sera à 80m du compteur.
          Quel type de câble utilisé vous ?

          Merci d’avance

          Répondre
    1. Olivier Auteur de l’article

      Dans mon prochain article je décortiquerai mon système domotique basé sur le combo Raspberry Pi + Razberry + Domoticz 🙂

      Répondre
  6. BmdOnline

    Bonjour à vous.

    De mon coté, j’utilise un petit Dockstar à la place du Raspberry, mais le principe de montage est le même.
    Une fois les relevés stockés en base de données, j’en fais un affichage graphique via un mini site web.
    Pour cela, j’ai repris et enrichi un outil d’analyse des données Téléinfo déjà existant.

    Une fois n’est pas coutume, je me fais un peu de pub :
    https://github.com/BmdOnline/Teleinfo

    J’utilise plutôt MySQL que SQLite, mais la transposition ne doit pas être trop difficile.

    Répondre
    1. Jean-François

      Très chouette boulot BmdOnline, et après une bonne journée de bidouille (oui, je ne suis pas informaticien moi ! ;o)), les premiers graphiques de ma conso apparaissent enfin : yessss !
      Bon, me reste la vue de l’onglet ‘Aperçu 24h’ à régler : je ne vois qu’une barre, sans que le programme n’arrive à distinguer les heures de la journée (je suis en format structure.date.php)… ce qui me paraît logique puisqu’à aucun moment on ne spécifie les colonnes contenant les heures ????

      Répondre
  7. Ping : Téléinfo EDF – Suivi conso de votre compteur électrique - Maison et Domotique

  8. Loïc Gerbaud (@chibani)

    Bonjour,
    tout d’abord merci pour ce tuto.
    En cherchant l’optocoupleur que vous recommandez, je suis tombé sur différentes révision (SFH620A-1, SFH620A-2, SFH620A-3 et SFH620A-3x).
    Étant un peu (enfin, plutôt beaucoup) rouillé au niveau électronique, j’ai du mal à saisir les différences entre ces révisions… Est-ce que n’importe lequel peut faire l’affaire ?

    Merci encore 🙂

    Répondre
    1. nickous

      bonjour
      Aucune idée de la différence entre les versions…
      j’ai commande la version en « -1 » sur aliexpress et…çà marche parfaitement.

      Répondre
      1. Olivier Auteur de l’article

        Merci pour l’info nickous 🙂

        A tous les lecteurs, n’hésitez pas à partager votre retour d’expérience si vous avez différente version de ce composant 🙂

        Répondre
  9. Bruno

    Ca y est ! J’ai les données EDF qui défilent dans /dev/ttyAMA0, merci pour ce tuto !

    Maintenant, reste à exploiter les données. Je suis un débutant, et j’aurais besoin de précisions concernant les fichiers php :

    1/ Où sont stockées les données : dans /dev/ttyAMA0 ? Pourtant si je fais un nano ttyAMA0, le fichier est vide

    2/ A quel emplacement doivent être créés les fichiers teleinfo_func.php et autres php ?
    3/ Comment programme t’on le lancement des scripts à intervalle régulier ?

    Merci !

    Répondre
    1. Olivier Auteur de l’article

      Hello,
      /dev/ttyAMA0 n’est pas un « fichier » c’est un périphérique. Mais sous Linux, tout est représenté sous la forme de fichier 🙂
      C’est donc normal que tu n’est rien en essayant d’ouvrir ce fichier avec nano.
      Le périphérique /dev/ttyAMA0 envoi un flux d’information, en faisant un cat, tu devrais voir les infos défiler.
      Tu peux mettre les fichiers PHP où tu veux, de préférence dans l’arborescence d’un vHost Apache.
      Pour le lancement à intervalle régulier, il faut utiliser CRON.
      Plus d’info sur cela ici :
      http://www.magdiblog.fr/boa-pi-homedashscreen/2-installation-et-configuration/
      http://www.magdiblog.fr/domotique/systeme-de-tele-surveillance-abordable-avec-des-raspberry-pi/

      Répondre
  10. Jean-François

    Impec, ça marche avec un compteur « Landis Gyr + », j’ai bien un flux sur /dev/ttyAMA0 !
    Par contre, dans le script teleinfo_func.php, tu ouvres le flux /dev/ttyACM0… normal ou erreur ?
    Merci !
    (j’essaie d’utiliser une base mySQL plutôt que SQLite, mais je rame ;o))

    Répondre
  11. Jean-François

    NB : à priori, il faut ré-activer le flux ttyAMA0 à chaque redémarrage du RPi par la commande stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts ?
    Bon, sinon, j’ai donc bien mon flux actif, mais je n’arrive pas à récupérer quoi que ce soit via PHP, rien ne sort de la fonction getTeleinfo()… sniff ;o)

    Répondre
    1. Olivier Auteur de l’article

      Est ce que vous avez bien des résultats en faisant un cat /dev/ttyAMA0 ?

      Si oui, vérifiez le nom du device dans le script PHP à la ligne :

      $handle = fopen ('/dev/ttyACM0', "r"); // ouverture du flux

      Répondre
    2. Jean-François

      Un pb de droits sur ttyAMA0 bien sûr ! => faire un ‘sudo chmod o+r /dev/ttyAMA0’ pour que les scripts php fonctionnent… désolé de ma question ‘bête’… ;o)

      Répondre
  12. mikebzh44

    Salut et merci pour ce super tuto et les scripts PHP.

    Je les ai bidouillé pour attaquer une base MySQL mais le gros du boulot était déjà fait 😉

    Par contre, j’ai, tout comme tes exemples de graphiques pour le suivi desW et des V.A un décalage d’un jour entre les données du graphique et l’échelle du graphique.

    Dans ton cas, les consommations sont au 14 sept 2014 mais l’échelle du graphique et la partie zoomable indique 14 oct 2014. As-tu réussi à corriger ce problème ?

    Répondre
    1. Olivier Auteur de l’article

      Hello,
      Effectivement, une erreur s’est glissée dans le code, navré. Comment souvent, je rend mon code le plus générique possible et des erreurs peuvent apparaître :/
      Je viens de corriger l’erreur dans l’article au niveau de la fonction getDatasPuissance, dans la boucle while, il faut retirer 1 à la variable month, car en Javascript, les mois vont de 0 à 11, et en PHP de 1 à 12 :/

      Répondre
      1. mikebzh44

        Oui, je me doutais bien que c’étais une histoire d’index commençant à 0 d’un côté et à 1 de l’autre, j’avais moi aussi corrigé le code hier soir 😉

        Sinon, je n’utilise pas tes scripts pour enregistrer les données mais l’exécutable fourni sur ce blog : http://hallard.me/teleinfo-emoncms/

        Mais ton article a été une grande source d’information. Par contre, même avec ta version, je ne me prendrais pas la tête en PHP a calculer les conso journalières. Moi, je le fais directement en SQL :

        SELECT UNIX_TIMESTAMP(date) AS date, MAX(hchc) – MIN(hchc) AS conso_hc, MAX(hchp) – MIN(hchp) AS conso_hp FROM DbiTeleinfo WHERE date > $past GROUP BY DATE(date) ORDER BY date ASC;

        Sachant que je passe par un UNIX_TIMESTAMP(date) car la requête retourne autrement une date au format YYYY-MM-JJ HH:MM:SS et que le javascript plante.

        Répondre
  13. Bruno

    J’avance dans le code, tout en débutant PHP/SQL…
    J’ai une erreur à la ligne 100 et 107 de teleinfo_func.php : la variable $previous n’est pas définie (Undefined variable: previous in …/teleinfo_func.php on line 100).

    C’est vrai que cette variable n’est pas définie auparavant. Est ce la fonction getprevious ?

    Merci pour ta réponse !

    Répondre
    1. Olivier Auteur de l’article

      Hello,
      Comme j’expliquais à mikebzh44, des erreurs se sont malheureusement glissées dans le code :/
      Je viens de corriger l’article au niveau de la fonction handleConso, il faut changer le nom de la variable $result par $previous 🙂

      Répondre
  14. gegeberrry

    Bonjour,
    Une question : ce montage est-il compatible avec la carte razberry ?
    Je me demande s’ils n’occupent pas tous deux les mêmes ports GPIO …

    Merci.

    Répondre
    1. Olivier Auteur de l’article

      Bonjour,
      Je dispose également de la carte Razberry et je puis te confirmer que tu ne peux PAS l’utiliser en même temps que ce circuit de Téléinfo :/
      Au départ j’avais un Pi dédié à la téléinfo à cause de cela, et maintenant j’ai opté pour la version USB de ce circuit Téléinfo : Teleinfostick V3. Cela fonctionne exactement comme le montage que je propose, sauf qu’il est branché en USB. L’ensemble du code que je propose dans cet article fonctionne exactement de la même manière 🙂

      Répondre
  15. Charles

    Bonjour à tous,

    Super article, très instructif, et pour ceux qui souhaitent un montage tout fait, et tout petit à brancher sur un port USB (donc même en brancher plusieurs) vous trouverez la description d’un nouveau dongle ici http://hallard.me/teleinfo

    Joyeuses fêtes à tous

    Répondre
  16. Jihem

    Bonjour
    J’ai une configuration Raspberry-Domoticz dans laquelle je récupère les infos. J’avais déjà remarqué le problème du cos-phi dans les résultats car la télé-info n’envoie pas la consommation instantanée en Wh alors qu’elle est présente sur le compteur mais la consomation apparente en VA. En lisant ton article je suis tenté d’utiliser ton script qui récupère l’intensité instantanée, cependant dans la trame téléinfo cette intensité instantanée n’est pas décimalisée ce qui représente une imprécision de +/- 220W imprécision qui dans mon cas est supérieure à celle constatée avec la puissance apparente (150W environ). qu’en penses tu?
    Cordialement

    Répondre
    1. Olivier Auteur de l’article

      Bonhour,
      Effectivement cela pose problème pour obtenir une mesure précise. En revanche le résultat obtenu de cette manière permet quand même de suivre la consommation de manière relativement fidèle. Pour palier cette imprécision on pourait mesurer l’évolution de la conso en kWh (heure pleine ou heure creuse) toutes les minutes. On aurait ainsi la conso « instantanée » réelle en kWh par minute… Dans tous les cas, il s’agit toujours d’une moyenne et je pense que les courbes seraient très semblables… Ce serait intéressant de comparer d’ailleurs 🙂 L’important selon moi, étant d’avoir une idée de l’évolution de la conso sur une journée et d’ifentifier les postes qui consomment le plus 🙂
      Cela dit, si tu trouve un moyen de mesurer la conso de manière plus précise, je suis preneur 🙂

      Répondre
      1. jihem

        Ce qui faudrait surtout c’est pouvoir récupérer la conso en W/h qui existe bel et bien sur le compteur (index S4).
        J’ai contacté ERDF mais n’ai pas eu de réponses.

        Répondre
        1. Olivier Auteur de l’article

          La conso W/h tu peux la déduire en faisant la différence entre deux valeurs à intervalle régulier 🙂

          Répondre
          1. landsteph

            Bonjour,

            je m’inspire fortement de ce topic pour programmer en C++ mon rpi.

            Donc, tout d’abord merci.

            Ensuite, les VA sont intéressant car ils représentent la puissance passant dans les fils et c’est cette valeur que « voit » un disjoncteur. Mais heureusement pour les particuliers, c’est bien la puissance active (W) qui est facturée. Donc moi, je ne m’occupe pas du IINST (A) du fait de l’imprécision, et je m’occupe uniquement des VA et Wh. En plus, ces valeurs ne sont intéressantes qu’en mode « live » ou lors d’analyse poussées (etude d’impact d’un delesteur par exemple).

            Exemple concret : le IINST chez moi est de 2A sans charge et le PAPP est de 540VA. A noter que le IINST peut donner un delta de 1A soit 230W, et quand l’on cherche à éliminer les watts superflus qui consomment toute l’année, autant être précis, pour moi, 230W, c’est 200€ sur 1 an… La chasse aux veilleuses est ouvertes !

          2. Olivier Auteur de l’article

            Effectivement, le calcul de la puissance en W à partir du IINST est très approximative… Mieux vaut se baser sur les VA et les Wh comme vous le faite.
            Seriez vous intéressé pour partager votre programme C++ sur MagdiBlog.fr ? Si oui, contacter moi via le formulaire de contact.
            Bonne continuation 🙂

          3. Stephane H.

            Bonjour Olivier

            C’est ok après avoir bien chercher et m’être fait des ampoules aux doigts à force de taper du code, cela fonctionne.
            Du coups j’ai avancé et j’ai mis en place la version 4.2 je crois, dispo ici : teleinfo.domaine-test.fr

            Si tu veux y jeter un oeil n’hésite pas.

          4. Olivier Auteur de l’article

            Hey, pas mal du tout 🙂
            Si tu souhaites partager ton travail, ce que je t’encourage à faire, n’hésites surtout pas 😉

          5. Olivier Auteur de l’article

            Du coup, tu calculs les Watts en faisant le différentiel des Wh à intervalles réguliers ?

          6. Stephane H.

            Bien sur, tu veux que je mette toutes les infos et commentaires via ce post ? Je peux t’envoyer une image de ma SD si tu veux non ?

          7. Stephane H.

            Oui Olivier je peux donner toutes mes infos via ce post, tu peux m’envoyer plutôt un mail, je te fais ça au propre. Ensuite tu pourra éventuellement corriger les fautes, au cas où et le mettre en ligne sans problème, ça me fais plaisir
            Concernant le calcul oui j’ai lancé une tâche CRON toute les 30 sec

  17. Ping : RaspberryPi + Razberry + RFXtrx433 USB + Domoticz : Le combo parfait ! | MagdiBlog

  18. Em Jimmy

    Bonjour, je voudrais savoir qu’elle est le compteur électrique relié au Raspberry pi, faut il un spéciale ou cela n’a pas d’impact sur le projet ?

    Répondre
    1. Olivier Auteur de l’article

      Bonjour, comme expliqué dans l’article, tous les compteurs ne sont pas forcément compatibles. Les vieux compteurs ne disposent pas de la teleinfo.

      Répondre
  19. Em Jimmy

    Je suis dans une impasse, j’ai besoin d’un compteur électrique intelligent qui puisse communiquer a distance, les anciens ne me le permet pas. Je me suis renseigné il faut un Linky ou un intelligent, je n’arrive pas à trouvé le prix sur internet. Cette article m’est nécessaire pour une partie de mon projet BAC SIN, donc je voudrais savoir si vous auriez des URL de vente pour un Compteur électrique qui puisse accueillir les différent composant que vous avez mit, sans être trop couteux car on arrive a plus de 140€ pour un Linky ..

    Répondre
    1. Olivier Auteur de l’article

      Hello,
      Le conteur EDF doit être installé par ERDF il me semble. Vous ne pouvez pas le faire vous même il me semble :/
      Je pense que l’opération est relativement onéreuse :/ à mon avis ça va vous coûter plus de 200€ :/
      Si vous y parvenez, merci de nous faire un retour d’expérience 🙂

      Répondre
  20. Emmanuel

    Bonjour à tous,

    commande des composants passée. Reste plus qu’a patienter et tester…

    Quelqu’un a déjà essayer là même chose associé à un module RF ?

    Quelque chose à base d’Atmega328 ?

    Voila c’est juste pour faire avancer le schmilblick 🙂

    Merci en tout cas pour ce tuto et ce blog bien utile.

    Emmanuel

    Répondre
    1. Olivier Auteur de l’article

      Salut Emmanuel,
      Ce serait effectivement pas mal de transmettre les données en RF, cela éviterait d’avoir un Pi accroché au compteur EDF 🙂
      Tiens nous au courant si tu y parviens 🙂

      Répondre
      1. Emmanuel

        Salut à tous,

        comme promis me revoila avec de bonnes nouvelles. J’ai réussi à réaliser un capteur qui va lire les trames téléinfo EDF et qui les transmet via onde radio a mon module RFXcom. Le tout a base d’Arduino Nano 3€ et de module RF à 1€…

        J’ai ajouté décris toutes les étapes sur un tuto ici http://domotique.web2diz.net/?p=11

        merci beaucoup pour ce tutoriel qui m’a permis d’avancer sur mon projet domotique ! J’espère à mon tour pouvoir aider…

        A+

        Répondre
        1. Olivier Auteur de l’article

          Salut Emmanuel,
          Bravo pour ton travail, et content que tu partage tout cela avec nous 🙂
          Bonne continuation,

          Répondre
  21. Charly86

    Hello,
    C’est effectivement possible mais çà ferait quand même un peu usine à gaz je trouve, car çà veut dire qu’il faut un module RF pour l’émission et un autre pour la réception. Et je ne parle pas du protocole RF à implémenter car les trames téléinfo reste hors de portée pour l’envoi en 1 seule fois (généralement les buffers sont de l’ordre de 60 octets).
    Donc rien que la conception et le coût des 2 modules je crois qu’on ne peut pas décemment lutter avec un Pi modèle A a 25€ (qui saura faire d’autres choses en plus). Dessus un module téléinfo à pas cher genre celui-ci http://hallard.me/teleinfo/ ou directement l’opto couplé au Pi comme dans cet article.
    Après un daemon sur le Pi genre celui-ci http://hallard.me/teleinfo-emoncms/ et le tour est joué, vous pouvez alors récupérer les trames teleinfo depuis n’importe quelle machine sur votre réseau sans aucun module supplémentaire. C’est le Pi relié au compteur qui fait emission (et çà peut se faire en Wifi en plus).
    Perso c’est la solution la plus simple à mettre en oeuvre et déjà fonctionnelle, mais çà reste mon point de vue

    Répondre
    1. Emmanuel

      Oui effectivement ça demande beaucoup de boulo et de recherche. Coté matériel j’ai en ma disposition l’opto et les résistances pour le montage ‘filaire’ (enfin c’est en cour d’acheminement)
      J’ai aussi commandé en parallèle un arduino uno qui va me servir a fabriquer des sondes thermo (cf ici http://goo.gl/VhcDUU ) des modules rf émeteur/récepteur à 1€ testé aujourd’hui et fonctionnel. Et les autres élément du montage pour les sondes (résonateur, Atmega…)

      Mon idée c’était de faire comme un peu pour les sonde de température d’idleman en RF mais avec les donnée de télé info.

      Mais effectivement la taille de la trame est ben plus importante !! ET le montage surement plus complexe…

      La solution avec un Raspberry fonctionne bien mais ça me demande dans les 50€ supplémentaires (Raspberry A+ cle Wifi + … )

      Je vais continuer mes recherches, je suis loin d’être expert, donc …

      Si jamais ça avance je vous dirais.. Ou si l’un d’entre vous a une idée…

      A+ et merci pour vos conseils.

      Emmanuel

      Répondre
      1. Charly86

        Emmanuel,

        Pour information je viens de faire une carte qui s’enfiche dans le Pi pour la téléinfo, çà permet de ne pas avoir de fils volant, çà fait plus propre et c’est surtout pas cher. J’ai pris des composants faciles à souder donc la conception est extrêmement simple.
        tout est là https://github.com/hallard/teleinfo/tree/master/PiTInfo
        J’ai commandé des PCB pour tester, j’écrirai un article dès que j’ai tout çà.

        Répondre
          1. Charly86

            Je crois qu’avec çà nous aurons toutes les possibilités offertes 😉
            Au fait tu veux tester le module MicroTeleinfo ? je peux t’en prêter un si tu veux pour le moment j’en ai 3 donc pas de soucis.

          2. Charly86

            Salut,
            Voilà c’est fait, j’ai monté et testé les cartes, ultra simple, çà fonctionne nickel. J’en ai profité pour faire un nouvel article afin d’intégrer ce superbe outil qu’est node red pour traiter de façon simple l’envoi des données vers emoncms ou autres par exemple avec n’importe quel type de carte série téléinfo.
            Je pense que cet article devrait t’intéresser. Il est disponible ici
            http://hallard.me/pitinfo/

  22. Ping : Afficher et analyser les données téléinfo du compteur EDF avec Raspberry PI et NodeJS | Frinux

  23. chris

    Bonjour

    Il y a beaucoup mieux et bien moins chère c’est l’ESP8266.
    Idéal pour les capteurs
    Il va pousser l’arduino vers la sortie, pris en tenaille entre le PI pour les grosses appli et l’ESP8266 pour les petites.

    J’utilise Domticz sur un PI et je remonte mon compteur via un arduino avec une interface Web decrite ici http://www.euvrard.net/teleinfo/

    Je travail pour le remplacer par un ESP8266 pour passer en wifi et supprimer la filasse.

    pour ceux qui n’ont pas de compteur avec téléinfo, il suffit d’en faire la demande a EDF sa coute un déplacement autour de 50 Euro. Sinon on peut en acheter sur Ebay, pour faire du sous comptage

    Autre point Linky aura aussi la téléinfo, pour rester compatible avec les équipements qui utilisent la téléinfo (délesteur, etc..)

    Répondre
  24. Emmanuel

    Sauf erreur de ma part sur le graphique journalier (le plus en haut) il y a une erreur, ce devrait être W en non kW.

    Répondre
  25. Laurent

    Bonjour,

    Article intéressant, complet et bien expliqué.
    Concernant l’intensité et le raisonnement sur la Cos Phi, c’est hors sujet pour un particulier.
    Le développement sur le sujet est fait à raison sur le fond, mais pas sur la forme, cela ne compte pas pour de simples particuliers.
    EDF ne tient compte de l’énergie réactive que sur des installation industrielles, d’ailleurs vous ne verrez jamais apparaitre des kVAr sur vos factures. (kilo Volts Ampère réactif).
    L’article sur le site belge le précise, il donne en exemple un hôpital.
    C’est une forme de pénalisation pour les gros consommateurs de courant pour qui ils faut investir pour amener plus d’énergie en instantané, donc ils les obligent à redresser le Cos Phi pour éviter de véhiculer de l’énergie dans le vide en le taxant.

    Pour les particuliers, peut importe le cos Phi des appareils derrière, qui n’est pas retenu sur ce type d’installation par EDF, ou quiconque d’ailleurs.
    Donc la facture est bien calculée sur la consommation en kW/h sur la base de P=UxI et sans facteur de correction par EDF je pense.
    De toutes façons le calcul brut tiens la route, puisque « juridiquement » le montage Raspberry et son comptage d’énergie consommée ne sera jamais opposable au fournisseur d’énergie.
    Si si, relisez bien vos contrats, avec EDF ou autre !!!

    Voilà juste pour préciser et que ce Cos Phi ne vous donne pas de migraine inutile.

    Salutations.

    Répondre
    1. jihem

      Bonjour
      EDF facture bien (heureusement) des KW/h et d’ailleurs l’index de consommation de la téléinfo reflète la conso en KW/h.
      C’est en cherchant à faire la chasse au petits gaspis; une lampe, un appareil qui restent allumés pendant des heures (voir des jours); que j’ai découvert le phénomène. Alors que le compteur indique 40W (conso minimale) la téléinfo affiche 190w. C’est probablement du à tous les petits transfos de chargeurs ou d’éclairage et les alims diverses qui sont branchés par çi par là. Rien que les plaques à induction affichent une conso de 32W à l’arrêt. Donc difficile de faire des mesures dans ces conditions d’autant que la différence n’est pas toujours la même. Ce qui est dommage c’est que la téléinfo ne fournisse pas la consommation réelle en Watt alors qu’elle est présente sur le compteur EDF.
      Cela dit il n’y a effectivement pas de quoi attraper la migraine 🙂
      et comme dit l’auteur de ce blog:
      « Parce que si on ne se compliquait pas un peu la vie, ce serait beaucoup moins drôle ! »

      Répondre
  26. Moielias

    Salut, merci pour ce superbe article !
    J’arrive a récupérer les trames avec un compteur (mouchard/liberticide) LIKNY

    Je bloque pour récupérer les donnée et les envoyer dans la base sqlite.
    Peut tu nous mettre a disposition les fichiers sous forme de zip ?

    Merci et continue tes article ;D

    HS : > Erdf loue un service pour avoir accès aux graphique de consommation et il est hors de question de payer pour ça (ils facturent les intervention a distance 36€ WTF?!)

    Répondre
    1. chris

      Évidemment qu’il y a une prise teleinfo sur linky. La téléinfo n’a pas été faite pour que nous surveillons notre conso, mais pour commander les délesteurs.
      Si EDF veut changer les compteurs il est obligé de garder la compatibilité, sinon les couteux délesteurs finiraient à la benne. Ce qui serait inaccepatable pour les clients …

      Répondre
  27. mikl44

    Bonjour,
    Je suis en train de réaliser le montage et j’ai une p’tite question : quel genre de cable utiliser pour relier le montage à mon raspberry et a mon compteur EDF ? Quel diamètre ?

    Répondre
  28. Damien Vessiere

    Bonjour Olivier,

    Félicitations pour ce tuto clair et détaillé.

    je vais essayer aussi. Est ce que R1 et R2 sont obligatoire ou « juste » fortement conseillé ( je n’ai que du 10k ohm et du 500 ohm en ma possession…)
    Le SFH620A semble relativement chère sur eBay avec les frais de port … (5€) est ce que le DIP-4 817C Optocoupleur / Optocoupler IC FR (10x a 1€ Sur eBay) fonctionnerait tout aussi bien ?

    Répondre
    1. Olivier Auteur de l’article

      Bonjour,
      Les résistances sont obligatoires mais il y a de la latitude sur les valeurs possibles.
      Pour l’optocoupleur, je ne pas du tout le DIP-4817C, mais j’ai des doute sur le fait qu’il fonctionne exactement comme le SFH620A :/
      Bonne continuation 🙂

      Répondre
      1. Charly86

        Damien,
        Pour l’opto je confirme c’est un spécifique, ne t’avises pas de le changer. Mais 5€ c’est hors de prix, regarde chez conrad tu dois avoir frais de port offerts en ce moment.
        Pour les résistances, sur un PI, je suis à peu prêt certain qu’on peut se passer de R2, je la met pas et çà fonctionne chez moi
        pour R1, je pense que tu peux essayer 10K, 500 ohm risque fortement de ne pas fonctionner.

        Répondre
          1. Mathieu

            Bonjour tout le monde !

            Merci pour ce tuto super clair pour commencer !

            Question bête (je suis une bille en électronique) : je vois que certains ont fait marcher le montage sans R1 ou R2. Pour R1 ok, mais R2 ça me choque un peu : sans R2 on n’est pas en train de faire un court-circuit entre le 3V3 et GND quand l’opto est passant ???

            D’autre part, chez moi le PI est très instable (voire ne démarre pas) dès que je connecte le 3V3 au montage … et je commence à sécher. Des idées ? Des conseils d’investigation ?

            Merci !
            Mathieu.

          2. Charly86

            çà dépend de la tolérance des compteurs, sans R1 oui ça peut marcher bien sûr mais tu ne pourra pas mettre un autre produit sur la sortie téléinfo je pense car on est complètement hors spec.
            R2 (pull-up) n’est pas nécessaire, le PI en a déjà une en interne 😉
            Si tu veux un truc conforme à la spec et qui marche à tous les coups tu peux lire cet article et ceux associés https://hallard.me/pitinfov12/ le montage fonctionnel y est décrit et les shield montés dispos.

        1. Damien Vessiere

          Bonjour Olivier, bonjour Charly,
          Merci pour vos réponses.
          Du coup est ce que tu sais ce qui fait la spécificité du SFH620A ?
          J’ai regardé il est bien à 1 € sur Conrad mais il y a 7 € de frais de port et malheureusement je n’ai que cela a acheter pour le moment… (gratuit a partir de 40€ d’achat)
          J’essayerais avec 10K sur R1, sauf si je trouve d’ici là une petite boutique d’électronique sur Clermont-Fd qui ferrait mon bonheur sans me ruiner 🙂

          Répondre
          1. Charly86

            Damien,
            tes questions m’ont replongé dans un vieux projet en test, le shield minimal teleinfo pour Raspberry Pi faible coût . Tu trouveras un article complet ici
            http://hallard.me/pitinfo/
            Et si çà t’intéresse il me reste des cartes de test

          2. Damien Vessiere

            Charly,
            Bien intéressant ce petit shield, et bien abordable a une dizaine d’euro. J’ai trouvé un magasin d’informatique sur Clermont Fd, il vas me vendre l’opto 2,5 € et je vais même pouvoir lui acheter les résistances a l’unité pour 15 cent.
            J’ai un header sur mon gpio brancher sur une breadboard qui gere température et afficheur, du coup je voulais éviter l’utilisation d’un shield pour le moment, mais si mon montage ne fonctionne pas, je reviendrais vers toi 🙂

  29. Gérard

    Bonjour olivier,
    Alors as tu fais ton article avec ton combo Raspberry Pi + Razberry + Domoticz ? je serais interessé, je débute
    merci

    Répondre
  30. Stéphane H.

    Bonjour
    Je voudrais déjà remercier l’auteur de ce blog ainsi que tous les participants. Et aussi désolé de faire le gros boulet en posant des questions peut être stupide pour vous.

    Pour info j’attends les pièces commandé pour relier le compteur au Rasp.

    Je suis en train de configurer mon Raspberry Pi et étant très novice en PHP je requiert votre aide.

    J’ai effectué toutes les étapes précédentes, j’ai créé mes 4 fichier php que j’ai mis dans le répertoire /var/www

    J’ai bien paramétré le CRON (à titre d’exemple pour un seul fichier => 1 * * * * /var/www/teleinfo_conso.php). J’ai fais de même pour les 3 autres fichiers PHP.

    Lorsque je lance le navigateur de mon PC et que je tape l’IP de mon RPi, j’obtiens un affichage de la sorte en résultat :

    Index of /
    [ICO] Name Last modified Size Description
    [ ] teleinfo_conso.php 01-May-2015 10:34 145
    [ ] teleinfo_func.php 01-May-2015 10:33 6.8K
    [ ] teleinfo_graph.php 01-May-2015 10:35 3.8K
    [ ] teleinfo_puissance.php 01-May-2015 10:34 150

    Apache/2.2.22 (Debian) Server at 192.168.1.239 Port 80

    Est ce juste comme résultat ? ou ais je fais une erreur ?

    Que dois je faire ensuite en attendant la livraison des pièces commandées ?

    Merci pour votre retour

    Répondre
  31. Stéphane H.

    J’ai relu et corrigé pour les script PHP : seulement 2 à lancer, 1 toute les minutes et l’autre avant minuit. Désolé

    Répondre
  32. Ping : Téléinfo EDF Arduino sans fil avec RFXCOM | Domotic and stupid geek stuff

  33. Stéphane H.

    Bon j’ai reçu le matos ce jour, tout est monté. En faisant un cat /dev/ttyAMA0 j’ai bien les infos qui défilent. COOL

    Par contre ma page graph reste désespérément blanche, rien ne s’y trouve même pas un graph vide. J’ai bien vu un post avec le soucis de droit sur le fichier, j’ai fait le chmod mais rien n’y fait et je ne sais pas où est ma boulette.

    J’ai bien corrigé aussi le nom du périphérique AMA0 et non AMC0.

    Combien de temps faut il attendre avant de voir les résultat dans la page graph ?

    Sinon je pense que mon script se lance bien toute les minutes car j’ai bien un résultat de fichier log en sortie (avec rien à l’intérieur).

    Avec vos expériences acquisent, qu’en pensez vous ? Seriez vous m’aiguilliez pour trouver mon erreur ?

    Merci d’avance

    A bientôt

    Répondre
    1. Olivier Auteur de l’article

      Hello Stéphane,
      Si tu vois bien les infos qui défilent, c’est déjà bon signe 🙂
      Il doit simplement y avoir un problème avec PHP. As tu bien installé les paquets « apache2 php5 php5-cli php5-sqlite » ?
      Bon courage et bonne continuation 🙂

      Répondre
  34. Ping : Teleinfo compteur EDF | Pearltrees

  35. David

    Bonjour, j’ai également une page graph vide, malgrés l’intall de apache php sqlite …
    Avez vous trouvé la solution ?
    Merci

    Répondre
  36. David

    petite piste : le crontab, j’ai fait un vi sur crontab et ajouter les deux lignes pour puissance et conso, mais j’ai un doute avec le sudo crontab -e ?

    Répondre
  37. GRUEL Olivier

    Bonjour Olivier

    Encore merci pour ton excellent travail sur cette plateforme RASPBERRY.

    Je me lancerai bien dans ce projet, et j’ai deux questions
    1) J’ai 6 tarifs d’électricité, avec un compteur tempo, est-ce que le relevé va fonctionner également ?
    2) ton montage électronique est supersimple, est-ce que l’on peut l’interfacer ( d’apres toi ) avec http://openenergymonitor.org/ ?

    D’avance, merci
    Olivier

    Répondre
    1. Charly86

      Olivier,
      Bien sûr que çà s’interface avec opennergymonitor (emoncms), tu trouveras un article détaillé pour envoyer les informations vers emoncms http://hallard.me/pitinfo/
      Il faudra peut-être modifier les scripts (et encore je suis pas sur) pour ton contrat tempo (mais je peux t’aider à le faire, çà m’intéresse de rendre le script compatible tout contrat)

      Répondre
  38. Lucien

    Bonjour.
    Un cat /dev/ttyAMA0 lit bien une trame par seconde.
    Il faut dans mon cas environ 30 seconde pour avoir une trame complete via un fopen php ce qui est dommage pour faire un graph d’analyse de la conso instantanée.

    Je tente une lecture en php via la ligne suivante mais je ne récupère rien :
    echo exec(« timeout –foreground –preserve-status 5 head /dev/ttyAMA0 », $output);

    Une idée ?

    Merci

    Répondre
    1. Olivier Auteur de l’article

      Bonjour, c’est bizarre que la lecture du flux en PHP mette 30 secondes… Avez vous des logs de debug pour voir ce qui se passe pendant ces 30 secondes ?

      Répondre
      1. Lucien

        En traçant en détail la function getTeleinfo (), on voit que les 30 secondes sont passées sur le :
        fclose ($handle); // on ferme le flux

        En supprimant le fclose le temps est perdu en fin de script…

        Etrange

        Répondre
  39. Cyrille

    Bonjour, et merci pour cet article.
    Je vais donc me lancer dans ce projet de téléinfo.

    Première étape : l’achat des composants.
    Au niveau des résistances, plusieurs puissances dissipables sur le marché : 0,6w / 3w, …
    Une valeur à préconiser ? ou d’une manière générale, « aucune importance  » ?

    Même question pour l’octocoupleur. Il existe plusieurs modèles : SFH620-2 / SFH620-3

    Merci pour vos retours !

    Répondre
    1. Charly86

      Cyrille,
      0,25W est suffisant, mais qui peut le plus peut le moins, donc si t’as des 0.5W ou plus en stock c’est pas gênant, çà prend juste plus de place et c’est plus cher.
      Pour l’opto je ne savais même pas qu’il existait des version SFH620-3, çà devrait fonctionner, mais aucune certitude. Après c’est une histoire de package, perso je prends tjs des 620A-2 (version SMD) que tu peux mettre en SMD mais aussi en soudant si ton PCB est « a trous », donc çà passe toujours 😉
      En revanche sur une breadboard, il te faut la version avec les papates (DIP)
      tu trouveras même des informations de montage ici http://hallard.me/pitinfo/

      Répondre
      1. Cyrille

        Bonjour Charly,
        Les 3w sont bien plus chers que les 0,5w en effet.
        40 centimes dans un premier cas l’unité, contre 30 centimes un lot de 10 pour le second 🙂
        Pour l’octo-coupleur, je vais bien prendre une version DIP car je vais effectivement le monter sur une breadbord.
        Merci pour tout !

        Répondre
  40. Antoine

    Bonjour, merci pour votre article !

    je m’intéresse à la téléinfo mais je me demande comment vérifier la compatibilité de mon compteur. Il s’agit d’un Schlumberger A14C4, quelqu’un aurait il déjà tenté l’expérience sur ce modèle ?

    Répondre
    1. Olivier Auteur de l’article

      Bonjour,
      En principe, si ce compteur à moins de 10 ans, il devrait être compatible. Mais rien de certain malheureusement :/
      Merci de nous faire un retour si vous obtenez plus d’information sur votre modèle de compteur 😉

      Répondre
      1. Antoine

        Il semble dater de 1998… (d’après ce que je peux lire sur le boitier)
        J’ai contacté EDF hier pour vérifier la compatibilité, l’opérateur m’a indiqué que la téléinfo était activée chez moi. Seul souci : le capot du boîtier est plombé, je n’ai donc pas accès aux prises :/
        A priori, il faut faire intervenir un agent (31€ de déplacement) pour obtenir l’accès… Qu’en pensez vous ?

        Répondre
        1. MikeBZH44

          Tu peux faire une photo du compteur ? Sur le mien, seul le capot haut est « plombé » mais les fiches de téléinfo sont sous le capot bas.

          Répondre
        2. Olivier Auteur de l’article

          Si la téléinfo est activée, en principe, il n’y a pas besoin de faire intervenir un technicien.
          Toujours en principe, les bornes I de la téléinfo devraient être accessibles sur une partie non plombée du compteur.
          Cela dit, il existe tellement de références de compteurs EDF qu’il est difficile de trouver un cas général :/

          Répondre
          1. Olivier Auteur de l’article

            Hello,
            LE compteur a l’air récent, en principe la téléinfo devrait fonctionner. Par contre, effectivement, il faut trouver les bornes I :/

          2. Mikebzh44

            Moi, sur mon compteur, seul le capot du haut est plombé. Je suppose que c’est l’essentiel pour ne pas pouvoir bidouiller ta conso. Celui du bas, ca doit être du zèle de la part de l’installateur.

          3. Olivier Auteur de l’article

            Pareil pour moi, seule la partie du haut était plombée.

  41. Charly86

    Chez moi c’était comme çà et en touchant le plomb du bas je me suis rendu compte qu’il était déja « déplombé ».
    Quoi qu’il en soit, en bas tu as la téléinfo mais aussi les contacteurs du relais « HC/HP » que tu (toi ou un electricien qualifé) es censé pouvoir changer au gré de tes besoins (ballon eau chaude, …) donc çà de doit pas être plombé à mon sens, sinon comment il fait l’électricien pour travailler !!!
    Pour la petite histoire chez moi, ils avaient mal branché le ballon d’eau chaude sur ces contacteurs le ballon était alimenté en permanence !!!

    Répondre
    1. Olivier Auteur de l’article

      Ah ^^ c’est l’occasion de demander un changement de compteur à EDF

      Répondre
        1. Olivier Auteur de l’article

          Si le compteur est « dangereux » humage que c’est à eux de le prendre en charge. En présentant la chose comme quoi vous avez découvert que votre compteur est dangereux, ils devraient vous proposer un remplacement.

          Répondre
  42. TiFred

    Bonjour, super ça a l’air d’être un beau projet,
    est-ce que le teleinfo permet aussi de connaitre le voltage?
    merci de vos réponses

    Répondre
    1. Olivier Auteur de l’article

      Hello,
      En principe le voltage se situe toujours entre 220 et 240 V selon où votre maison se trouve.

      Répondre
  43. Charly86

    Bonjour à tous,
    Pour information j’ai eu des soucis de décodage de téléinfo avec un SFH620 et le montage dit « classique » connecté sur une carte à base d’ESP8266. Du coup j’ai pris mon oscillo et fait des tests.
    Bien que le SFH620 fonctionne avec la plupart des périphériques (dont le Pi), je préconise hautement dans vos futurs montages de changer l’opto par un LTV-814 de chez LiteOn (en plus il est moins cher)
    Vous trouverez toutes les explications et les captures explicatives sur ce billet dédié.
    http://hallard.me/demystifier-la-teleinfo/

    Répondre
    1. Olivier Auteur de l’article

      oui 🙂 j’ai d’ailleurs un article à terminer sur une autre méthode encore 😉

      Répondre
  44. brice scofild

    Bonjour à tous je suis nouveau je viens pour en savoir plus sur le fonctionnement des compteurs intelligents ainsi que leurs montages electrique et technologique. Merci pour votre attention.
    présentation: brice scofild ondoua élève ingénieur des travaux des télécoms au cameroun en premier année.

    Répondre
  45. Ping : Mesure de consommation énergétique en open source – téléinfo EDF et chauffe eau | [macrostuff]

  46. wilfried

    bonjour olivier
    étant un ultra novice dans la programmation ,j’ai parcouru votre tuto de Aà Z scrupuleusement. le montage électronique marche la raspberry et bien connecter par wifi sur ma box en mappant l’adresse mac en ip pour que par la suite avec putty , je puisse prendre la main sur mon pc .

    en relisant les postes du forum j’ai bien changer les droit du port ttyAMA0 je lance bien à chaque reboot la ligne stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts pour ouverture du flux.

    en faisant sudo cat /dev/ttyAMA0 j’ai bien les infos qui s’affichent.

    les scripts php sont dans le dossier /hom/pi/teleinfoPHP/

    je voudrais savoir si:
    1)
    dans les scripts teleinfo_puissance et teleinfo_Conso est ce que j’ai bien fait de changer la ligne 6 : require_once(‘/root/teleinfo/teleinfo_func.php’);

    en : require_once(‘/home/pi/teleinfoPHP/teleinfo_func.php’);

    2)
    faut-il creer un fichier : teleinfo.sqlite
    manuellement en faisant: touch
    ou est ce que c’est le script qui le crée de lui même.

    pour se qui est de crontab j’ai bien mis teleinfo_puissance toute les minutes et teleinfo_Conso à 23h58 .

    je vous remercie d’avance pour vos réponses.

    à très bientôt

    Répondre
    1. Olivier Auteur de l’article

      Hello,
      1) La réponse est oui si vous avez bien déplacé le fichier à cet endroit 🙂
      2) en principe le script va créer le fichier tout seul mais il peut être commode de le créer avec un Touch et de changer les droits manuellement pour être certain que les droits en écriture sont ok 🙂

      Bonne continuation 😉

      Répondre
      1. padid53

        bonjour Wilfried,

        pour compléter les réponses d’Olivier :
        1/ oui et également dans le script teleinfo_graph.php
        pour le crontab mettre 00h 00mn car il est précisé :
        <>
        dans la fonction HandleConso de teleinfo_func.php

        bonne continuation

        Répondre
        1. wilfried

          bonjour padid53

          tout d’abord merci pour vos remarques.

          j’ai passé au crible le fichier teleinfo_graph.php avec nano mais il y a nul part un e ligne concernant l’adresse spécifique ou il se trouve.
          j’ai mis tout les fichiers et le dossier en chmod 777
          pour se qui est du fichier teleinfo_puissance quand je le lance il m’indique cela:

          -bash: ./teleinfo_puissance.php : /usr/bin/php5^M : mauvais interpréteur: Aucun fichier ou dossier de ce type

          donc j’ai fait un sudo apt-get update

          pour le crontab ne faudrait-il pas mêttre plutot php5 au lieu de root

          /1 * * * * root /home/pi/teleinfoPHP/teleinfo_puissance.php
          00 00 * * * root /home/pi/teleinfoPHP/teleinfo_conso.php

          Répondre
          1. padid53

            @wilfried
            dans le script teleinfo_graph.php on indique en ligne 1 :
            require_once(‘teleinfo_func.php’);
            il est souhaitable d’indiquer le chemin complet :
            /home/pi/teleinfoPHP/teleinfo_func.php
            pour s’assurer de l’appel des fonctions :
            getDatasPuissance (5) et getDatasConso (365) un peu plus loin.

            Dans le crontab il faut indiquer php pour lancer les scripts :
            * * * * * php /home/pi/teleinfoPHP/teleinfo_puissance.php
            0 0 * * * php /home/pi/teleinfoPHP/teleinfo_conso.php

            tu peux vérifier la création et la mise à jour de la base teleinfo_sqlite par : ls -l grâce à la date+heure du fichier.
            Encore mieux, en ayant accès via le réseau au Rpi, tu peux utiliser SqliteBrowser sous Windows pour visualiser les datas enregistrées dans cette base au fur et à mesure.

            Personnellement, les 2 tables de la base se remplissent correctement mais pas d’affichage des graphiques !
            je cherche encore ….

            A bientôt

          2. wilfried

            et je viens de voir à la ligne 10 du code teleinfo_func.php il y a un soucis à l’ouverture du flux il faut remplacer : /dev/ttyACM0 par /dev/ttyAMA0

            si j’arrive à avoir le graphique je te tiens au courant

            a+

  47. wilfried

    salut padidi 53

    j’ai repensé au soucis de voir tes graphiques. mais es tu allé voir dans le dossier de de la raspberry : /var/www/

    si il y a a eu des pages de stocké ? car je pense que c’est ici qu’elles vont être

    a+ et à bientôt

    Répondre
  48. wilfried

    Bonsoir Olivier

    pour générer le graphique est ce qu’il faut faire appelle à crontab pour lancer teleinfo_graph.
    car en examinant le fichier teleinfo_func il n’y a nul part une ligne de code qui l’utilise

    ne faudrait-il pas mettre un chabang au tout début du code? alors que tout les autre l’ont comme : #!/usr/bin/php5

    le code: teleinfo_graph est-ce qu’il ne fait que d’afficher une page HTML avec le graphique ou

    est ce qu’il le fait puis l’enregistre dans un dossier ( sous linux debian de raspberry)
    chemin : /var/www
    ce qui permettrait de la consulter ultérieurement.

    Répondre
    1. Olivier Auteur de l’article

      En principe ce script se contente de générer le graph et de l’afficher lorsqu’il est appelé à travers un navigateur. Nul besoin de crontab 😉

      Répondre
  49. Tarmac

    Salut,

    Je suis sacrée novice en informatique, mais j’ai voulus tenté de relevé mes conso grâce à votre article.
    Le problème que j’ai c’est que je n’obtiens rien lorsque je fait cat /dev/ttyAMA0. Je suis bloqué dans le cat et je dois faire ctrl + Z pour en sortir.
    J’ai bien mis la commande stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts dans /etc/rc.local avant « exit 0 ».
    J’ai bien activé l’UART en passant par raspi-config.
    Je suis passé en ssh pour faire tout ça, et j’utilise un PI 2.
    Est ce un problème de montage (j’utilise des câble de 6 mètre pour le son qui supporte jusqu’à 1 Ampère ) ?
    Ou mon teleinfo n’est pas actif ? (mais dans ce cas ne devrais je pas obtenir tout de même quelque chose)
    Ou je me suis planté dans la config du raspberry PI2 ? (je n’ai effacé que « console=ttyAMA0,115200″ dans /boot/cmdline.txt, je n’avais pas  » kgdboc=ttyAMA0,115200″ dans ce fichier)

    Merci 🙂

    Répondre
    1. Olivier Auteur de l’article

      Bonjour,
      C’est possible que la télé info ne soit pas activée sur votre compteur.
      En principe la longueur du cable ne devrait pas poser problème tant qu’on dépasse pas plusieurs dizaines de mètres.
      Difficile à dire ce qui peut poser problème :/
      Je vous propose de refaire toutes les manip dans l’ordre et de vérifier que tout fait bien ce qu’il doit faire :/
      C’est l’ennui avec la teleinfo, on peut difficilement debugger :/
      Bon courage et bonne continuation 🙂
      Si vous trouvez le problème n’hésitez pas à partager 😉

      Répondre
      1. Tarmac

        Merci pour la réponse rapide !
        Je pense que vais voir avec edf pour l’activation de la teleinfo, elle n’est peut-être pas faite.

        Répondre
        1. Charly86

          Bonjour,
          Attention j’ai déjà vu des choses bizarres avec la commande cat
          je préconise plutôt un picocom (l’installer avec sudo apt-get install picocom) et ensuite
          picocom -b 1200 -d 7 -p e -f n /dev/ttyAMA0
          ctrl-A puis ctrl-x pour sortir de picocom ensuite (ouais çà s’invente pas)

          Autre point, il arrive que le montage avec l’opto ne fonctionne pas toujours (ça dépend des compteurs) pour tester, supprimer la résistance R1 de 1K2 du montage et mettre un fil à la place, quelques explications ici https://hallard.me/demystifier-la-teleinfo/
          J’ai modifié le montage pour intégrer le transistor sur la carte PiTinfo, maintenant non seulement c’est conforme à la spécification EdF mais en plus, ça fonctionne à tous les coups.
          ici pour le détail de l’article https://hallard.me/pitinfo/ (mais les nouvelles cartes ont le transistor)

          Répondre
          1. Tarmac

            Merci pour votre réponse !
            Mais malheureusement cela ne fonctionne toujours pas, il n’y rien qui s’affiche lorsque je lance picocom, et lorsque je remplace la résistance de 1.2kohm par un fil.
            Comme mon immeuble a été livré en 2008 j’espérais que ma teleinfo soit activé (j’ai lu que les compteurs produits à partir de 2007 étaient livrés avec la teleinfo activé), mais ce n’est peut être pas le cas. Ou peut être que je devrais passer avec un transistor (si je comprend bien sur votre montage vous utilisez les deux alimentation 3.3V du GPIO, ou on peut tout relier à une seul ?).

            Apres j’utilise « sudo » pour faire passé à peu prés toute mes commande. Cela peut t’il avoir un impact sur le cat ou picocom ?

            Merci en tout cas 🙂

          2. Gipet

            Salut
            Moi j utilise un convertisseur tic USB et cela fonctionne nickel
            Mais si tu utilises le port série du raspberry
            Est il active dans raspi-config ?

  50. wilfried

    1: tu fais en ligne de commande : sudo nano /boot/cmdline.txt
    – supprimer les paramètres suivants :
    console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

    2: tu fais en ligne de commande : sudo nano /etc/inittab
    – commentez la ligne suivante (tout en bas du fichier tu utilise les flèche directionnelle) en ajoutant un # devant :
    #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

    3: tu fais en ligne de commande : sudo shutdown -r now
    – cela fais redémarrer ta raspberry pour prendre en compte les nouvelles modifications

    4: tu reviens sur le terminal en ligne de commande et tu fais:

    stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

    5: tu fais en ligne de commande :

    cat /dev/ttyAMA0

    et normalement tu vas voir les données de ton compteur défiler. pour arrêter tu fais CTRL+D

    si il ya une coupure de courant comme je peux avoir car les fils edf se baladent dans les acacias.

    il faut à chaque fois refaire la commande pour ouvrir le port :
    stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

    si tu ne veux pas te prendre le choux tu peux aller dans :

    sudo nano /etc/inittab (si je me rappel bien de se que j’ai fais  » me reprendre si je dis des bétises »)

    et en bas tu fichier tu colle cette commande:
    stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

    comme ça à chaque fois qu’elle redemarre et ouvre le port aussi.

    a+ et good luck

    Répondre
    1. Tarmac

      Youhou ça marche !!!!!
      Après avoir appris par cœur les différente commande, vérifier si les lignes de la teleinfo que j’ai tiré dans mes gaine ne c’étaient pas abîmées et fait un cour-circuit, j’ai fini par installer WiringPI pour voir quel est le signal qui arrivé dans mon port RxD. (Je n’ai pas de voltmètre)
      Ayant toujours 0, je me suis que je devais avoir un signal mais trop de tension. Puis j’ai enlevé quelque composant, testé différent truc, pour finalement me rendre compte comme un idiot que mon optocoupleur était tout simplement monté a l’envers !!!! ( Ma connaissance en électronique c’étant arrêté en cour de techno en 3eme, je n’y connaissais rien à ce genre de bidul, donc je m’étais renseigné avec wikipedia et j’aurai du vite comprendre qu’il y avais un sens, d’ou mon idiotie)

      Me reste plus que la partie software et le tour est joué (c’est vite dit 😉 )

      En tout cas merci de votre aide !

      Répondre
  51. wilfried

    bonjour olivier

    maintenant l’archivage de donnée dans mon sqlite marche nickel.

    pourrais tu nous faire un petit tuto pour voir la démarche comment faire pour afficher les graphiques.
    car aujourd’hui c’est sur cela que je coince aujourd’hui.

    merci d’avance pour ta réponse.

    Répondre
  52. wilfried

    bonsoir
    après voir pris le taureau par les cornes je suis arrivée à mes fins. et oui je suis arrivé a sortir le graphique tant désirer depuis plus d’un mois.
    donc il faut mettre le fichier teleinfo_graph.php dans /var/www/.
    et en fin pour le voir apparètre ouvrir une pas web et mettre l’adresse ip de votre serveur suivis du nom du fichier à visualiser. exemple http//192.168.1.149/téléinfo_graph.php
    bien sur il faut avoir au préalable instaler apache2 et php)

    et je me suis aperçu que le mois donné était en avance par rapport à la date à l’instant T.
    donc pour olivier petite précision sur la correction de son code c’est que le -1 que tu à mis entre le « ] » et « ) » n’est pas à le bonne place il faut le repoussée entre le « ) » et « ; » et la le mois est bon.

    j’ai une petit soucis c’est le conso ou il n’y a rien du tout donc je vais me re-pencher sur le problème et si je viens à trouver je vous ferais par de mes trouvailles.

    à très bientôt

    Répondre
  53. Dough

    Bonjour,

    tout d’abord merci pour toutes ces précieuses informations !

    J’aimerai effectuer ce montage, j’ai un Raspberry avec Jeedom + une carte Razberry.

    Et c’est cette carte qui me pose problème car elle utilise déjà le port 15 (RXD) du Raspberry.

    Est-il possible, via une carte USB RS232 TTL (exemple : http://www.ebay.fr/itm/291591276021) d’obtenir les informations téléinfo par USB ?

    Il faudrait :
    – connecter la voie 3,3V de la carte USB sur la voie 4 de l’opto à travers la résistance de 3,3kΩ
    – connecter le voie RX de la carte USB sur la voie 4 de l’opto
    – connecter la masse de la carte USB sur la voie 3 de l’opto

    Ce type de montage a-t-il déjà été testé et validé ?

    Encore merci.

    Répondre
    1. Olivier Auteur de l’article

      Bonjour,
      J’ai eu exactement le même problème : le module Razberry utilise le port RXD du GPIO.
      Pour ma part j’ai fini par acheter le module teleinfo-stick en USB.
      Je n’ai pas tester le montage que tu proposes et je ne pensés pas que cela fonctionne dans l’état malheureusement :/

      Répondre
      1. Dough

        Merci pour vos réponses !

        Je vais tester ce montage alors, je ne pense pas qu’il y ai beaucoup à perdre à tester ça ^^

        Je vous tiens informé d’ici la fin du mois le temps de recevoir tout ça !

        Répondre
        1. Olivier Auteur de l’article

          Tout à fait d’accord, il n’y a pas beaucoup à perdre à tester tout ça ! On attend ton retour d’expérience avec impatience 🙂

          Répondre
        2. Dough

          Salut à tous !

          J’ai pu procéder aux tests : ça fonctionne.

          MAIS… il faut que je reparamètre le « tty » régulièrement avec la commande suivante : stty -F /dev/ttyUSB0 1200 sane evenp parenb cs7 -crtscts

          En gros la commande cat /dev/ttyUSB0 réçoit bien les lignes de téléinfo, mais au bout d’un moment ça se coupe… plus rien… il faut refaire le « stty » pour que ça reparte.

          Voici mon montage sur breadbord pour le moment : http://i.imgur.com/gRrHfkF.jpg

          Est-ce que quelqu’un aurait une piste pour stabiliser la chose ?

          Répondre
  54. wilfried

    Bonjour

    est ce qu’il y aurait quelqu’un qui a pu trouver pourquoi le graph de la conso ne marche pas.

    moi après analyse de mon sqlite je me suis aperçu que la colonne « hchp » il y a des fois des manque ( voir image à cette adresse https://drive.google.com/open?id=0ByVs1Bs1jaEyNTZvdkh1Y25nWGM ) alors que si je fais echo à chaque fois cette valeur et bien présente.

    dans l’étiquette de la courbe il y est marqué Kw alors que c’est des Watt comment peut- on renommer celle-ci. j’ai essayé de le renommer dans le fichier teleinfo_graph mais cela ne m’affiche plus le graph.

    en vous remercient d’avance pour vos réponses
    et à très bientôt

    Répondre
  55. AIRC

    Bonsoir,

    Tout d’abord un grand merci pour ce tuto de grande qualité.

    Pour mon premier contact avec un Rasp Pi je voulais un sujet concret, aussi j’ai décidé de me lancer avec ce tuto.

    Tout marche bien une fois qu’on a lu les 178 commentaires avec les trucs et astuces des uns et des autres (chemin complet pour les includes, droit d’accès aux fichiers, la configuration du crontab, le mauvais « /dev/ttyXXXX » dans la fonction « getTeleinfo » etc …) : j’obtiens bien mes courbes et mes relevés.

    J’ai toutefois un seul problème. J’ai bien mis la ligne suivante :

    stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

    dans : /etc/inittab

    mais à chaque démarrage je suis quand même obligé de la taper pour que cela fonctionne.

    Une idée du pourquoi je suis obligé de faire cela ?

    Dans tous les cas merci beaucoup pour ce tuto fonctionnel.

    Répondre
    1. padid53

      bonjour AIRC,
      si la ligne de paramétrage du ttyAMA0 est faite dans /etc/rc.local avant « exit 0 » cela fonctionne correctement à chaque démarrage.
      bonne journée

      Répondre
  56. Ping : Google project - Raspberry + Arduino Domotique | Pearltrees

  57. Serge

    Bonjour,
    J’ai pu grâce à ce tuto réaliser moi-même mon interface et le programme de capture de téléinfo sur Raspberry Pi. Merci à François.
    J’ai toutefois utilisé un autre circuit électronique aux pièces plus faciles à trouver, j’en fourni le schéma et même un implantation au format « hat ».
    Je vous soumets ma réalisation avec en bonus une solution pour lire 2 compteurs EDF, ce qui est utile si l’on possède comme moi des panneaux photovoltaïques.
    Le lien :

    http://domo.pintout.com/dotclear/index.php?post/2015/12/08/Carte-téléinfo

    Répondre
  58. Linus

    Bonjour et merci pour cette Article J’ai réalisé ce montage pour essayer de récupérer les info de mon compteur mais j’ai découvert que les trames récupérées ne sont pas les mêmes car j’ai un compteur Tri !!! et il semblerait que je ne reçoives pas les fin de trame comme pour le mono !!
    Avez vous des infos pour que je puisse récupérer l’ensemble des infos ?
    Voici une serie de Datas reçu :
    ADCO 012345 J
    465 :

    OPTA L
    BASE 0

    IS L
    C 20 8

    BAS:
    028468479 ;4
    PTEC TH.. $8
    IINST1 002 1
    IINST2 003 ,
    IINST3 002 00000 F
    2 030 4

    IM30048465 :
    PMAX 10910 SE 0
    PP 01460 ,
    8
    OTDETAT 4008479 ;
    $
    ADCO 012345 J
    465 :

    OPTA L
    BASE 0

    IS L
    C 20 8

    BAS:
    028468479 ;4
    PTEC TH.. $8
    IINST1 002 1
    IINST2 003 –
    IINST3 002 00000 F
    037 :

    2 030 4

    IM30048465 :
    PMAX 10910 SE 0
    PP 01470 –
    8
    OTDETAT 4008480 3
    $

    Répondre
    1. didibug01

      Bonjour
      J’ai eu le même problème que toi. J’ai également un compteur triphasé . J’ai analysé les trames et je n’ai pas trouvé le code 02 pour séparer chaque trame. Je n’ai pas trouvé non plus de code similaire ou une quelconque séquence me permettant la séparation d’infos.Rien non plus en effectuant des recherches sur internet. Donc impossible pour moi d’adapter cette installation pour mon compteur tri. Je l’ai donc utilisé et adapté pour mon compteur de production avec panneaux solaires et cela fonctionne super !

      Répondre
      1. Olivier Auteur de l’article

        Hello,
        En principe vous pouvez utiliser n’importe quelle chaîne de caractère pour faire la découpe des trames.

        Répondre
      2. destroyedlolo

        La première information envoyée est l’ADC : c’est ce sur quoi je me base plutôt que sur le code 02 🙂
        (J’ai besoin des trames completes car mon démon fait des agrégations avant de publier ses info MQTT)

        Répondre
  59. schnokbul

    Bonsoir à tous. Déjà merci pour ce fabuleux travail et toutes ces supers fonctions sur le dash screen ! J’ai fait une install qui commence à bien tenir la route et l’ajout de la téléinfo est la dernière étape.

    J’ai un stick usb qui fonctionne, je récupère bien les données dans le port USB (/dev/ttyUSB1).
    La bdd SQLite s’est bien créée.

    Par contre, impossible d’afficher les graphiques et j’ai cette erreur qui s’affiche dans le error log de mon apache.

    PHP Fatal error: Call to a member function fetchArray() on boolean in /var/www/html/elec/teleinfo_func.php on line 135, referer: http://192.168.1.99/elec/

    Quelqu’un aurait une idée ?

    Merci beaucoup

    Répondre
  60. destroyedlolo

    Salut,

    « Nous n’avons donc pas directement la puissance active en Watt, mais, nous avons l’intensité instantanée en Ampère ! Il nous suffira donc de multiplier ce nombre par 230V (ou 220V, ou 240V, selon que vous soyez proche ou non du transformateur) pour avoir une puissance instantanée en Watt  »

    Ben … non : si tu fais ca, tu obtiendra plus ou moins la valeur apparente donc en VA … que tu obtiens déjà par PAPP.
    Pour avoir la « vraie » puissance, il te faudrait connaitre le COS Phi comme tu l’indique.

    « Il nous suffira donc de multiplier ce nombre par 230V »

    A nouveau … non 🙂
    La tension est loin d’être stable et chez moi, elle oscille entre 215 et 240V au cours de la journée et des saisons. Le pire étant l’hivers lorsque tous les chauffages du quartier tournent.
    Il n’y a pas cette info sur les compteurs standards (faut que je regarde sur Linky), mais mon onduleur est formel 🙂

    Sinon, pour ceux qui voudrait publier ces informations en MQTT, j’ai créé un démon nommé … TéléInfod (https://github.com/destroyedlolo/TeleInfod) 🙂

    A+

    Laurent

    Répondre
    1. Olivier Auteur de l’article

      Salut,
      C’est pour ça que j’ai écris ça :

      Seulement voilà, cette formule n’est valable qu’en courant continu… En courant alternatif, tel que délivré par EDF/ERDF, il faut multiplier ce résultat par un facteur de puissance appelé cos phi…

      et ça :

      Il nous suffira donc de multiplier ce nombre par 230V (ou 220V, ou 240V, selon que vous soyez proche ou non du transformateur) pour avoir une puissance instantanée en Watt 🙂 Nous aurons ainsi une idée approximative de la puissance instantanée consommée par tous les appareils de notre maison

      Le plus important à retenir étant :

      Nous aurons ainsi une idée approximative de la puissance instantanée consommée par tous les appareils de notre maison

      Voilà voilà…

      Répondre
    2. Gipet77

      Salut
      Dans la facture d’électricité il y a 3 choses : 1) La puissance souscrite pour un tarif bleu c’est en ampère, 2) la consommation en wattheures. Chez moi je ne m’intéresse pas à l’archivage de la puissance instantanée, mais à la différence d’index toutes les 10 mn. Cela est largement suffisant pour visualiser ce qu’il se passe, si le besoin est de tracer la consommation. Toutes les 10 mn : dernier index moins index précédent = conso des dernières 10 mn multiplié par 6 pour retomber sur des Wh.
      3) les taxes
      Cela dépend de ton besoin, i max ? Conso ? Les 2 ?

      Répondre
  61. Mathieu

    Hello,

    J’ai un petit souci avec la lecture du serial en PHP.
    En effet, ma fonction fread semble « louper » des lignes.

    Voir ici : http://195.132.210.167/edf.php

    J’ai fait une fonction qui prend en argument une étiquette (ADCO, IINST …) pour afficher la valeur associée dès qu’il la voit passer. Mais avec ces trous dans les trames, elle peut facilement attendre 3 ou 4 trames avant de voir passer son étiquette.

    Je précise qu’en faisant un cat /dev/ttyAMA0 la trame est beaucoup plus correcte (quelques rares ratés seulement mais rien à voir avec ce que je récupère après fread …

    Voici un exemple de trame trouée que je récupère (là j’affiche juste les étiquettes, et à la fin on voit que le code a bien fini par trouver l’étiquette recherchée (ADCO) et peut afficher la valeur, mais après de nombreuses lignes analysées pour rien et/ou ratées, du coup je perds beaucoup de temps …) :

    PAPP
    HHPHC
    IINST
    IMAX
    IMAX

    HCHC
    HCHP
    IINST
    IMAX
    HCHC
    HCHP

    PTEC
    IINST

    HCHC

    ADCO
    Valeur : 040122914442

    Quelqu’un aurait une idée ??

    Merci 🙂
    Math.

    Répondre
      1. Mathieu

        Salut Olivier et merci pour ta réponse.

        ça va paraître con mais ce matin je réessaye et ça semble marcher mieux :s

        Sinon il me semble qu’en faisant des cat les trames sont largement meilleures oui, quelque chose comme 98% de bonnes trames …

        Répondre
        1. Mathieu

          Bon ben ça a bien marché pendant 15min et c’est reparti comme hier …
          J’ai essayé de rédémarrer le PI sans succès …

          Là je sèche …

          Répondre
    1. Mathieu

      Bon je crois que j’ai pigé !!!

      Je pense que c’est la méthode que j’ai voulu appliquer qui ne va pas. En gros j’ai fait

      1) Lire la première ligne complète qui vient
      2) Regarder si c’est la bonne
      3) Si oui return la valeur, si non appel récursif de la fonction

      Mais je pense que ce qui se passe c’est que pendant le rappel récursif la ligne que je cherche a très bien pu me passer sous le nez une fois .. deux fois … etc …

      En fait je n’avais pas réalisé la vitesse du flux parce que dans ma tête je me le représentais comme le cat qui lui est très lent … héhé…

      Donc je suis revenu à ta méthode initiale : je prends tout la trame et je cherche ensuite dedans. Je fais quand même un rappel récursif au cas où la trame aurait été pourrie, incomplète …

      Ceci dit, j’ai calculé que le temps de passage de la trame était de l’ordre d’une seconde (de l’ordre de 1000bits à 1200bps), et j’ai un temps d’affichage de la page de 3 à 5 secondes ce qui me paraît beaucoup. Non ?

      Merci beaucoup en tous cas !

      Répondre
  62. GeenJu

    Hello,

    J’ai fait mon montage et j’ai tout relier à un raspi sous Debian Jessie (donc pas d’inittab)
    Mais je n’ai rien qui s’affiche sur le /dev/AMA0
    A priori au debut je n’avais pas le téléinfo d’activé,mais j’ai fait intervenir EDF donc ça doit être comment.
    Comment vérifier qu’il est bien activé?
    Quelle est la manip à faire sur le port série? Dans le raspi-config faut il activer ou désactiver le login a travers le port série?

    Répondre
      1. Mathieu

        Hello,

        Je n’ai pas non plus d’inittab. Je me suis contenté de faire le

        stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

        et ça fonctionne.

        Sinon peut-être chmoder ttyAMA0 ?

        Mathieu.

        Répondre
        1. GeenJu

          Pas mieux

          Est-ce qu’il y a un moment de vérifier que la téléinfo est réellement activée?
          Avec un multimetre?

          Répondre
          1. Olivier Auteur de l’article

            Excellente question !
            Ça m’intéresse également de savoir si il existe un moyen simple de vérifier que la teleinfo est bien active sur un compteur.
            Si vous trouvez, n’hésitez pas partager l’info, je rajouterai l’astuce dans l’article 🙂

          2. Mathieu

            Avec un multimètre ça m’étonnerait beaucoup que tu puisses voir quelque chose … trop rapide.

          3. destroyedlolo

            Si, ca marche : j’en est un a aiguille et je vois du 5v sur les bornes téléinfo et l’aiguille vibre de quelques milimetre (donc c’est notable) indiquant qu’un signal est envoyé.

            Sinon, j’ai qq lu part que si la TéléInfo n’est pas activée, elle ne devrait émettre que des trames ADCO et rien d’autre … donc en toute logique, tu devrais voir qq chose. A confirmer.

          4. Olivier Auteur de l’article

            Hello, c’est intéressant de savoir que même si la télé info n’est pas activée, on reçoit quand même quelque chose dans les trams

          5. destroyedlolo

            C’est à confirmé 🙂
            Je l’avais lu sur un blog mais je n’ai pas pu le vérifié de visue vu que ma TéléInfo était activée des l’origine (d’ailleurs, j’ai du mal à voir l’interet de ne pas le faire 🙂 ).

          6. Charly86

            Il y a 3 modes pour la téléinfo dans le compteur, je le sais depuis que j’ai acheté un vrai compteur pour mes tests
            – Teleinfo : Sortie Téléinfo normale
            – Metro : Mesure de l’énergie, pas de sortie téléinfo, sortie désactivée
            – Veille : seule ADCO sort

            Voili voilou

        1. Greenju

          Non, j’ai un peu mit de coté le projet étant donné les résultat assez peu encourageants…
          J’ai un gros doute sur le fait que le téléinfo ait bien été activé par EDF

          Répondre
  63. Trulio

    Une LED qui s’allumerait pendant le burst d’information qui dure dure moins de deux secondes? (comme dans l’optocoupleur?)

    Répondre
    1. Olivier Auteur de l’article

      Est ce que ce serait suffisant pour affirmer que la téléinfo est bien fonctionnelle ?

      Répondre
  64. Trulio

    encore plus sur, sur les arduino, il y a une LED sur chaque pin de l’interface série. Une led branchée derrière l’optocoupleur qui clignote a une période de une ou deux secondes devrait confirmer une activité sur la sortie EDF.

    Répondre
  65. Jeremi

    Bonjour à tous,

    Dans un premier temps, je vous remercie beaucoup pour ce site très enrichissant. J’ai 2 questions à vous poser (je n’ai malheureusement pas trouvé la réponse) :

    1) la sortie télé-information nous informe bien si le client est en HP & HC. D’ailleurs, on sait même si la zone actuelle est HP ou HC. Je me pose alors la question suivante: Comment puis-je connaître les horaires des HPs et HCs. En France, il y a différentes plages horaires d’heures pleines et heures creuses qui varie suivant la région, la commune etc. Même au sein d’une même commune, il y a parfois 3 voir 4 plages d’horaires. alors ma question est la suivante: Comment puis-je savoir laquelle des plages HP/HC est appliquée pour le logement qu’on « étudie ». Sachant que la télé-information fournie une info de la forme suivante : HHPHC C ou HHPHC Y D. Comment peut-on à partir de ces données remonter aux horaires ?

    2) La sortie télé-information ne fournie pas la puissance active (la vrai!). Comment faire pour calculer (mesurer) celle-ci ? La puissance apparente est fournie en temps réel mais pas la tension…..

    Je vous remercie d’avance pour vos réponses.
    Cordialement.
    Jeremi.

    Répondre
    1. Damien Vessiere

      Bonjour Jeremi,

      1) Le plus simple reste de te connecter a ton compte EDF, tu devrais pouvoir trouver l’info : http://hpics.li/2768608

      Sinon, la manière brutale est de stocker dans une BDD ou un fichier les valeurs toutes les minutes par exemple : http://hpics.li/6df4171

      2) La tension doit toujours être autour de 220 V non ?
      Sinon moi je me base surtout sur les différences entre deux HCHC ou deux HCHP.

      Répondre
      1. Olivier Auteur de l’article

        En réalité, la tension n’est jamais à 220V. Elle peut varier de plus ou moins 25V autour de cette valeur, le calcul de puissance peut donc varier sensiblement 🙂

        Répondre
    2. Olivier Auteur de l’article

      Bonjour,
      Pour connaître les plages horaires HP/HC, il suffit d’enregistrer la donnée idoine toutes les heures et de voir à quel moment elle passe de HP à HC et inversement 🙂

      Répondre
  66. Ping : Téléinfo ERDF sans fil pour compteur triphasé - Petitssuisses

  67. zylix

    Bonjour,

    c’est pour moi mes premiers pas serieux avec un raspberry et ce projet m’a beaucoup enthousiasmé. je me suis lancé et ressorti du fond des tiroirs un bon vieux optocoupleur.
    après quelques galère, j’ai enfin les info qui arrivent nickel de mon compteur (ADC0—-etc.)

    je precise que j’ai un raspberry pi 2 et que mon fichier cmd line etait de ce type :

    dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

    tant que je n’ai pas enlevé console=serial0,115200 je n’avait que des problèmes…le raspberry freezait même parfois.

    ce probleme etant reglé, j’ai donc la teleinfo qui arrive nickel dans le terminal.

    et la les problemes commencent pour moi car je suis vraiment debutant en programmation.

    j’ai installé apache et php et

    j’ai creer un dossier dans /var/www/html/edf_magdiblog/

    dans lequel j’y ai mis les 4 fichiers que vous proposer (j’ai pris soin de corriger le ttyAMA0)

    teleinfo_puissance
    teleinfo _conso
    teleinfo_func_
    teleinfo_graph

    j’ai mis les droits avec un chmod 775 sur ces 4 fichiers
    et j’ai mis pi comme prorpietaire avec un chown pi:pi teleinfo_(les 4fichiers).php

    suite a cela j’ai suivi le tuto et j’ai voulu rendre exécutable les 2 scripts conso et puissance

    j’ai fait un crontab -e

    sudo nano crontab -e
    et j’y ai mis :

    chaque minute :
    1 * * * * /var/www/html/edf_magdiblog/teleinfo_puissance.php
    à 13h05 tous les jours :
    05 13 * * * /var/www/html/edf_magdiblog/teleinfo_conso.php

    sudo reboot

    pour que ces 2 scripts ce lance au demarrage, j’ai ensuite copier teleinfo_puissance.php et teleinfo_conso.php dans /etc/init.d/

    et j’ai bien verifié les droits et le proprietaire

    sudo chmod 775 teleinfo_puissance.php

    sudo chown pi teleinfo_puissance.php
    et le groupe propriétaire
    sudo chown pi :pi teleinfo_puissance.php

    cd/etc/init.d
    sudo update-rc.d teleinfo_puissance.php defaults

    (pareil pour teleinfo_conso)

    j’ai rebooté a nouveau

    ensuite dans le terminal j’ai verifié que la téléinfo arrive bien par un

    stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

    cat /dev/ttyAMA0

    pas de probleme …

    et sur un autre ordi je me suis dit que j’allais avoir mon beau graphique

    http://192.168.1.24/edf_magdiblog/teleinfo_graph.php

    et la rien du tout ecran blanc….

    gros coup de mou….

    je me suis dit que j’avais oublié un truc et j’ai donc verifier et effectivement sqlite3 n’etait pas installé…

    donc :

    sudo apt-get install sqlite3

    puis dans le terminal j’ai creer la base : sqlite3 teleinfo.db

    et j’ai essayer de relancer mon

    http://192.168.1.24/edf_magdiblog/teleinfo_graph.php

    toujours rien…

    j’ai atteins ici ma limite en terme de gestion de la partie programmation.

    j’apprécierai un coup de pouce pour me débloquer car j’aimerai vraiment aller au bout.

    merci de votre aide

    Répondre
  68. Romain Brethomeau

    Bonjour après plusieurs test , quand je fais /dev/ttyamao je n’ai rien qui s’affiche, j’ai essayé d’inverser de sens l’optocoupleur et sans succès. Je précise que j’ai une r3 donc sans initab.
    voici un extrait de mon fichier cmdline.txt

    dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

    je suis débutant avec la raspberry.

    Répondre
    1. Fred

      Salut,
      Je ne sais pas quelle distribution tu as dans ta Raspberry Pi 3… mais qq idées à creuser car ce Tuto ne correspondait pas exactement à mon cas pour la Ras Pi 2 :

      Le device « /dev/ttyAMA0 » est aussi utilisé sous le lien « /dev/serial0 »
      pi@raspberrypi: ls -al /dev/serial0
      lrwxrwxrwx 1 root root 7 mai 10 15:17 /dev/serial0 -> ttyAMA0
      Donc il apparait sous « console=serial0 » dans « /boot/cmdline.txt »

      Il faut arrêter le service console série :
      pi@raspberrypi: sudo systemctl stop serial-getty@ttyAMA0.service
      pi@raspberrypi: sudo systemctl disable serial-getty@ttyAMA0.service

      Enfin, paramétrer le port GPIO15/UART0_RXD (pin 10)
      pi@raspberrypi: sudo stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

      Et ensuite, ça marche pour moi…
      pi@raspberrypi: cat /dev/ttyAMA0
      ADCO 03012232xxx1 0
      OPTARIF BBR* U
      ISOUSC 60 <
      BBRHCJB 047664552 D
      BBRHPJB 069363940 R

      Bon courage
      Fred

      Répondre
      1. Greenju

        ESt-ce que tu peux mettre le contenue de ton cmdline?

        Moi je n’ai rien qui s’affiche avec le cat
        Je n’arrive pas à valider que mon montage avec l’octo est correct

        Répondre
    2. Philippe

      Bonjour,

      Es-tu arrivé à régler ton problème.
      Malgré les différents tests que j’ai fait, le kill du serial précisé par Fred, rien n’y fait.
      rien dans ttyAMA0

      J’ai une distribution Jessie sur Rpi 3

      Le montage précédent sur RPI première génération fonctionnait très bien.

      Merci de votre aide

      Répondre
      1. Philippe

        Re…
        Petite précision : cela me travaille… lorsque je regarde dans le répertoire /dev j’ai un lien de serial1 vers ttyAMA0

        lrwxrwxrwx 1 root root 7 juil. 9 10:28 serial1 -> ttyAMA0

        Peut-être en lien avec mon problème…
        Comment l’enlever ?

        Merci de votre aide…

        Répondre
        1. Charly86

          Philippe
          La serial à changé avec le PI 3 car elle (/dev/ttyAMA0) est reliée au module bluetooth et l’ancienne série devient c’est une soft UART (/dev/ttyS0) ou (/dev/serial0), tu peux essayer avec celles-ci ? je serais curieux de savoir si la téléinfo fonctionne en soft uart)

          Sinon tu peux retourner à la normale avec les overlays, vas voir en fin d’article les modifs à faire sur un PI3
          http://hallard.me/enable-serial-port-on-raspberry-pi/

          Répondre
          1. Philippe

            Bonjour
            Tout d’abord merci de prendre du temps pour m’aider à résoudre mon problème.
            En fait voilà ce que j’ai fait pour que cela fonctionne :
            1- Dans le fichier /boot/config.txt j’ai modifié enable_uart=0 pour le passer à enable_uart=1
            2- j’ai ensuite à la fin du fichier rajouté une ligne :
            dtoverlay=pi3-disable-bt

            Ensuite tout cela a fonctionné. Je récupère bien les trames dans /dev/ttyAMA0

            J’ai également testé :
            1- Dans le fichier /boot/config.txt j’ai modifié enable_uart=0 pour le passer à enable_uart=1 (attention je n’ai pas invalidé le bluetooth comme précédemment)
            2 – j’ai lancé la commande
            stty -F /dev/ttyS0 1200 sane evenp parenb cs7 -crtscts
            Donc sur S0 et non AMA0
            J’ai bien récupéré les trames par contre, j’utilise Domoticz et je ne pouvais pas mettre le port série ttyS0.

            J’ai pas tout compris dans les manipulations mais bon deux solutions qui fonctionnent contre aucune avant. Quoi de plus. Je suis d’ailleurs preneur d’une explication.

            J’ai donc opté pour la première solution mais je cela sera OK tant que je ne me servirais pas du bluetooth

            Merci encore

  69. Ping : La Domotique (Téléinfo & Jeedom) – Zefi.org

  70. Ping : IoT - jnth | Pearltrees

  71. Ping : En résumé… – La Geek Attitude

  72. Bernard 94

    Bonjour Olivier,

    Merci pour ce tuto qui m’a bien aidé et sans lequel je n’y serais jamais arrivé.
    Je poste pour partager mon retour d’expérience et mes déboires peuvent être une piste pour ceux qui ont un écran blanc.

    J’étais dans ce cas, et après avoir longtemps galéré, j’ai constaté que mon compteur ne délivrait jamais le champs « PAPP ». J’ai donc supprimé tout ce qui y faisait référence, et là miracle, tout est rentré dans l’ordre !

    Quelqu’un pourra-t-il m’expliquer pourquoi l’absence d’un champs dans la trame ne permet pas l’affichage des autres infos, ou tout au moins alors ne génère-t-elle pas de message d’erreur.

    Je me pose une autre question. Comment se fait-il que la trame ne soit pas toujours constituée des même informations : il me manque aussi le champs « MOTDETAT » en moyenne 1 trame sur 2 en après-midi, et systématiquement la nuit ?
    Quelqu’un aurait-il constaté le même phénomène ?

    Merci
    Cordialement
    Bernard

    Répondre
    1. destroyedlolo

      Salut,

      pour PAPP, ca me parait déjà étonnant … mais MOTDETAT est me semble-t-il obligatoire.

      Je pense donc que où ton signal est bruité (ce qui viendrait de ton montage car la techno employée en sortie de compteur l’évite), soit c’est ton code qui oublie des caractères voire même des lignes entières.

      Répondre
      1. Bernard 94

        Merci de cet avis rapide

        En fait, c’est faisant la lecture de ttyAMAO avec un cat que j’ai ce résultat. Il n’y a donc pas beaucoup de code.

        Je me suis posé la question pour le bruit et j’en avais conclu, peut-être à tort, que si seules 2 infos étaient perturbées systématiquement, cela ne pouvait en être la raison.
        Mais je vais essayer avec des liaisons d’une dizaine de cm entre compteur/opto/Raspberry pour vérifier si c’est un problème de bruits. J’ai actuellement respectivement 4m et 1m en câbles blindés.
        Je donnerai le résultat dés que c’est fait.

        Répondre
          1. Bernard 94

            Bien sûr.
            Je précise aussi que j’ai bien mes graphiques depuis j’ai supprimé tout ce qui avait un rapport avec « PAPP » et cela depuis un mois.

            Mais comme promis, ce soir, j’ai fait des essais avec des fils de 4cm de part et d’autre de l’opto et toujours le même résultat.
            J’ai même capturé les trames avec un hyperterminal sous Win XP, : Pareil.

            En résumé donc :
            J’ai bien tous les champs clairs et nets de la trame que je suis sensé avoir avec mon type d’abonnement sauf :
            « PAPP » que je n’ai jamais
            « MOTDETAT » que j’ai aléatoirement
            Je précise que le champs « HHPHC » qui se trouve entre les 2 est toujours présent et correct.

            Je crois que l’on peut en conclure que c’est bien mon compteur qui ne fournit pas tous les champs.

            Les problème sont donc
            – Est-ce-que d’autres ont été confrontés au même cas, car cela pourrait être à l’origine de l’échec de certains.
            – Pourquoi l’absence d’un champs bloque PHP sans message d’erreur ?

            Peut être un autre piste :
            J’ai toujours une ligne vierge entre 2 lignes de champs quand je lis la trame alors qu’il n »y en a pas dans la capture d’écran ci-dessus pour illustrer la commande « cat /dev/ttyAMA0 »

            Pour info pour compteur serai de 96 selon le champs « ADCO »
            709601000659 B

            Bien à vous

Laisser un commentaire