Téléinfo EDF – Suivi conso de votre compteur électrique (màj 08/2016)

teleinfo_edf_conso_electrique

MAJ août 2016 : Depuis la parution de cet article en septembre 2014 (bientôt 2 ans Oo), de nombreuses évolutions ont été faites sur les Raspberry Pi et Raspbian. Grâce aux retours d’expériences de plusieurs lecteurs et à leur participation, cet article est aujourd’hui mis à jour 🙂 Un gros merci à Arnaud (qui se reconnaîtra) qui m’a notamment envoyé de nombreuses informations sur les modifcations relatives à Raspbian Jessie et au RPi3 🙂

Vous pouvez notamment télécharger les versions revues et corrigées des scripts PHP par Arnaud, ici : teleinfo.zip


A 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

MAJ août 2016 : Depuis la parution de Raspbian Jessie :

Dans le fichier /boot/cmdline.txt :

- supprimer la ligne :
console=serial0,115200
- ajouter la ligne : 
enable_uart=1

Inutile de modifier le fichier /etc/inittab.

Sur Raspberry Pi3, l’UART PL011 (full UART) du BCM2837 a été ré-alloué au WLAN/BT combo. Et le mini UART est mis à disposition des utilisateurs (sous le nom de /dev/ttyS0).

Il faut donc configurer /dev/ttyS0 (à la place de /dev/ttyAMA0) et remplacer /dev/ttyAMA0 par /dev/ttyS0 à la ligne 10 de teleinfo_func.php. (voir plus bas)

Pour plus d’information sur ces changements : http://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3/

Pour les anciennes versions de Raspbian :

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 😉

499 réflexions au sujet de « Téléinfo EDF – Suivi conso de votre compteur électrique (màj 08/2016) »

  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.

          2. Laurent

            Je n’ai jamais prétendu que ce contrat n’existait plus, j’en ai un depuis cette année (2016) !
            J’ai juste dis que EDF ne le proposait plus depuis longtemps.
            J’ai même eu une nana qui m’a prétendu qu’il n’y avait pas de tarif heures creuses sur un abonnement Tempo… Comme quoi ils n’y sont plus trop habitué sur les plateaux d’appels.
            Par contre EJP nada c’est fini maintenant.

          3. DoubleHP

            Laurent: définit nada ! Parce que perso, je suis abonné EJP, j’ai un compteur EJP, je reçois des factures EJP tous les mois, et mon compteur me sort des trames TIC toutes les 2s, et mes modules EJP reçoivent le signal EJP transitant sur le réseau public chaque minute …

            https://particulier.edf.fr/fr/accueil/contrat-et-conso/options/ejp/observatoire.html
            (et comme tout site public, avec son lot de bugs et d’incohérences 😀 la même page indique simultanément que la France est divisée en 4 zones, et plus haut, qu’elle ne l’est plus). Avec les grands froids récents, je suis étonné d’en avoir pas eu en milieu de semaine passée.

          4. Pascal Cogez

            erreur bbr existe toujour je l ai demander en 2015
            ejp lui plus commercialise

  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. Laurent

            Bonjour,
            Réponse tardive mais qui peu peut-être aider.
            Comme j’ai une vieille maison mon câble pour la téléinfo transite par le garage depuis le plafond, le traverse, puis remonte sur 2 niveaux pour arriver au tableau électrique du deuxième. Donc environ 6+9+4+4+3 mètres soit déjà 26 mètres et aucun problème avec du câble en 6/10ème.
            Des longueur annoncées par ERDF 80m cela devrait aussi le faire.

    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
        1. Laurent

          Bonjour,
          Ça peut très bien marcher avec d’autres optocoupleurs, vendus moins chers chez les chinois. Le Vishay K817P par exemple.
          La seule différence avec un SH620x c’est que l’entrée n’est pas à double diode donc il faut en rajouter une sur la borne 1, type 1N4001 cela le fait. Ça devrait supporter aussi « l’éventuelle » tension 220V qui « pourrait » arriver dessus, mais bon, moins de 10V~ chez moi et 3.5V~ avec une diode et une résistance en entrée.

          Répondre
          1. DoubleHP

            Aucune chance qu’une 4001 tienne 220V. La 4001, c’est 50V max; tu peux la considérer détruite vers 70-80V. Le secteur délivrant 320V crète … elle a trois fois le temps de fumer. Avec de la chance, la surtension la fera exploser, et l’énergie nécessaire à son explosion, suffisement faible pour ne pas endommager quoi que ce soit d’autre (conducteurs, organe responsable de l’arrivée de 220 sur le montage).

            Après, la notice du Linky stipule clairement que si les modules de TIC de commerce doivent accepter 220V sans être détruits, jamais un compteur n’enverra plus de 18V; cette tolérance est requise, à cause du constate que de nombreux clients ont envoyé du 220 dans leur module suite à erreur de branchement (la proximité, et la simulitude des bornes TIC et J/N font qu’effectivement, je suis d’accord qu’on a vite fait d’envoyer du 220 dans son module).

            Mon module n’est absolument pas protégé contre ça; clairement, si j’envoie du 220 dans mon module, mon opto va exploser. Sans risque pour moi, ni pour mon ordinateur; mais clairement, il sera détruit. Bon pour la benne. Mais il ne faut pas se bercer d’illusions; pour tenir le secteur, c’est 4004 minimum; vu la différence de prix, je n’achète que des 4007, pas besoin de réfléchir.

    2. Laurent

      Bonjour,
      Réponse encore plus tardive 🙂 Mais ça peut servir
      De mémoire les différences entre -1, -2, -3 sont le nombre de sorties et d’entrées.
      Pour la téléinfo aucune importance seule une entrée une sortie suffisent.

      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
        1. Mathieu

          Du point de vue de l’infrastructure physique, pour faire le lien entre le compteur et le télé-info, utiliser deux cables de prototypages tout simples, ça passe ?
          Ensuite, je vois mal comment le téléinfo stick peut « remplacer » un Raspberry Pi. Une fois qu’on a le signal qui passe dans un câble USB, il faut bien brancher l’USB à un Raspberry, non ? Pour que le Raspberry Pi puisse transmettre les données en WiFi…
          A moins qu’il y ait une autre configuration plus astucieuse avec le stick USB téléinfo ?
          Merci 🙂

          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. Gilles

        Juste un détaille; c’est kWh et pas kW / h ; l’énergie c’est de la puissance fois du temps pas de la puissance par unité de temps !
        1kWh c’est l’énergie consommé par un radiateur d’un 1kW en 1heure; ce même kilo Watt heure sera consommé (et donc compté) en 30 minute par un radiateur de 2 kilo Watt.

        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
      1. crapahut72

        bonjour Charly86,
        Je viens de lire que tu serais intéressé à rentre le script compatible tous contrats, actuellement j’ai bien réussi à afficher les puissances, mais la trame émise par mon compteur Linky est différente, et je ne peux pas afficher les consos.
        Voici ma trame :
        ADCO 031964348599 T

        OPTARIF BASE 0

        ISOUSC 60 <

        BASE 019522130 "

        PTEC TH.. $

        IINST 027

        IMAX 090 H

        PAPP 06130 +

        HHPHC A ,

        MOTDETAT 000000 B

        serais tu intéressé pour m'aider à modifier le fichier teleinfo_func.php compatible avec cette trame
        cdt

        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
    3. suaz

      Exactement. D’ailleurs, faire UxI donne un résultat en VA en fait, et non en Watts. Du coup les 2 courbes sont en fait les mêmes, la seule différence étant liée à la précision de l’intensité fournie par la TIC (arrondie à l’unité) et la valeur de la tension fixée à 230 alors qu’en réalité elle varie autour de 230 (+ ou – 5%).
      Il est possible de déduire le cos phi de la TIC lorsque cette dernière est configurée en mode standard sur les compteurs Linky (via delta des énergies actives et réactives et calcul). Ce qui n’est pas possible sur les « anciens » compteurs qui ne fournissent pas ces étiquettes sur la TIC en mode historique.

      Sinon, article très bien fait. Merci

      Répondre
      1. lechercheur123

        Bonjour,

        À ma connaissance, le Linky ne propose pas l’énergie réactive sur sa TIC en mode standard, sauf si le Linky est en mode Production (vente d’électricité, et non achat). Le calcul de l’énergie active et de la puissance active est donc impossible pour un compteur en mode Consommation

        Répondre
        1. suaz

          En effet vous avez raison. L’énergie réactive n’est en fait disponible qu’en mode producteur je me suis trompé.
          En revanche il y a bien un moyen de retrouver le cos phi: via delta du totalisateur actif et moyenne de la puissance apparente sur la même période.
          Ce sera un peu moins précis en revanche.

          Répondre
          1. lechercheur123

            Oui en effet, ça devrait marcher comme ça.

            Par contre, la précision du cos phi dépendra de la consommation. Plus la consommation sera élevée, plus la période entre 2 incrémentations du totalisateur en Wh sera courte, et plus on sera précis.

            C’est quand même dommage que cette information ne soit pas fournie directement par le compteur…

  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
    3. Mathieu

      Pour la puissance active, tu peux la calculer via l’index. Un classique en comptage est la courbe « points 10 minutes ». Je te propose de construire cette courbe « point 10 min » en faisant faire ce calcul en interne (je n’y connais pas encore assez en code pour te fournir en code php ou autre) :

      P_active(t) = ( Index(t) – Index(t – 10 min) ) / 600

      Le chiffre 600 vient de: 10 min x 60 s = 600 s entre les deux index.

      Tu peux comparer avec la puissance réactive, normalement ça devrait etre assez proche (à moins d’avoir des appareils qui baissent beaucoup le cosPhi chez toi). Tu peux aussi prendre 230: en France, un décret de 1986 impose le 230 V en tension nominale, mais il y a des variations non négligeables. Enfin, n’oublies pas que si tu fais courant x tension, tu tomberas sur la puissance apparente, car tu es en alternatif !

      Répondre
      1. Mathieu

        COQUILLE
        * Tu peux comparer avec la puissance *apparente* fournie en temps réel, normalement ça devrait etre assez proche (et pas la puissance réactive, qui ne devrait pas etre proche de la puissance active !)

        Répondre
      2. Mathieu

        Attention à la coquille de la dernière formule. Comme l’index n’est pas en Joule mais en kWh, on divise par une valeur en heure, donc 1/6 = 0,1667 h pour les points 10 min (au lieu de 600)

        P (Watt) = ( index(t) – index(t – 10min) ) / 0,1667

        Désolé! 🙂

        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

        1. Nicolas

          Bonjour Bernard,
          Je rencontre exactement le même problème que toi, à savoir : une ligne vierge entre 2 lignes de champs et jamais d’étiquette « MOTDETAT ».
          As-tu trouvé une solution depuis ?

          Répondre
          1. Bernard

            Non, désolé.
            Depuis ma carte SD est partie en vrille et je n’ai pas eu le temps de m’y remettre.
            Peut-être aux vacances de Noël.

          2. Bernard 94

            J’ai trouvé ce soir, il faut mettre dans /etc/rc.local
            stty -F /dev/ttyAMA0 1200 sane parenb -parodd cs7 -isig -icrnl -crtscts -icanon
            au lieu de
            stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

            Je n’ai donc plus les lignes vierges, J’ai « MOTDETAT3 », mais je n’ai toujours pas de PAPP

            Mon compteur est un Landis &Gyr L16C1e

            ADCO 709601000659 B
            OPTARIF HC.. <
            ISOUSC 60 <
            HCHC 113559506 )
            HCHP 188609201 6
            PTEC HP..
            IINST 004 [
            IMAX 038 J
            HHPHC A ,
            MOTDETAT 000000 B

          3. fred

            Bernard:
            si jamais tu passes ici:
            j’ai essayé la nouvelle commande stty et en effet cette fois j’ai tout le temps MODETAT et je n’ai plus de ligne vide entre chaque trame. sais tu ce que change cette commande?
            Je vais voir si ça corrige mon problème de données perdues (1 sur 5 dans le php) => non visible avec un cat.

          4. cassaigne

            Fred
            Content que cela ait pu servir.
            Voici un lien qui recense les options de STTY :
            http://manpagesfr.free.fr/man/man1/stty.1.html
            [-]icrnl
            Traduire les Retours-Chariots (Carriage Return) en Sauts-de-ligne (NewLine).
            [-]isig
            Valider les caractères spéciaux Interrupt, Quit, et Suspend.
            [-]icanon
            Valider les caractères spéciaux Erase, Kill, Werase, et Rprnt.

            J’avais aussi un pb de perte de données (dans le PHP uniquement) sur la consommation journalière. Cela était gênant car je perdait du coup au minimum 2 jours (le jour de la perte et le lendemain car il n’avait pas de référence pour le calcul de la consommation du lendemain).
            Je n’ai toujours pas trouvé le temps de m’y remettre au point de tout finaliser. Aussi je suis curieux de savoir si ces options de STTY ont aussi résolu le pb de perte de données.

  73. VincentAlex

    Dans le fichier /boot/cmdline.txt :

    – supprimer la ligne :
    console=serial0,115200

    – ajouter la ligne :
    enable_uart=1

    Attention, la ligne enable_uart=1 est à ajouter dans le fichier /boot/config.txt (et non dans /boot/cmdline.txt).
    Aussi, dans /boot/cmdline.txt, il faut retirer « console=serial0,115200 » de la première ligne.

    Répondre
    1. yann

      bonjour Vincent

      Je ne comprend pas :
      – supprimer la ligne :
      console=serial0,115200

      Moi j’ai
      dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
      Faut-il que je la remplace par:
      dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
      Ou je supprime la ligne complete?

      Répondre
  74. DoubleHP

    Bonjour.

    J’ai eu plein de soucis avec ce montage. Plusieurs jours, et déplacer mon oscillo.

    ***

    D’abord, R2 doit être entre 33 et 68KR. J’ai un SFH6206-2 et il semble avoir du mal à saturer. Puis je suis obligé d’utiliser le schémat suivant avec un MOS: https://hallard.me/pitinfov12/ Parce que la version 3 composants de la présente page ne convient pas (le MOS n’est pas assez conducteur; R le MOS ne parvient pas à faire bouger la tension; R>68k => l’effet capacitif fait que le pull ne fonctionne pas). Avec 47k et le MOS ça se passe bien, ça sort un beau créneau régulier.

    ***

    Ensuite, j’ai un problème logiciel: ça ne fonctionne qu’avec le Rx du rPi; impossible de lire les données avec
    http://www.dx.com/p/ch340g-usb-to-ttl-stc-download-cable-to-serial-port-upgrade-plate-module-398436
    L’auto-test de bouclage Rx-Tx fonctionne; mais impossible de recevoir le signal. Du coup pour creuser j’ai du faire des trucs compliqués:

    <> dans une console, et <> dans une autre . http://picpaste.com/2016-08-09_17-56-52_IMAG5932.small-cpwv1PZb.jpg

    On recommence pour l’USB:
    <> dans une console, et <> dans une autre .
    http://picpaste.com/2016-08-09_17-57-51_IMAG5936.small-r9AhEbNm.jpg

    Donc exactement la même commande; résultat très différent.

    Puis je cesse les deux commandes, et je lance avec le module EDF:
    /bin/stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts
    /bin/cat /dev/ttyAMA0
    et je peux lire les infos du compteur.

    Puis, le module USB en mode bouclé:
    /bin/stty -F /dev/ttyUSB0 1200 sane evenp parenb cs7 -crtscts
    /bin/cat /dev/ttyUSB0
    while true ; do echo « @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ » | tee /dev/ttyUSB0 ; done
    http://picpaste.com/2016-08-09_17-59-33_IMAG5940.small-CLRPlMv1.jpg

    On dirait que le module est capable de rester en 1200 BAUD avec picocom, mais pas avec stty.

    ***

    Voici ma trame (EJP tri):

    ADCO XXXXXXXXXX :
    OPTARIF EJP.  »
    ISOUSC 30 9
    EJPHN XXXXXXX X
    EJPHPM XXXXXXXX U
    PTEC HN.. ^
    IINST1 010 I
    IINST2 005 N
    IINST3 008 R
    IMAX1 038 ;
    IMAX2 042 7
    IMAX3 044 :
    PMAX 17480 :
    PAPP 05800 .
    MOTDETAT 000000 B
    PPOT 00 #

    Et je suis perturbé par deux choses:

    J’ai une ligne PPOT … non documentée dans ce que j’ai trouvé.

    Aucune indication de tension. Hors, ma tension varie entre 245 et 218. Je suis facturé au kW; mais le compteur ne donne que le courant; comment je peux vérifier quur calcule bien la puissance ? Entre 10A en 218 et 10A en 245 … ça fait une sacré différence de puissance. Mon électricien m’a dit que dans les plans de cablage on calcule avec 200V. Alors je sais bien que globalement, en moyenne sur le pays, et sur 10 ans, EDF veut juste un équilibre financier entre entrées et sorties … mais vous comprendrez que j’aimerais savoir ce que je paye, et sur quelle tension est calculée la puissance. Parce que localement toutes les mesures sont en courant, mais la facture est subitement en Watt; et moi, en tant que scientifique, ça me choque. PAr ailleurs, le LCD donne les puissances apparentes et réelle, mais, la téléinfo que l’apparente.

    Comment fonctionnent les arrondis au courant ? Rien que ma pince pourri fait au dizième d’ampère; mes multis sont au uA. Et là, un machin censé faire de la mesure pour facturation, gradué de 0 à 45 est précis à 1A près ? plus de 2% d’erreur !!! C’est juste ENORME. Et encore, j’ai un ami abonné en 15A … ça fait plus de 6%. Donc j’espère qu’en interne le machin gère au minimum le millième.

    Quelqu’un ayant l’EJP peut me dire si en hivers vous avez vu passer le PEJP ou DEMAIN ?

    ADPS apparait uniquement au moment voulu ?

    Quelle est la formule de calcule du CRC ?

    Répondre
    1. Mathieu

      Pour la puissance active, tu peux la calculer via l’index. Un classique en comptage est la courbe « points 10 minutes ». Je te propose de construire cette courbe « point 10 min » en faisant faire ce calcul en interne (je n’y connais pas encore assez en code pour te fournir en code php ou autre) :

      P_active(t) = ( Index(t) – Index(t – 10 min) ) / 600

      Le chiffre 600 vient de: 10 min x 60 s = 600 s entre les deux index.

      Tu peux comparer avec la puissance apparente, normalement ça devrait être assez proche (à moins d’avoir des appareils qui baissent beaucoup le cosPhi chez toi). Tu peux aussi prendre 230 V : en France, un décret de 1986 impose le 230 V en tension nominale, mais il y a des variations non négligeables. Enfin, n’oublies pas que si tu fais courant x tension, tu tomberas sur la puissance apparente, car tu es en alternatif !

      Répondre
      1. DoubleHP

        Je n’ai pas parlé de puissance active. Et la tension est super variable: 224 à 241 sur les 13 derniers mois. Ca fait plus de 8.6% de variation … alors que l’instut des poids et mesure impose une précision d’au max 1% sur une mesure, et gnérallement un travaille sur au moins 6 (si c’est pas 8) chiffres significatifs sur tout ce qui est commerciale.

        Un locataire conteste une facture EDF; après longue étude de son problème, j’ai statué que son compteur faisait une mesure de courant avec 1.6% d’excès (l’électricien pro passé avant moi avait trouvé 3.5%, mais avait mesuré la tension au disjoncteur; j’ai mesuré au compteur … super pro).

        Donc si tu admet toi même que les variations sont non négligeables … y a pas moyen que je les néglige. Je veux un chiffre précis. Pas moyen que je me contente du 230 promis.

        Si un décret imposait à EDF de fournir une énergie propre, j’aimerais surtout que ça leur impose de délivrer une sinusoide qui ressemble à une sinusoide, et ou il n’y a pas des pics qui dépassent 800V plusieurs fois par an.

        Répondre
        1. destroyedlolo

          Salut,

          Il me semble que Linky pourra fournir les infos manquantes : tensions, Puissance active, cos phy …

          Mais n’ayant qu’un ancien compteur (qui me convient bien 🙂 ), je recupère la tension secteur de mon onduleur.
          Ayant, la PA & l’intensité par le compteur, la tension par l’onduleur, la puissance réelle et le CosPhy se calculent facilement.

          A+

          Répondre
          1. DoubleHP

            Ca fait 6 ou 8 ans que les compteurs électriques affichent la consommation en monnaie nationale en Grande Bretagne. Le Linky, fleuron de la technologie française, ne le fait pas. Donc on fait moins bien que les rosbeef, 10 ans plus tard, sur une fonction demandée par de nombreux utilisateurs. Rien que pour ce seul motif, il mérite le boïcote (pour les autres, je vous renvoie à Google). (et en fait, on sait le faire depuis 20 ans, car il existe un modèle en France permettant l’utilisation de cartes recharges pré-payées)

          2. destroyedlolo

            Bha, je ne suis ni pour ni contre le Linky … on peut même dire que je m’en fou totalement (et encore plus des arguments « contre » car ce que j’ai lu n’est qu’un tissus d’inepties de personne qui n’ont même pas pris le temps de lire sa doc technique pourtant librement disponible) et comme je le disait, mon compteur actuel avec la téléinfo me convient parfaitement.

            Par contre, j’aimerai savoir si le téléinfo est encore franco-franchouillard ou répondant à une norme internationale quelconque ?

          3. destroyedlolo

            Merci pour l’info.
            Et en cherchant Euridis, je suis tombé sur cette doc interessante : http://www.enedis.fr/sites/default/files/ERDF-NOI-CPT_02E.pdf ou il est écrit qu’effectivement, c’est un dérivé de la norme Euridis.
            Reste à voir ce qu’ils appellent « dérivé » : il y a une adaptation au niveau du réseau physique (par le meme cablage et protection simplifié).
            Par contre, ce protocole ne semble définir que la liaison physique : les trames échangées semblent parfaitement franco-francaises …

        2. Mathieu

          Tu as parlé de puissance en kW, donc tu as parlé de puissance activé (le scientifique que tu es devrais le savoir 🙂 ). Je te propose de le faire à partir de l’index, c’est comme ça que facture EDF, ou tout autre fournisseur vu que c’est Enedis (ex ERDF) qui gère ces infos.
          Maintenant, si tu n’as pas confiance en l’index du compteur, effectivement c’est une autre histoire. Un enregistreur type PowerSpy branché à une prise de courant dans ta maison peut être une première approche pour surveiller la tension. Pour aller plus loin, des sondes magnétiques se branchent facilement à l’armoire électrique.
          Si tu veux bien utiliser ma formule d’index, attention à la coquille de la dernière formule. Comme l’index n’est pas en Joule mais en kWh, on divise par une valeur en heure, donc 1/6 = 0,1667 pour les points 10 min (au lieu de 600)

          P (Watt) = ( index(t) – index(t – 10min) ) / 0,1667

          Répondre
          1. Mathieu

            * puissance active
            PS: Je ne te propose pas de négliger les variations, je te proposais 230V pour comparer avec la puissance active trouvée à partir de l’index. De même pour la puissance apparente (en VA). Ça permet de détecter les aberrations, par exemple la mauvaise version de la formule en divisant par 600…

          2. Mathieu

            DoubleHP: concernant le boycott…. Quitte à sortir un nom, on peut supposer que le fournisseur ekWateur ferra bien mieux qu’EDF là dessus…

  75. JmGfr

    Bonjour et merci pour cet excellent article.
    J’ai appliqué a la lettre votre schéma pour le relevé de deux compteurs EDF (un compteur de consommation, l’autre de production photovoltaïque).
    Je ne rencontre aucun problème avec le relevé du compteur de production.
    En revanche le compteur de consommation s’éteint régulièrement lorsqu’il est en heures creuses ET UNIQUEMENT en heures creuses si les fils pour le relevé de la téléinfo sont branchés au compteur.
    J’ai cherché plusieurs semaines, et pensé que le compteur était HS mais si les fils de téléinfo ne sont pas raccordés au compteur, pas de soucis.
    Il ne s’agit pas d’un probleme de surcharge puisque j’ai droit a 30A, mais que le problème est présent même si je ne consomme que 2A et que le compteur n’envoie pas l’info ADPS .
    J’ai augmenté la résistance sur les fils venant du compteur (1.2k) jusqu’a plus de 4.7k, pour tester. Avec une résistance élevée, le compteur arrête de s’éteindre mais la téléinfo ne fonctionne plus.
    j’ai tout tenté, (retrait des fils de commandes du relais HP/HC, inversion des optocoupleurs, déconnexion du port com, etc ….), du moment que l’optocoupleur est raccordé au compteur et que je suis en heures creuses, le compteur s’éteint régulièrement, et se rallume aussitôt (toutes les dix secondes environs mais la fréquence n’est pas fixe) faisant au passage claquer mon relais HP/HC. Avez vous déjà été confronté a ce problème ? Si oui, y avez-vous trouvé une solution?
    Merci

    Répondre
    1. DoubleHP

      Si un branchement sur la téléinfo fait claker le relais J/N, compteur défaillant, remplacement par le fournisseur, à ses frais.

      Le test élémentaire consiste à brancher sur la téléinfo uniquement un opto avec sa résistance; deux composants en série.

      Répondre
  76. Bert

    Bonjour,
    Depuis que l’on m’a installé un compteur Linky la sortie Teleinfo ne fonctionnne plus. Donc malgré les spécifications du compteur, je n’ai pas encore reçue de réponse pour me dire comment activer la sortie télinfo du compteur.

    Répondre
  77. tom

    bonjour,

    quelqu’un peut m’ expliquer pourquoi chez moi avec le RPI3 la reception de la teleinfo ne fonctionne que si j’enleve le 3,3v et la resistance de 3,3k ??

    Répondre
      1. DoubleHP

        Romain. J’ai pas eu de chance, je suis tombé sur 3 composants défectueux: un opto complètement hors specs, une résistance hors spec, et un MOS hors spec. Quand ça ne marche pas du premier coup, l’oscilloscope est obligatoire.

        Tom a du retirer une résistance; j’ai eu un problème similaire: si le rPi a déjà un pullup, alors, rajouter un dans le montage, avec un opto comme j’ai eu, l’opto n’est plus capable de descendre le Rx en bas. Même avec l’oscillo j’ai eu du mal … à admettre que j’avais 3 composants hors spec (50m entre le compteur et le labo; j’ai passé ma journée à marcher; j’ai du câble, mais j’ai bien fait de pas tirer: le câble modifie le comportement du module; les modules commerciaux sont insensibles à la longueur de câble; mais notre schémat économique ne l’est pas). J’ai finit par trouver des valeurs qui fonctionnent pour moi; une fois le proto fonctionnel, j’en ai réalisé 7 autres à la chaine; tous ont marché du premier coup. Plus un port série USB non conforme.

        Répondre
      2. tom

        exactement coté RPI GND et RX directement sur les broches de l’opto

        si je mets le RPI3 et le montage à 10cm du compteur : le montage donné fonctionne.
        si j’utilise une de mes lignes ethernet non utilisée pour rapatrier dans une piece de la maison (donc cable d’une certaine longeur qui passe par les combles), il faut que j’enleve le 3,3V et la résistance pour que ça fonctionne

        Répondre
        1. DoubleHP

          La description de tes essais est incomplète. Tu ne dis pas si la ligne ethernet est sur la ligne éthernet du rPi, ou entre le module et le rPi, ou entre le compteur et le module. Et quand tu dis retirer R3, tu ne dis pas clairement si laisse ouvert, ou remplace par un shunt.

          Moi, j’ai été déçu par le montage simplifié; j’ai pris la version intermédiaire avec le MOS, et mes 8 modules marchent parfaitement, même dans des conditions de mauvais signal TIC, et avec 3 ports série différents 3.3V et 5V. Beaucoup plus chère, mais infiniment plus fiable.

          Répondre
          1. tom

            désolé pour ma réponse rapido…
            j’utilise le câble ethernet qui va du tableau EDF à une pièce (il servait à rien jusque la) pour relier la sortie Teleinfo du compteur au montage (broche 1 et 2) et ainsi m’évite de faire balader un câble dans la maison (car ça risque de ne pas convenir à Madame… 🙂 )
            sur mon montage j’ai donc coté RPI3 la broche 3 sur GND et la broche 4 sur RX et c’est tout .
            Pour l’instant ça fonctionne bien comme ça, ma base mysql se rempli de valeurs cooool!!!! :), mais le montage me plait pas risque surement de ne pas marcher tout le temps, donc une fois que la partie soft sera au point, je vais opté pour un montage un peu plus complexe avec un MOS.

    1. Charly86

      Romain
      Le montage simplifié est fluctuant, parfois ça fonctionne, d’autres pas ça dépend des compteurs, des spec des composants et de l’étage de réception (RPI, Microcontroleur, …)

      En plus sur un PI3 tu as le soucis de la serial émulée par défaut, qu’il faut virer pour passer en real hardware (c’est expliqué avec des liens plus haut)

      La version simplifiée (ok faut rajouter un transistor et une resistance) qui fonctionne à tous les coups est celle-ci http://hallard.me/pitinfov12/ avec un BSS138 😉

      Répondre
        1. JPh

          Salut,
          je suis intéressé pour connaitre les données contenues dans la trame des linky.
          si tu peux les communiquer après tes essais ce serai top.
          J’ai un Tarif bleu perso et ai fait un shell sous Rasbian, qui récupère les index toutes les 10mn, soustrait la valeur de l’index précédent, que je multiplie par 6 pour avoir des Wh, et que je stocke en CSV. (je m’affranchis de la formule P=UI et du cos qui sont inconnus). Cela fait 1 an 1/2 que cela tourne et j’ai très peu d’erreur entre mon relevé et les factures EDF.
          Après sous tableur, je visualise sous forme graphique.

          Répondre
          1. Mathieu

            Si tu récupère les index toutes les 10mn (en kWh), soustrait la valeur de l’index précédent, que je multiplie par 6, tu récupère une valeur de puissance active en kiloWatt (kW), et pas des Watt.heure (Wh) (Wh c’est une énergie).
            Mais en effet, c’est la manière la plus simple et élégante d’avoir sa puissance active en « points 10 minutes », en s’affranchissant des P=U.I et du cos(phi).
            Pour les curieux, la multiplication par 6 vient du fait qu’il y a 6 fois 10 min dans une heure.
            Si ton index est en Wh, alors tu auras des Watt.

          2. Doublehp

            Quand tu rectifie quelqu’un, évite de faire une erreur pire. Il a dit qu’il obtenait un résultat en Wh, ce qui est presque juste, à un coefficient 1000 près, et sans problème de dimension. L’index est en KWh; quand tu soustrait des KWh et des KWh, en dimension, ça donne des KWh; les chiens ne font pas des chats. Lui, il se trompe d’un coefficient 1000; toi tu te trompe d’une dimension (tu as donc glissé dans un univers parallèle).

            Moi, je récupère chaque trame (toutes les 1 à 3s environ); et je traite sur 5mn: min, max, moyenne, écart type, sur toutes les valeurs reçues. Je stock donc une info par 5mn, mais en ayant des détails partiels de l’instantanné: les valeurs crètes, mais surtout, surtout, la possibilité de faire du délestage. Le fait de stocker toutes les valeurs moyennes et max va me permettre de diminuer mon abonnement (passer à la tranche en dessous, si ma puissance moyenne consommer le permet); et si une fois l’abo réduit, il arrive que je dépasse, alors, j’utilise le flag prévu par EDF ( ADPS ) qui permet de signaler qu’on est en dépassement d’abonnement (il n’est envoyé que quand il est utile). Si on est assez réactif, on peut couper des appareils avant que le disjoncteur abonné saute.

            La notice du linky est facile à trouver; je suis tombé dessus par hasard en cherchant des informations sur le bus. Tu tape « Linky PDF TIC », ça devrait sortir rapidement.

            Moi aussi je vais me baser sur la puissance apparente pour beaucoup de choses; de toute façon, à long terme, il suffit de faire des moyennes sur un an, puis de calculer un coefficient correctif constant. En se basant sur la différence des index sur une pédiore, et, sur la même période, calculer la moyenne des PAPP. Et ce ration, il peut être calculer automatiquement; voir, mois par mois (pour être utilisé le même mois l’année suivante, pour ajuster le coef au profil consommation).

            Pour l’heure, je galère sur un de mes modules EDF qui reçoit un mauvais signal. Il manque des bits dans les octets reçus; faut que je ressorte l’oscillo pour voir ou ça bloque.

            Quand à la multiplication par 6, je suis pas d’accord. Vraiment pas. L’énergie consommée est une différence d’index; il n’y a pas à rectifier la durée de la période de mesure. Sinon, il faudrait que la facture soit exprimée en MW an.

            3 pommes – 2 pommes = 1 pomme.

  78. JPh

    Salut,
    Presque d’accord avec toi Mathieu,et pas d’accord avec Doublehp.

    Précisions : la trame m’envoie les index en Wh, si j’effectue une différence d’index toute les 10mn, soit 1/6 d’heure, je soustrais des Wh à des Wh, donc des Wh, mais sur une période de 10mn et non d’1 heure ! (donc des Wh/6).
    Pour corriger et afficher des Wh (Watts par heure), je multiple le résultat de la différence par 6.
    La somme des 6 Wh 10mn que j’archive (points 10mn), étant égale à la différence de l’index Wh (au top horaire) moins l’index Wh précédent (au top horaire -1).
    C’est facile à contrôler.
    Et c’est le seul moyen que j’ai trouvé pour m’affranchir de la tension, et du cos phi inconnus.
    Si la base de temps de calcul est 5mn => il faut multiplier par 12 pour avoir des Wh, ou des kWh si la trame envoie les en kWh.
    Tout ceci pour contrôler les consommations facturées et analyser le bon fonctionnement des équipements énergivores.

    Concernant le délestage, je lis l’intensité dans la trame en permanence, et ai créé 4 seuils:
    Principe programmé :
    Seuil 1 = Intensité contrat – intensité lue – 6 Ampères : délestage ECS : 10 mn
    Seuil 2 = Intensité contrat – intensité lue – 4 Ampères : délestage chauffage zone nuit.
    Seuil 3 = Intensité contrat – intensité lue – 2 Ampères : délestage chauffage zone jour.
    Seuil 4 = Intensité contrat – intensité lue – 0 Ampères : délestage TOUT.

    Pour mémoire sur un tarif bleu, il y a 2 types de facturations :
    – abonnement suivant l’intensité maximale possible (calibre du disjoncteur), gain de 80 € / an environ par tranche si délesteur, (cela paye rapidement le délesteur), car le disjoncteur saute si l’intensité du disjoncteur est dépassée pendant plus d’une seconde.
    – consommations réelles qu’il faut surveiller, en général 40 à 50% des consos annuelles sont permanentes ! d’où la mise en place d’archives CSV en 10 mn.
    Pour ma part j’ai une puissance appelée permanente de 500 W, soit à l’année : 4 380 kWh, (613 € TTC) en ayant tout coupé !

    Répondre
    1. Doublehp

      Effectivement, au réveil, j’ai réfléchit, et je me suis trompé sur une partie de mon message.

      Je maintiens que des pommes moins des pommes, ça fait des pommes.

      C’est sur la multiplication que je me suis trompé. La multiplication par 6 est en réalité une division par 1h/6; c’est là que c’est trompeur; notre logique nous dit de faire une multiplication par 6; la réalité mathématique est qu’on fait une division par 1/6; et ça change tout; la multiplication n’est pas par 6 sans unité, mais par 1h/6; c’est un temps; on divise par un temps; et alors là, 1Wh/1h = 1W … on procède donc à une dérivée de la consommation sur le temps (f’=dx/dy : dx étant la différence de conso, dy étant la différence de temps); c’est une dérivée de la conso, c’est effectivement une puissance (moyennée sur 10mn). Il ne faut pas réfléchir en minutes, mais en heures. Et en dérivée. Parce qu’on fait manuellement, l’inverse de ce que fait le compeur: lui, le compteur, il fait une intégrale de la puissance sur le temps. Donc nous on dérive.

      J’utilise toutes les données du compteur: l’index pour prédire ma facture; et la puissance annoncée pour profiler mon installation. Et après seulement 12h de mesure, je vois déjà des choses à modifier dans mon installation. Mon chauffe chauffe au mauvais moment de la journée. Je vais aussi connecter mon rPi à un compteur d’eau (sur l’entrée du chauffe eau), et tenter de prédire/évaluer la consommation d’eau chaude, pour ne le remettre en route qu’une fois qu’on en a consommé les 2/3 (je suis en EJP, je chauffe quand je veux). Mon relevé sur 12h montre des pics de 15mn toutes les 2h; ça sert à rien. Je veux attendre d’avoir tiré les 2/3 avant de rallumer. Ou, au moins 4h tous les 5j. Par ailleurs, mon chaffe est construit en 3000W tri, je l’ai passé en 1200W mono (pour des raisons de différentiel mono phasé moins chère qu’en tri; et je veux pas consommer 3000W en mono).

      Je graph avec Munin.

      JPh tu as un exemple de trame avec ADPS présent ? Mon soucis, c’est que j’ai que une trame toutes les 3s; alors qu’il faut délester dans la seconde; j’ai raté quoi ?

      Répondre
      1. JPh

        Ok avec ton explication (mathématique),
        des Wh divisés par des heures donnent des W.
        L’unité des valeurs 10 mn (des soustractions) sont donc en Watts, et pour les projeter à l’heure je les multiplie par 6, la somme des 6 archives W/h sur 1 heure = des Wh.

        Voilà ce que j’ai dans une trame complète :
        ADCO —xxxxxxxxxx 0
        OPTARIF HC.. <
        ISOUSC 45 ?
        HCHC 001495633 %
        HCHP 005919533 6
        PTEC HP..
        IINST 006 ]
        IMAX 051 E
        MOTDETAT V1.02- &
        #

        Comme tu peux le voir, I max = 51 A, pour un disjoncteur à 45 A, il faut réagir vite.
        Je n'ai pas le champ ADPS, mais voici ma structure de prog :
        J'ai un script bash qui tourne en permanence et enregistre toutes les trames (environ toutes les secondes, à valider) dans un fichier. Ce fichier "data source" est réinitialisé 1 fois par jour afin qu'il ne soit pas trop gros pour le Pi.
        Le calcul sur les consos s'effectue en lisant le fichier "data source" avec d'autres scripts lancés avec CRONTAB
        Le calcul du délestage s'effectue en lisant le fichier "data source" avec un script spécifique et cela en permanence.
        PS: notre différence de temps de scrutation, provient certainement de la longueur de la trame qui est émise par le compteur, la mienne est toute petite (9 champs), à voir si ton disjoncteur peut tenir plus de 3 secondes ? sinon tu seras amené à délester sans l'info du compteur, en posant des TI sur ton installation (pas glop !) équipements tous faits existent, cf. DELTADORE.

        Répondre
        1. Mathieu

          Désolé Doublehp, je te renvoie la balle ; il faut réfléchir à deux fois avant de critiquer ouvertement un raisonnement, même quand c’est une correction ! Quand tu rectifie quelqu’un, évite de faire une erreur pire. 😉

          Le problème du raisonnement de pommes (bien connu en analyse dimensionnelle), c’est que le coefficient multiplicateur x6 n’était pas sans unité ^^ (6/1h)

          Quand tu consommes 1 kWh en 10 min, à consommation constante tu auras au final 6 kWh en 1 heure. Donc la puissance est bien 6 kW. Voilà un exemple pour expliquer le coefficient multiplicateur.

          Répondre
        2. Doublehp

          Je suis dans la doc du Linky, qui colle à 99% avec mon compteur. A plusieurs détails près … qui dont que je n’aurai jamais confiance dans un délesteur qui se base sur la TIC: les variations de données d’un compteur à l’autre sont énormes; il y a de trop fortes chances pour qu’un délesteur prétendu TIC réagisse trop tard sur le mien:

          – il y a une latence énorme sur les trames, principalement parce que après chaque ligne, le compteur envoie une ligne vide. L’avantage pour le constructeur du compteur est d’avoir un micro-processeur interne, moins puissant, de moins échantillonner, et de ralentir la cadence d’émission des trames, tout en respectant les critères de timing entre deux lignes: 6.7 à 33.4 ms; avec les lignes vides, ça leur fait plus de 66.8ms entre deux lignes de données (quand il y a une seule ligne vide entre deux données). Au final, la fréquence des trames s’en trouve réduite, avec, si ça les amusant, une trame par minute. La fréquence trame est donc variable selon l’humeur du compteur; et à partir de moins d’une trame par seconde, on ne peut plus réagir assez vite pour délester.

          – sur plusieurs heures d’analyse de données, je n’ai vu, ni sur mon EJP tri, ni sur mon mono HCHP, ni les octets 0x03 ni 0x04 ni 0x0D.

          – 0x02 se trouve aléatoirement, soit après IINST3, soit après MOTDETAT

          Heureusement, sur les compteurs tri, les avertissements de dépassement produisent un changement de comportement; la structures des trames est modifiée pour envoyer exclusivement les informations de dépassement.

          La puissance de ref est calculée avec 200V (pour la souscription).

          IINST est le courant EFFICACE

          PAPP est la puissance APPARENTE

          J’ai beau tout relire 10 fois, j’ai l’impression que l’intensité souscrite (ISOUC, figurant sur l’abonnement) est égale à l’intensité de référence utilisée pour le comparateur pour le dépassement de puissance; l’équation des deux calculs me semble identique. Et effectuée en 200V.

          Mais je n’ai toujours pas compris si le comptage d’énergie se base sur le courant apparent ou efficace, ni sur quelle tension (réelle instantannée, ou 220V).

          Sans entrer dans les détails de mon code, je gère le délestage dès le script de lecture du port série. Les données vont dans une DB SQL dans /dev/shm, pour pas détruire la flash. Ensuite, cron relis SHM toutes les 5mn, fait du tri, et enregistre ses résultats sur la SD.

          Jusqu’à 3A d’excédent, mon disjoncteur tient 10s. A partir de 4A, on passe sous 5s.

          Mon débit de données varie selon les compteurs. Je suis en train de toute ré-écrire; j’ai eu 70 trames par 50mn, mais cette moyenne va changer avec le nouveau code.

          Je fais déjà du délestage local par TI; ça marche très bien. Mais c’est trop local.

          Répondre
          1. Doublehp

            Test rapide:

            EJP tri: 30 trames en 69.8s: 2.32s/trame
            HCHP mono: 30 trames en 46.7s: 1.56 s/t

            Les deux envoient des lignes vides.

            Tri :
            ISOUSC 30
            IMAX1 038
            IMAX2 042
            IMAX3 044
            PMAX 17480
            … et ça n’a pas sauté depuis au moins 3 ans.

            Mono:
            ISOUSC 30
            IMAX 032

            La doc du Linky indique que PMAX en tri est donné pour le jour n-1; alors que les IMAX n’ont aucune indication de date. Je ne sais donc pas si c’est pour la veille, ou depuis la pose. Mes courbes me le diront dans une semaine (en comparant PMAX, avec les maximum de mes courbes).

          2. JPh

            Afin d’éviter la disjonction, j’ai créé des seuils à partir de 6 A en dessous de I souscrit.
            Essaie à -15 A, puis petit à petit en te rapprochant du I souscrit, cela peut peut-être compenser la lenteur des trames.

          3. Doublehp

            Test plus long, avec nouvel algo plus fiable: 11000 trames en 22881 1, soit 2.08 s/trame, en EJP tri. 900 en 1402s, soit 1.56s/t en HC mono.

  79. Romain Brethomeau

    Bonsoir j’ai recu le model tout pret avec le connecteur, mais j’utilise deja mon Gpioo 4 est il possible de soudé un fil dessus ? Je l’utilise pour une sonde temperature ds18b20.

    Merci

    Répondre
    1. DoubleHP

      Connais pas le rPi 3, et comprends pas de quoi en détail, mais, si tu compte mettre deux ports série Tx sur la même broche Rx du rPi, c’est mort. Ou mélanger le série avec autre chose, pareil.

      Ce serait possible en construisant un protocole prévu pour; mais, le signal émis par le module TIC n’est pas prévu pour.

      Répondre
        1. DoubleHP

          C’est compliqué de faire du série sur autre chose qu’un port conçu pour, mais ton autre emodule peut probablement être déplacé sur une autre broche. Si tu peux pas, l’USB est très bien.

          Répondre
          1. Romain Brethomeau

            « Nous allons prendre la broche 7 « GPIO 4 » pour piloter la sortie du capteur de température, car c’est la broche dédiée du Raspberry Pi au protocole 1-Wire. »

            voila ce qu’il disent dans le tuto du capteur de température.

          2. DoubleHP

            Le I2C c’est et très facile à implémenter en bit-banging. Le 1wire, je connais pas bien; mais vu que c’est auto-synchrone, ça va être compliqué de déplacer sur une broche pas prévue pour.

            Pour ça que je préfère l’I2C; plus facile à faire avec ce qu’on a sous la main. Parce qu’au besoin, facile à coder à la main. Ca veut dire qu’un rPi peut, en bit banging, avoir facilement 4 ou 6 bus I2C (alors qu’il en a un seul prévu pour). Pour une sonde de temps I2C: MCP9803; en sample chez le constructeur, ou horriblement chère sur Ebay.

    2. destroyedlolo

      Salut,
      Je dois avouer que je ne vois pas pourquoi tu parles du GPIO4 mais …
      Si tu as un DS18b20 directement sur ce GPIO, c’est parce que le 1-wire est émulé en soft … donc tu dois pouvoir changer dans une config kernel quelconque ce port.
      Sinon, et c’est la meilleure solution : tu peux utiliser un adaptateur I2C -> 1-wire comme je l’ai mis sur mon site (http://destroyedlolo.info/BananaPI/1wire/).
      A+

      Répondre
  80. Romain Brethomeau

    J’ai bien reçu le module usb il fonctionne quand je fais stty -F /dev/ttyUSB0 1200 sane evenp parenb cs7 -crtscts Avec un cat /dev/ttyUSB0.
    Par contre dès que je reboot la pi je n’ai plus de réponse au cat.

    J’ai aussi essayé de mettre les fichiers php dans le dossier cd /var/www/ et il s’efface au reboot.

    Qui peux m’éclairer ?

    Répondre
    1. DoubleHP

      Soit tu utilise un logiciel de terminal série

      /usr/bin/picocom -b 1200 -d 7 -p e -f n /dev/ttyAMA0

      soit tu dois taper stty avant chaque lancement de ton script maison.

      Il y a une solution pour rendre les paramètres permanents, mais, je ne t’en parlerai pas; parce que ce ne serait pas propre, sujet à bug, et si tu utilise un gros logiciel de gestion du machin, il se débrouillera tout seul.

      Donc, oui, tant que tu utilise cat, tu dois taper stty avant, après chaque reboot. De toute façon, tu ne passera pas ta vie à utiliser cat. Ce n’est pas viable à long terme. Et crois moi, si tu bricole du cat avec PHP, tu va perdre des heures, et après quelques semaines à t’échiner à ce que çane fonctionne pas, tu fouttra tout à la poubelle.

      Je ne connais aucun scénario ou les fichiers de /var/www disparaissent après reboot, sans avoir eu préalablement de message d’erreur. Linux n’efface pas les choses sans prévenir. Le seule endroit ou les choses sautent au reboot, c’est /tmp, et /dev/shm. Puis, les logs gérés par logrotate. /var/www est un dossier de données fiable à vie. Si tes données n’y restent pas, soit tu es en lecture seule (et je te certifie que tu as des tonnes de m’essage d’erreur), soit ta SD est morte (et tu devrais aussi avoir des tonnes d’informations noyeau concernant des erreurs sur mmc0).

      Ma solution à moi n’est pas mure pour une publication. Et elle est probablement inadaptée pour la majorité des autres gens. J’ai prévu de gérer une infinité de compteurs par rPi (4 à court terme); ça implique une très grosse lourdeur des procédures.

      Répondre
      1. destroyedlolo

        /var servant entre autre à placer des fichiers temporaire, il est « possible » qu’il soit en tmpfs et donc disparaissent à chaque reboot.
        Ca se soit dans /etc/fstab et serait une erreur de configuration.
        Seul /var/tmp devrait être en tmpfs, voir /var/log si on s’en fout.

        Répondre
      1. Romain Brethomeau

        bash: df-h : commande introuvable
        root@raspberrypi:/var/www# df -h
        Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
        /dev/root 15G 3,7G 11G 27% /
        devtmpfs 459M 0 459M 0% /dev
        tmpfs 463M 0 463M 0% /dev/shm
        tmpfs 463M 6,3M 457M 2% /run
        tmpfs 5,0M 4,0K 5,0M 1% /run/lock
        tmpfs 463M 0 463M 0% /sys/fs/cgroup
        /dev/mmcblk0p1 60M 20M 41M 34% /boot
        tmpfs 93M 0 93M 0% /run/user/1000

        Répondre
        1. destroyedlolo

          En fait, fallait faire
          df -h .
          (avec le point qui permet de savoir réellement la situation du répertoire /var/www).
          Peux-tu le refaire ?

          Par contre, je suis perplexe :
          – la réponse que tu as eu indiquerai que ce FS est bien sur la carte … étonnant dans ce cas que tu reviennes à la situation initiale …
          – la seule chose que j’y verrai serait l’utilisation d’un truc à la squatshFS mais .. le df ne dit rien 🙁

          Qu’as-tu dans ton /var/log/messages juste au moment du boot ?

          Répondre
  81. Romain Brethomeau

    voilà un extrait du fstab

    proc /proc proc defaults 0 0
    /dev/mmcblk0p1 /boot vfat defaults 0 2
    /dev/mmcblk0p2 / ext4 defaults,noatime 0 1
    # a swapfile is not a swap partition, no line here
    # use dphys-swapfile swap[on|off] for that
    ~

    Répondre
    1. DoubleHP

      Répond dans ton fil; ne crée pas de nouveau fil.

      id
      ça donne quoi ?

      si tu crée des fichiers dans /root ça donne quoi ?

      head /var/log/syslog
      tail /var/log/syslog
      date
      les horaires des lignes de tail doivent correspondre à l’heure en cours; sinon, on utilise le décallage comme décallage de référence. Ensuite, tu regarde les horaires des lignes données par head; si cet horaire est antérieur à ton dernier reboot, alors, le système est normal; si ta première ligne est la date exacte de ton dernier reboot, alors, tu as effectivement un gros soucis de /var vidé à chaque reboot.

      Sur mon rPi, que j’ai rebooté de nombreuses fois ce midi, ma première ligne date de 6AM, qui es l’heure de passage de logrotate. Donc, un reboot n’a pas fait perdre l’heure de mon rPi; pourtant, je ne lui ai pas encore installé sa RTC.

      Vérifie aussi dans
      dmesg
      si ça cause d’erreurs sur mmc0

      Quelle est ta distribution exacte ?

      Répondre
      1. destroyedlolo

        Salut,
        Je n’ai pas de raspberry et je ne connais pas ta distrib mais :
        « Donc, un reboot n’a pas fait perdre l’heure de mon rPi; pourtant, je ne lui ai pas encore installé sa RTC. »
        Ne me parrait pas étonnant :

        – Il y a une RTC dans pas mal de CPU ARM (c’est le cas par exemple de l’A20 de mes BananaPI). Ce qui fait que l’horloge peut-être conservées lors des reboots (ca dépend de comment est fait le reboot).

        – Dans certaines distributions, il y a un service nommé « softclock » qui va sauvegarder l’heure courante dans un fichier. Lorsque la machine boot, il met l’horloge système à l’heure contenu dans ce fichier (ce n’est qu’un pis-allé mais c’est mieux que rien).

        Répondre
        1. DoubleHP

          On est dans une page de blog qui spécifie qu’on travaille sur rPi; c’et un prérequis. L’auteur ne stipule pas sa distro; mais le fabriquant recommande RaspBian; par défaut, on peut présumer que c’est la distro utilisée; sinon, il faut préciser. Ceux qui n’ont pas de rPi, et/ou pas Raspbian, sans le dire, on peut rien pour eux.

          C’était dans la spécification du rPiv1 qu’un simple reboot lui fait complètement perdre l’heure. C’était un choix délibéré des concepteurs: deux rPiv1A sont identiques lors du branchement du câble. La seule chose qui peut différencier des rPiv1B ce sont leurs adresses MAC. Je travaille avec des v2, mais je n’ai pas vérifié si ça a changé autour de la RTC. Le problème n’est pas de savoir si les ARM sont capables d’avoir des RTC; le problème est que les concepteurs du rPi ont choisi que tous les rPi seraient absolument IDENTIQUES, et donc, non différenciables, au moment de l’allumage.

          Après, moi, j’installe NTP; donc dès qu’il a du réseau, il se passe forcément des choses. Et depuis 2013, Raspbian utilise un mécanisme de gestion de l’heure qui va fixer une heure système ultérieure à la dernière date connue sur le disque; mais, ça ne l’empêche pas d’être en retard, si il a été débranché 6 mois, et est rebranché sans réseau. C’est à la base une option de Debian, mais modifiée par Raspbian. Le plus simple étant d’utiliser la date de dernière modification de la table de fichier ext; dans une Debian normale, les sauts temporels provoquent des rescan complets; dans Raspbian, ils ont inversé la procédure, et se base sur la date de dernière écriture pour choisire une heure système. A défaut de RTC et de réseau, ça fonctionne bien.

          Au final, j’ai l’impression que Romain, soit utilise autre chose que Raspbian, soit a de nombreuses erreurs qu’il ne nous retranscrit pas. Parce que le seul cas ou j’ai des pertes de fichiers, c’est quand la SD est corrompue; ça m’arrive très souvent avec le rPi.

          Vu son / , il a bien fait son expand-fs (j’ai eu des pertes par manque de place); autrement, ce qu’il décrit ressemble à un comportement de Knoppix/Ubuntu (et donc, on sort de Raspbian).

          Soit il utilise une distro autre que Raspbian, soit il néglige des messages d’erreur.

          Répondre
          1. Romain Brethomeau

            alors voici ma distribution :
            l
            Last login: Fri Sep 2 14:36:00 2016 from 192.168.1.23
            pi@raspberrypi:~ $ lsb release -a
            -bash: lsb : commande introuvable
            pi@raspberrypi:~ $ lsb_release -a
            No LSB modules are available.
            Distributor ID: Raspbian
            Description: Raspbian GNU/Linux 8.0 (jessie)
            Release: 8.0
            Codename: jessie

            J’ai lancé les commandes que tu as demandé :

            pi@raspberrypi:~ $ head /var/log/syslog
            Aug 17 06:25:06 raspberrypi rsyslogd: [origin software= »rsyslogd » swVersion= »8.4.2″ x-pid= »486″ x-info= »http://www.rsyslog.com »] rsyslogd was HUPed
            Aug 17 06:26:01 raspberrypi rsyslogd0: action ‘action 17’ resumed (module ‘builtin:ompipe’) [try http://www.rsyslog.com/e/0 ]
            Aug 17 06:26:01 raspberrypi rsyslogd-2359: action ‘action 17’ resumed (module ‘builtin:ompipe’) [try http://www.rsyslog.com/e/2359 ]
            Aug 17 06:26:01 raspberrypi CRON[22323]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:26:29 raspberrypi wpa_supplicant[448]: wlan0: WPA: Group rekeying completed with 14:0c:76:75:29:31 [GTK=CCMP]
            Aug 17 06:27:01 raspberrypi CRON[22754]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:28:01 raspberrypi CRON[23186]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:29:01 raspberrypi CRON[23630]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:30:02 raspberrypi CRON[24068]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:30:02 raspberrypi CRON[24073]: (root) CMD (if [ -x /etc/munin/plugins/apt_all ]; then /etc/munin/plugins/apt_all update 7200 12 >/dev/null; elif [ -x /etc/munin/plugins/apt ]; then /etc/munin/plugins/apt update 7200 12 >/dev/null; fi)
            pi@raspberrypi:~ $

            pi@raspberrypi:~ $ tail /var/log/syslog
            Sep 2 16:16:01 raspberrypi CRON[22777]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:16:15 raspberrypi rsyslogd-2007: action ‘action 17’ suspended, next retry is Fri Sep 2 16:17:45 2016 [try http://www.rsyslog.com/e/2007 ]
            Sep 2 16:17:01 raspberrypi CRON[23216]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:17:01 raspberrypi CRON[23215]: (root) CMD ( cd / && run-parts –report /etc/cron.hourly)
            Sep 2 16:17:50 raspberrypi rsyslogd-2007: action ‘action 17’ suspended, next retry is Fri Sep 2 16:19:20 2016 [try http://www.rsyslog.com/e/2007 ]
            Sep 2 16:18:01 raspberrypi CRON[23675]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:19:01 raspberrypi CRON[24155]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:19:22 raspberrypi rsyslogd-2007: action ‘action 17’ suspended, next retry is Fri Sep 2 16:20:52 2016 [try http://www.rsyslog.com/e/2007 ]
            Sep 2 16:20:01 raspberrypi CRON[24594]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:20:01 raspberrypi CRON[24595]: (root) CMD (if [ -x /etc/munin/plugins/apt_all ]; then /etc/munin/plugins/apt_all update 7200 12 >/dev/null; elif [ -x /etc/munin/plugins/apt ]; then /etc/munin/plugins/apt update 7200 12 >/dev/null; fi)
            pi@raspberrypi:~ $

            la commande date donne bien l’heure du jour.

          2. destroyedlolo

            [HS] « c’est quand la SD est corrompue; ça m’arrive très souvent avec le rPi. »
            Ouai, ca remonte souvent dans les forums de domotique ou de *PI, concernant les rPI … mais ca vient des distrib (c’est au moins le cas sur Raspbian, Ubuntu et dérivé) et quand je vois le fstab, ça ne m’étonne qu’a moitié.

            Les SD n’étant pas endurante en écriture, il faudrait au moins :
            – mettre /tmp en tmpfs et si possible /var/tmp avec
            – désactiver la swap (si elle se fait sur la SD, c’est une cata)

            de plus, une base de données n’a rien a faire sur une SD.

            J’ai une utilisation très poussées de mes bananes (web, bdd, domotique et de nombreuses compilations car sous Gentoo et faisant du dev), mais depuis les 2 ans que je les utilise, je n’ai jamais cramé la moindre SD.

            A+

          3. Romain Brethomeau

            J’ai fais un dmesg cette ligne me parait bizarre non ?

            [ 4.513136] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

          4. Romain Brethomeau

            alors voici ma distribution :
            l
            Last login: Fri Sep 2 14:36:00 2016 from 192.168.1.23
            pi@raspberrypi:~ $ lsb release -a
            -bash: lsb : commande introuvable
            pi@raspberrypi:~ $ lsb_release -a
            No LSB modules are available.
            Distributor ID: Raspbian
            Description: Raspbian GNU/Linux 8.0 (jessie)
            Release: 8.0
            Codename: jessie

            J’ai lancé les commandes que tu as demandé :

            pi@raspberrypi:~ $ head /var/log/syslog
            Aug 17 06:25:06 raspberrypi rsyslogd: [origin software= »rsyslogd » swVersion= »8.4.2″ x-pid= »486″ x-info= » »] rsyslogd was HUPed
            Aug 17 06:26:01 raspberrypi rsyslogd0: action ‘action 17’ resumed (module ‘builtin:ompipe’) [t/e/0 ]
            Aug 17 06:26:01 raspberrypi rsyslogd-2359: action ‘action 17’ resumed (module ‘builtin:ompipe’) [try /e/2359 ]
            Aug 17 06:26:01 raspberrypi CRON[22323]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:26:29 raspberrypi wpa_supplicant[448]: wlan0: WPA: Group rekeying completed with 14:0c:76:75:29:31 [GTK=CCMP]
            Aug 17 06:27:01 raspberrypi CRON[22754]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:28:01 raspberrypi CRON[23186]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:29:01 raspberrypi CRON[23630]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:30:02 raspberrypi CRON[24068]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Aug 17 06:30:02 raspberrypi CRON[24073]: (root) CMD (if [ -x /etc/munin/plugins/apt_all ]; then /etc/munin/plugins/apt_all update 7200 12 >/dev/null; elif [ -x /etc/munin/plugins/apt ]; then /etc/munin/plugins/apt update 7200 12 >/dev/null; fi)
            pi@raspberrypi:~ $

            pi@raspberrypi:~ $ tail /var/log/syslog
            Sep 2 16:16:01 raspberrypi CRON[22777]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:16:15 raspberrypi rsyslogd-2007: action ‘action 17’ suspended, next retry is Fri Sep 2 16:17:45 2016 [try /e/2007 ]
            Sep 2 16:17:01 raspberrypi CRON[23216]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:17:01 raspberrypi CRON[23215]: (root) CMD ( cd / && run-parts –report /etc/cron.hourly)
            Sep 2 16:17:50 raspberrypi rsyslogd-2007: action ‘action 17’ suspended, next retry is Fri Sep 2 16:19:20 2016 [try e/2007 ]
            Sep 2 16:18:01 raspberrypi CRON[23675]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:19:01 raspberrypi CRON[24155]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:19:22 raspberrypi rsyslogd-2007: action ‘action 17’ suspended, next retry is Fri Sep 2 16:20:52 2016 [try /e/2007 ]
            Sep 2 16:20:01 raspberrypi CRON[24594]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
            Sep 2 16:20:01 raspberrypi CRON[24595]: (root) CMD (if [ -x /etc/munin/plugins/apt_all ]; then /etc/munin/plugins/apt_all update 7200 12 >/dev/null; elif [ -x /etc/munin/plugins/apt ]; then /etc/munin/plugins/apt update 7200 12 >/dev/null; fi)
            pi@raspberrypi:~ $

            la commande date donne bien l’heure du jour.

          5. DoubleHP

            destroyedlolo C’est avant tout un problème de qualité des SD; ça arrive en moins de 8j avec les machins chinois. En faisant attention. Ensuite, c’est lié à l’absence de fiabilité d’ext; y a des FS beaucoup plus résistants aux pannes de courant. Ensuite, au fait que le rPi est considéré comme un produit HARD, à débrancher sauvagement, intégrant un OS conçu pour des stations ordinaires avec des disques dignes de ce nom. Le rPi, victime de son succès, se retrouve au mauvais croisement, entre des SD de qualité pourrie, et un OS absolument pas adapté. Linux est embarqué dans de nombreux produits hard; mais ce sont des distributions prévues pour. Avec séparation des binaires (une partition RO pour le système, une partition RW pour la conf).

            Rien que pour les téléphones, qui pourtant embarquent d’usine des FLASH de qualité acceptable, on a conçu ça:
            https://en.wikipedia.org/wiki/F2FS

            Après, il faut choisir: accélérer les commit tue la FLASH; les ralentir augmente le risque de corruption. Raspbian n’a pas du tout choisit, et ne stipule aucune optimisation ni dans un sens ni dans l’autre. Les SD premier prix font 8j avec moi.

            Mon soucis, c’est que même en prenant la uSD la plus chère du marché, des SanDisk garanties 10 ans, dans mon téléphone, elles meurrent en 1 an. Donc une fois par an, je passe 1 mois à raler que mon téléphone bug, puis 2 semaines sans SD du tout, durant le RMA.

            Après, côté forum dev de rPi, j’ai vu des messages incriminant le chipset lui même; le chipset hard aurait eu des soucis sur rPiv1; y avait des patch soft pour aider un peu. J’ai pas suivi d eprès.

            Romain

            Cette ligne est complètement normale, si tu as débranché l’alimentation. C’est là que Raspbian me pose soucis: il est incapable de faire lui même le fsck. Donc, tu dois le faire; c’est simple: en root:
            fsck /dev/mmcblk0p1
            mais pour 300 raisons, il n’ira pas jusqu’au bout. Et même après un reboot propre, ton problème (le message que tu viens de citer) risque de persister. En soit, tant que tu as ce message, on est censé ne pas chercher plus loin.

            Raspbian récente, c’est bon.

            Tes derniers logs donnent une heure normale. Donc on peut se fier aux anciens. Tu as eu un logrotate weekly le 17 aout, c’est normal. Ca veut dire que ton rPi n’a pas été branché en continu; si il avait été branché, tu aurais du avoir un logrotate samedi 27; mais c’est pas grave. Donc, si c’était pas branché, c’est que le machin a rebooté. Donc, qu’il s’est remis à l’heure. Donc que ton log du 17 est antérieur à ton dernier boot. Donc, que ce log a persisté après un reboot. Donc, un reboot n’efface pas /var

            Donc tes données sont effacées pour une autre raison. destroyedlolo avant évoqué un TMPFS, c’était une bonne piste, désormais rejetée.

            Soit un service efface les choses (jamais vu ça de ma vie sur /var/www ), soit tu as un secteur défectueux, sur la table de fichier, qui justifie que linux accepte l’écriture du fichier, mais ne parvient pas à réellement le mettre sur la SD – tu devrais avoir un message concernant la corruption (pas systématique).

            Le chmod, par contre, qui revient à son ancienne valeur, peut s’expliquer par un service qui rectifie les droits; ça j’en ai vu, souvent. C’est pas une bonne manière de faire, mais je l’ai vu. Ca dépend de ton démon web. C’est quoi ton démon web ?

            Tu n’as pas répondu à toutes mes questions:
            id
            test d’écriture sur /root/

            Pour revenir sur ton fsck, faut le lancer en root. Ce qui me gêne, c’est qu’on est hors sujet de la TIC-rPi; là, on est dans le pure Linux, même plus dans le Raspbian. Ton problème relève d’un forum Raspbian; pas d’un blog sur la TIC.

  82. Ludovic

    Bonjour à tous,
    Est il possible de déclencher une sortie du GPIO en fonction de la valeur PAPP (puissance apparente).
    l’idée est de créer une sorte de délesteur.
    Exemple : si PAPP>10000 alors PIN 8 du GPIO passe à l’etat haut.
    si PAPP<8000 alors PIN 8 du GPIO passe à l'etat bas.

    Je suppose que c'est tout à fait possible mais je ne trouve rien sur internet à ce sujet.
    Merci pour vos reponses

    Répondre
    1. DoubleHP

      Tout dépend de ton logiciel de gestion. J’ai terminé l’écriture du mien, mais je ne sais pas ou le publier. C’est un énorme logiciel que j’ai mis 3 semaines à écrire. En bash, donc facile à modifier.

      Mon code inclut l’interception des lignes ADPS; donc ultra simple de rajouter l’interception de PAPP. Toutefois, je te déconseille de passer par PAPP; c’est une aproche inefficace non universelle et non portable. Il faut passer par IINST.

      Mon code est gros; et côté interface grpahique, j’ai mis des alarmes lorsque IINST dépasse ISOUSC-5. Mais ça se fait avec 5mn de retard. Alors qu’ADPS est intercepté dans la seconde au niveau du port série.

      Le code PHP fournit par l’auteur de ce blog ne convient pas; executé trop rarement. En 1mn, il peut se passer BEAUCOUP de choses. Mon code lit toutes les trames en continu; je capte 100% de ce qui sort du compteur. 192 trames par 5mn sur un HPHC mono, et 143 pour EJP tri. Je peux difficilement publier, parce que j’ai pas encore tout testé. J’ai pas vérifié le comportement en cas de coupure de signal, ni joué avec ADPS; et pas non plus vérifié le bon fonctionnement du préavis.

      Ce qui est dingue, c’est qu’en moins de 12h d’observation, j’ai déjà identifié plusieurs problèmes par habitation.

      Répondre
      1. JPh

        Salut,
        Je suis d’accord sur le fait que le délestage doit être réalisé sur l’intensité et non pas sur la puissance, le disjoncteur étant réglé sur l’intensité.
        Voici un script de délestage, facilement adaptable : (notamment pour anticiper la disjonction !)
        #!/bin/bash
        echo  » Gestion des intensités dans les trames émises par le compteur électrique »
        echo  » TARIF BLEU + option HC »
        # Trame reçue :
        # ADCO xxxxxxxxxxxxxx
        # OPTARIF HC.. <
        # ISOUSC 45 ?
        # HCHC 001495633 %
        # HCHP 005919533 6
        # PTEC HP..
        # IINST 006 ]
        # IMAX 051 E
        # MOTDETAT V1.02- &
        # La lecture de la trame est effectuée dans un autre script, qui écrit les données dans le fichier tic-trames.jplr
        # la variable ISOUSC = intensité souscrite en ampères (puissance soucrite, et calibre du disjoncteur d'abonné ENEDIS)
        # la variable IINST = instensité instantannée
        # la variable IMAX = instensité maximale atteinte (je ne sais pas comment elle est remise à zéro)
        # Une connexion à Internet permet en temps réel, la transmission d'une alarme par SMS, mail, …
        while :
        do
        # Récupération des données
        ISOUSC=$(grep ISOUSC tic-trames.jplr | tail -1 | awk '{printf("%d", $2);}')
        IINST=$(grep IINST tic-trames.jplr | tail -1 | awk '{printf("%d", $2);}')
        IMAX=$(grep IMAX tic-trames.jplr | tail -1 | awk '{printf("%d", $2);}')
        #ISOUSC=10
        if test $IINST -gt $ISOUSC;
        then echo " Dépassement contrat, Intensité instantanée " $IINST" / Contrat: "$ISOUSC
        else echo " Pas de dépassement, Intensité instantanée " $IINST" / Contrat: "$ISOUSC
        fi
        done
        echo " "
        exit 0;

        Répondre
        1. DoubleHP

          JPh:
          – tu récupère une base de donnée existante; si la vitesse de rafraichissement de cette base est de plus de 5s, le disjoncteur aura sauté avant. Si cette base est temps réel, alors, tu va saturer ton CPU avec une boucle torp rapide
          – il ne faut pas comparer IINST avec ISOUSC; mais, soit avec une valeur inférieure à ISOUSC, soit, chercher le tag ADPS.
          – si ton logiciel de monitoring amont, celui qui reçoit le port série, n’intègre pas directement, toute couche suplémentaire ajoute du délais, et donc, augmente le risque de disjonction. Il vaut alors mieux du pliquer le port série avec des FIFOs non bloquantes, une pour ton monitor habituel, et un autre indépendant pour une gestion rapide des ADPS

          Répondre
        2. DoubleHP

          Ah … je savais bien …. j’étais sur de moi, mais je me souvenais plus la raison. Fonder un délestage sur un dépassement de puissance ne PEUT PAS fonctionner. Ca peut marcher chez toi, ponctuellement, et sous condition; mais c’est une solution que tu ne dois surtout pas publier. Parce que la ligne ADPS est ajoutée au reste, uniquement sur les compteurs mono. Sur un compteur tri, la structure de la trame est complètement modifiée, pour ne laisser justement que les lignes IINST et ADIR.

          C’est une chose très importante pour un compteur tri; parce qu eles trames tri sont, à la base beaucoup plus longues que les mono. Et faire du délestage avec une trame toutes les 2s, c’est passablement inutile. Les trames sont donc raccourcies, pour ne conserver que le minimum: ADIR ADCO et IINST. Tu n’as plus ISOUSC ni PAPP.

          Ca m’est revenu ce matin.

          ***

          Sinon, j’ai enfin la réponse à ma question de fond: enfin, un morceau de réponse. La puissance facturée ne correspond à aucune valeur de mesure instantannée. J’ai fait des calculs sur IINST et sur PAPP, et ça ne correspond pas du tout. En moyenne sur un jour, et par ordre croissant:
          – IINST*200 : 1.62 KW moyen sur la journée
          – différentiel des index, 1.72 KW
          – PAPP , 1.96 KW

          Donc, le calcul entre IINST et PAPP fait bien intervenir des facteurs qui ne sont pas donnés dans la TIC. Et il y a encore d’autres facteurs pour arriver aux index.

          Répondre
          1. JPh

            – j’ai un comptage bleu monophasé avec option heure creuse
            – les trames que je reçoit (qui sont courtes, voir plus haut) sont lues en temps réel avec un temps de cycle chaque type de compteur possède ses propres caractéristiques de trames, et donc la prog que j’ai ne peut pas être transposée à tous les compteurs.

            Je maintiens que le principe du délestage doit se faire dur l’intensité, car c’est elle qui fait sauter le disjoncteur !

            Il y a peut être un paramètre que tu dois intégrer dans ton raisonnement :
            Tu es en triphasé, tu devrais donc avoir dans ta trame 3 infos IINST, et que tu as peut être un équilibrage des équipements à réaliser pour éviter la disjonction.
            Le ISOUSC devant être je pense le max par phase.

            PS:
            – quand tu parles de « puissance facturée » : je ne comprends pas, pour moi il y a 2 choses de facturées sur un tarif bleu : l’abonnement (le ISOUSC, l’intensité maximale réglée sur le disjoncteur et ramené en KVA théorique sur la facture), et la consommation en kWh, par différence d’index entre 2 périodes.
            – en effectuant des calculs sur la lecture toute les 5s de PAPP (puissance apparente) tu auras toujours un décalage dans tes calculs, car la tension et le COS varient en permanence. ex1: ton installation est au repos tu as 430V entre phases, ex2 : ton installation est au maximum, tu as 380V entre phases. idem en mono, à chaque lecture de trames (>5s) tu as perdu ce qui c’est passé entre les 2 lectures.
            – pour moi la valeur des index n’est pas contrôlable comme cela :
            Il existe un organisme d’état, qui habilite les compteurs, classe de précision, norme MID, http://www.lne.fr/ … par rapport à des mesures physiques étalons établies sur des bancs de test avec des constantes,
            – je pars donc sur l’hypothèse suivante : mon compteur est un équipement conforme aux normes en vigueur, et contrôlé par état. Je me fie totalement aux infos qu’il m’envoie. Je travaille sur l’intensité pour le délestage, et sur la différence d’index pour l’énergie.

          2. DoubleHP

            IINST permet un délestage préventif; ADPS est curatif, et nécessite une réaction urgente.

            La disjonction se fait quand une pahse dépasse en courant; si une pahse saute, c’est qu’elle est surchargée; qu’on soit en mono, ou en tri, c’est pareil. Ce que le tri permet, c’est de déplacer un appareil d’une phase surchargée, vers une phase peu chargée. Chose très compliquée à faire en temps réel, (pas impossible, mais ça nécessite l’usage de basculateur très couteux: des relais à couplage mécanique).

            Je n’ai pas sauté depuis que j’ai installé un délesteur basique sur le CE (5 ans).

            Ce que j’appelle la puissance facturée, c’est ce que tu appelle la consommation, exprimée dans les index. Je la différencie des puissances instantannée, et apparentes.

            J’ai un décallage entre PAPP et les index, mais, très faible, et relativement constant. Impossible d eme fier à IINST, parce que pas du tout assez précis. C’est là qu’il nous manque des informations sur la manière dont les compteurs génèrent la TIC; et ce n’est pas indiqué dans les docs que j’ai lues. Non seulement il manque la tension, et le cos, mais, j’ignore aussi si les valeurs envoyées sont les valeurs instantannées (calculées sur le centième de seconde qui précère), ou si ce sont des valeurs moyennes depuis la dernière trame. J’arrive à récupérer presque 100% des trames (j’ai moins de 1% de perte). Dans le premier cas, tu aurais raison, un pic de consommation entre deux trames est invisible à la TIC; dans le second cas, mes relevés devraient coller parfaitement.

            Mais considérant que les appareils sont censés respecter certaines normes concernant la forme de leur consommation, les pics courts sont rares; et leur répétition est interdite. Les radiateurs ont tous un cycle d’au moins 5 mn; et la machine la plus rapide que je connaisse est ma plaque induction, avec une cycle de 3 à 5s.

            J’ai été contraint de contrôller la fiabilité d’un de mes compteurs par un locataire qui contestait ses factures EDF. Le contrôle du conmpteur par EDF coutant 350e, je ne voulais pas le faire pour rien. Donc, j’ai vérifié que IINST et PAPP correspondent … et sont conforme aux valeurs de mes 4 ampèremètres. IINST colle parfaitement; PAPP, ça a été plus compliqué; précisément à cause de la tension; mais ma mesure collait à 2% près (par défaut evidément) en prenant la tension au compteur (et pas au disjoncteur: clairement, le cable entre compteur et disjoncteur a une perte de 4%; en prenant la tension au logement, je trouvais que le compteur surfacturait de 7% la conso; mais en prenant la tension au compteur, on trouve une PAPP mesurée, 1.8% sous celle de la TIC).

            Ensuite, je trace avec Munin la dérivée des index, et PAPP … et je regarde mes moyennes sur une semaine. Et ça colle très bien. Les courbes se suivent, et les chiffres sont proches. Faut pas trop pousser l’analyse non plus, puisque le compteur donne des relevés TRES aproximatifs (tout est arrondi à l’unité). Ma conclusion est que les index donnent des valeurs parfaitement cohérentes, et que le compteur compte correctement; et donc, je refuse de payer 350€ de vérification; après, si lui veut les payer, il se débrouille.

            Je relève toutes les trames TIC; puis je fais des moyennes sur 5mn, en conservant aussi les valeurs min, max, et moyennes, de tout. J’en ai besoin sur tous mes compteurs EDF pour avertir les locataires permanents de leur consommation, et sur le gite, pour surfacturer la surconsommation (un gars m’a tiré 50e d’EDF en une semaine; j’ai le droit sur surfacturer le dépassement au delà d’un quotas défini). Je dois non seulement archiver tous mes relevés, mais aussi, en cas de procès, pouvoir prouver qu’un habitant a consommé ce que je lui réclame.

            J’ai passé un temps fou sur ces problèmes de TIC; mais ça vise à résoudre des problèmes hallucinants avec mes locataires.

  83. DoubleHP

    Pour info, je viens de tomber sur un compteur qui émet des trames très courtes, sans PAPP; c’est un tarif BASE 15A mono:

    ADCO 049801523987 C
    OPTARIF BASE 0
    ISOUSC 15 <
    BASE 063057946 3
    PTEC TH.. $
    IINST 000 W
    IMAX 001 @

    En fait, le truc vise tellement à l'économie de lignes, que je suis étonné qu'il transmette un PTEC en BASE. Quitte à faire léger … PTEC ne sert à rien en BASE …

    Répondre
  84. Charles Cauche

    Bonjour,

    Je possède un compteur ICE dans mon entreprise et ENEDIS (ERDF) a récemment posé une protection galvanique sur ma TIC. Je dois donc récupérer S1 et S2 à la sortie de cette protection (Module Michaud « Découpleur C14.100-C15.100 »).

    Depuis, plus rien ne fonctionne… Auriez-vous une explication ?

    Bonne journée,

    Charles

    Répondre
      1. Charles Cauche

        Hello,
        Je peux envoyer une photo éventuellement mais je ne sais pas comment…

        Sur le module, il est simplement indiqué :

        ^ ^
        | |
        COMPTEUR

        DECOUPLEUR
        NF C 14-100
        ===========
        NF C 15-100

        TELEINFORMATION
        CLIENT
        | |
        I1 I2

        Répondre
      2. DoubleHP

        Si ça ne fonctionne plus, c’est qu’un des deux montages n’est pas conforme à la norme. Mes modules maison marchaient sur certains compteurs, et pas d’autres. Parce que le module simple montré ici ne respecte pas la norme, et a besoin d’un signal de puissance moyenne; quand le signal est au plancher de la norme, ça ne fonctionne pas. J’ai modifié mon montage pour que ça passe, mais c’est très fébrile. J’ai touché la limite entre la norme, et les composants premier prix. Il suffit que le module Michaud envoie un signal au plancher de la norme pour que le montage maison ne capte plus rien. Seul un oscilloscope permet de le vérifier précisément; un multimètre peut aider, mais pas toujours suffire (pour connaitre la tension crète du signal; mais à cause de la modulation, il faut un bon multi).

        Après, le module Michaud pourrait être hors spec; si l’oscillo prouve qu’il est hors spec, tu le fais changer aux frais d’EDF.

        Ensuite, tu ne dis pas quel montage tu avais avant; les signaux téléreport et téléinfo ne sont pas identiques; le module Michaud pourrait changer la forme du signal, et même son code. Ton ancien module est peut être complètement incompatible avec ce qu’envoie le découpleur.

        Je reste perturbé par un détail: la TIC est, par définition, côté 15-100. L’isoler galvaniquement est bien, mais, ne relève pas de la responsabilité d’EDF. Si on parle de la TIC compteur, alors, sa borne est côté 15-100. EDF n’a pas à y toucher, et tu peux dégager leur truc.

        Si ils sont dans leur droit de t’imposer ce module, c’est que le signal ne vient pas de la 15-100 mais de la 14-100; on est donc pas dans une TIC, mais, autre chose; donc, pas TIC, donc, on ne parle pas du module du présent article.

        Ce qui m’intéresse, ce n’est pas tant le nom exacte de ton découpleur, que, le numéro de modèle de la boite qui émet le signal que tu décode; parce que je pense qu’on ne parle pas d’un compteur domestique ordinaire de type tarif bleu. Il est fréquent d’avoir des bidouilles 14-100 en pro, et indus; ou alors, tu as un très gros abonnement (600V, ou 60 ou 90A).

        => la question initiale est très incomplète; il manque les 3/4 du plan du puzzle.

        Répondre
      3. DoubleHP

        Zut, tapé trop vite. En fait, le type de compteur est indiqué: ICE. Pas le temps de trop creuser; je vois que c’est un truc Interface Clientelle Emeraude. Commencer par vérifier que ce signal est bien électriquement, et informatiquement compatible avec la TIC avant de mettre en cause le montage utilisé.

        Répondre
        1. Charles Cauche

          Bonjour,
          Merci pour vos retours très précis !

          Nous allons tenter de regarder l’allule du signal avec un multi ou un oscillo si on en a un à disposition… (pas certain).
          En effet, il s’agit d’un compteur ICE (pro/tarif vert de mémoire), sur lequel j’utilise le module GCE / TELEINFO USB.
          Il s’agit bien de la TIC et je ne comprends pas encore pourquoi ERDF a besoin d’ajouter cette protection Michaud… peut-être que la TIC de ce compteur est en 14-100 mais je ne trouve pas cette info pour le moment.

          J’espère m’en sortir bientot !

          Bonne journée,

          Charles

          Répondre
  85. photovoltaïque ?

    Yo ! c’est possible d’adapter un système photovoltaïque à une domotique déjà installée, plus un apport en énergie verte depuis un fournisseur alternatif dans le genre Lampiris ou Enercoop ? –> http://www.dusolaireetdeshommes.com Je fais des branchages et du bricolage chez moi, comme vous pouvez le voir. Mais comme je ne suis jamais sur à 100%, ben mieux vaut se renseigner auprès d’experts.

    Répondre
  86. higgins

    bonjour, j’ai commencé à modifier le script (pas sur que cela s’appel comme ça) teleinfo_func.php pour le rendre compatible avec mon abonnement TEMPO. Je n’ai que des connaissances en VB donc j’ai essayé de comprendre le php et de le modifier.
    En tempo, il y a 3 couleurs et chaque couleur à Heure Pleine / heure creuse. Donc 6 infos.
    avec la spec du compteur j’ai identifié les 6 trames ayant les données qui nous intéressent.
    Le problème c’est qu’on a de deux courbes HP et HC, j’ai donc fait la somme des 3 couleurs (car seule une couleur à une valeur, les autre c’est 0)
    Y’a t-il une personne qui peut me vérifier le script ?
    dans l’absolu, faudrait avoir les courbes des 3 couleurs, mais je me contenterais d’une courbe HP et HC unique pour les 3 couleurs)
    Merci beaucoup!!
    PS je reçois l’optocoupleur demain donc je n’ai pas encore testé le tout 😉

    $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 et les valeurs HP et HC en Wh pour chaque couleurs
    //
    function collectTeleinfoData () {
    global $sqlite;
    $db = new SQLite3($sqlite);
    $db->exec(‘CREATE TABLE IF NOT EXISTS puissance (timestamp INTEGER, hcbleu INTEGER, hpbleu INTEGER, hcblanc INTEGER, hpblanc INTEGER, hcrouge INTEGER, hprouge INTEGER, hchp TEXT, va REAL, iinst REAL, watt REAL);’); // cree la table puissance si elle n’existe pas

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

    $data = array();
    $data[‘timestamp’] = time();
    $data[‘hcbleu’] = preg_replace(‘`^[0]*`’, »,$trame[‘BBRHCJB’]); // conso total en Wh heure creuse BLEU, on supprime les 0 en debut de chaine
    $data[‘hpbleu’] = preg_replace(‘`^[0]*`’, »,$trame[‘BBRHPJB’]); // conso total en Wh heure pleine BLEU, on supprime les 0 en debut de chaine

    $data[‘hcblanc’] = preg_replace(‘`^[0]*`’, »,$trame[‘BBRHCJW’]); // conso total en Wh heure creuse BLANC, on supprime les 0 en debut de chaine
    $data[‘hpblanc’] = preg_replace(‘`^[0]*`’, »,$trame[‘BBRHPJW’]); // conso total en Wh heure pleine BLANC, on supprime les 0 en debut de chaine

    $data[‘hcrouge’] = preg_replace(‘`^[0]*`’, »,$trame[‘BBRHCJR’]); // conso total en Wh heure creuse ROUGE, on supprime les 0 en debut de chaine
    $data[‘hprouge’] = preg_replace(‘`^[0]*`’, »,$trame[‘BBRHPJR’]); // conso total en Wh heure pleine ROUGE, on supprime les 0 en debut de chaine

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

    if($db->busyTimeout(5000)){ // stock les donnees
    $db->exec(« INSERT INTO puissance (timestamp, hcbleu, hpbleu, hcblanc, hpblanc, hcrouge, hprouge, hchp, va, iinst, watt) VALUES (« .$data[‘timestamp’]. », ‘ ».$data[‘hcbleu’]. »‘, ‘ ».$data[‘hppleu’]. »‘, ‘ ».$data[‘hcblanc’]. »‘, ‘ ».$data[‘hpblanc’]. »‘, ‘ ».$data[‘hcrouge’]. »‘, ‘ ».$data[‘hprouge’]. »‘, ‘ ».$data[‘hchp’]. »‘, « .$data[‘va’]. », « .$data[‘iinst’]. », « .$data[‘watt’]. »); »); }

    return 1;
    }

    //
    // enregistre la consommation de la veille en Wh
    //
    function computeLastDayConso () {
    global $sqlite;

    $today = strtotime(‘today 00:00:00’);
    $yesterday = strtotime(« -1 day 00:00:00 »);

    $db = new SQLite3($sqlite);
    //
    // il faut faire le total des 3 couleurs et mettre dans dialy_hX
    //
    $results = $db->query(« SELECT MAX(timestamp) AS timestamp, (MAX(hcbleu) + MAX(hcblanc) + MAX(hcrouge)) AS total_hc, (MAX(hpbleu) + MAX(hpblanc) + MAX(hprouge)) AS total_hp, ((MAX(hcbleu) – MIN(hcbleu) + (MAX(hcblanc) – MIN(hcblanc) + (MAX(hcrouge) – MIN(hcrouge)) / 1000) AS daily_hc, ((MAX(hpbleu) – MIN(hpbleu) + (MAX(hpblanc) – MIN(hpblanc) + (MAX(hprouge) – MIN(hprouge)) / 1000) AS daily_hp FROM puissance
    WHERE timestamp >= $yesterday AND timestamp fetchArray(SQLITE3_ASSOC);

    $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

    if($db->busyTimeout(5000)){ // stock les donnees
    $db->exec(« INSERT INTO conso (timestamp, total_hc, total_hp, daily_hc, daily_hp) VALUES
    (« .$previousDay[‘timestamp’]. », « .$previousDay[‘total_hc’]. », « .$previousDay[‘total_hp’]. », « .$previousDay[‘daily_hc’]. », « .$previousDay[‘daily_hp’]. »); »);
    }
    }

    //
    // recupere les donnees de puissance des $nb_days derniers jours et les met en forme pour les afficher sur le graphique
    //
    function getInstantConsumption ($nb_days) {
    global $sqlite;
    $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; »);

    $data = 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’]);
    //
    // là faudrait voir les 3 couleurs mais c’est compliqué car pas l’info d’enregistrée
    //
    if ($row[‘hchp’] == ‘HP’) {$hchp_indicator =’color: #e0440e’;} else {$hchp_indicator = ‘color: #375D81’;}
    $data[] = « [{v:new Date($year, $month, $day, $hour, $minute, $second), f:' ».date(« j », $row[‘timestamp’]). » « .date(« M », $row[‘timestamp’]). » « .date(« H\hi », $row[‘timestamp’]). »‘},
    {v: ».$row[‘va’]. », f:' ».$row[‘va’]. » V.A’}, ‘ ».$hchp_indicator. »‘, {v: ».$row[‘watt’]. », f:' ».$row[‘watt’]. » W’}] »;
    }

    return implode(‘, ‘, $data);
    }

    //
    // recupere les donnees de consommation des $nb_days derniers jours et les met en forme pour les afficher sur le graphique
    //
    function getDailyData ($nb_days) {
    global $sqlite;
    $now = time();
    $past = strtotime(« -$nb_days day », $now);

    $db = new SQLite3($sqlite);
    $results = $db->query(« SELECT timestamp, daily_hc, daily_hp FROM conso WHERE timestamp > $past ORDER BY timestamp ASC; »);

    $data = array();

    while($row = $results->fetchArray(SQLITE3_ASSOC)){
    $year = date(« Y », $row[‘timestamp’]);
    $month = date(« n », $row[‘timestamp’])-1;
    $day = date(« j », $row[‘timestamp’]);
    $data[] = « [new Date($year, $month, $day), {v: ».$row[‘daily_hp’]. », f:' ».$row[‘daily_hp’]. » kWh’}, {v: ».$row[‘daily_hc’]. », f:' ».$row[‘daily_hc’]. » kWh’}] »;
    }

    return implode(‘, ‘, $data);
    }

    ?>

    Répondre
  87. higgins

    bonjour, j’essaye en vain de faire fonctionner cette fichue téléinfo. Après avoir tout bien branché et configuré (enfin je le pensais) voici ce que j’obtiens dans le cat /dev/ttyS0:

    http://img4.hostingpics.net/thumbs/mini_837032rpiteleinfo.jpg

    j’ai essayé pas mal de config, soit y’a rien soit je n’ais que ces caractères « ? ». Cela à fonctionné qu’une seule fois et juste un cycle et après c’était de nouveau que des « ? » (en ayant fait aucune modification bien sur)

    Est-ce un problème de config du port série ?

    J’ai un RPI3 avec pixel tout mis à jour.

    MERCI !!

    Répondre
    1. DoubleHP

      Ton image est minuscule, je vois rien. ttyS0 n’est pas un port série valide dans le cadre de l’article. Tu dois détailler ta configuration. J’ai eu des problèmes de ce type avec un dongle USB-série chinois incapable de gérer le mode requis (oscillo nécessaire pour le prouver).

      Répondre
  88. Dia dell'arte

    Bonjour,
    Avec un RPI3, et un optocoupleur SFH620A, j’obtiens la même chose higgins. J’utilise aussi le dev ttyS0 puisque selon vos indications, ttyS0 remplace ttyAMA0 sur le RPI3 (après avoir fait la modif dans /boot/cmdline.txt). Y’a t-il d’autres modification à réaliser sur la config du RPI3 jessie ?
    Merci.

    Répondre
    1. higgins

      j’ai essayé domoticz mais les GPIO ne fonctionnent pas, je test jeedom en espérant que l’intégration de la téléinfo sera plus aboutie… si ça marche pas je ne sais pas quoi faire…

      Répondre
      1. Dia dell'arte

        En fait, j’avais oublié d’exécuter la commande suivante (où ttyS0 remplace ttyAMA0). Peut-être est-ce la même chose pour vous higgins ?

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

        Répondre
        1. higgins

          merci, je l’avais exécutée au début de mes recherches et cela ne marchait pas. Je viens de la refaire et c’est bon, j’ai bien les trames.
          Par contre est ce que tu sais si c’est persistant ou faut la faire à chaque reboot ?
          😉

          Répondre
          1. Dia dell'arte

            Non,cela n’est pas persistant. Cette commande sert à définir les paramètre de communication. On peut voir qu’après le boot, on a les valeurs suivantes :

            pi@raspberrypi:~ $ stty -F /dev/ttyS0
            speed 9600 baud; line = 0;
            -brkint -imaxbel

            Alors qu’après la « commande magique », on obtient :
            pi@raspberrypi:~ $ stty -F /dev/ttyS0 1200 sane evenp parenb cs7 -crtscts
            pi@raspberrypi:~ $ stty -F /dev/ttyS0
            speed 1200 baud; line = 0;

  89. lekeb

    Bonjour et merci beaucoup pour ce tuto. J’ai maintenant la teleinfo qui fonctionne parfaitement avec Domoticz et un raspberry Pi2. Seulement j’ai un problème au passage en HC. Comme déjà mentionné plus haut dans ces commentaires, le relais HC/HP de mon compteur électronique Actaris claque régulièrement au passage en HC quand je branche la teleinfo. Le relais claque, l’écran du compteur s’éteint 2s et se rallume puis ainsi de suite. Si je met le contacteur de mon chauffe eau sur off, le relais compteur claque toujours. En augmentant la valeur de la résistance allant du compteur a l’optocoupleur, je diminue la fréquence du claquement du relais. J’ai contacte EDF pour avoir un rdv avec un technicien (seulement possible au mois de décembre). Seulement avant ce rdv, j’aimerais être sur que le problème vient de mon compteur. Avez vous des idées de tests ou chose a vérifier pour valider définitivement l’origine du problème? en vous remerciant

    Répondre
  90. Romain Brethomeau

    Bonjour, j’ai donc recu le module USB, j’arrive bien a lire les données par /DEV/TTYUSB0 par contre j’ai des problèmes avec le soft et la BDD mysql.
    Quand j’ouvre une des pages teleinfo_func ou graph,
    i’ai des erreurs dans mon fichier appache log :

    [Mon Nov 21 19:17:44.527179 2016] [:error] [pid 3172] [client 192.168.1.23:50832] PHP Fatal error: Uncaught exception ‘Exception’ with message ‘Unable to open database: unable to open database file’ in /var/www$db = new SQLite3($sqlite);/teleinfo/teleinfo_func.php:79\nStack trace:\n#0 /var/www/teleinfo/teleinfo_func.php(79): SQLite3->__construct(‘/var/www/telein…’)\n#1 /var/www/teleinfo/teleinfo_conso.php(8): computeLastDayConso()\n#2 {main}\n thrown in /var/www/teleinfo/teleinfo_func.php on line 79

    Quelqu’un peux m’éclaircir ? c’est mes premiers pas en SQL/PHP

    Répondre
    1. Laurent

      Bonjour,
      Très probablement un problème de droits d’accès au répertoire sous Linux, à vérifier. Visiblement la ligne incriminée du code est la 79. Mais ça c’est indiqué dans le message d’erreur.
      Après si ce n’est pas ça, je ne vois pas. Mais il y a plein d’inter action dans ce sujet, le serveur Apache, SQLite, etc. Qui à les bons droits sur quoi, moi je commencerai par vérifier cela.
      Bon courage.

      Répondre
  91. Ping : MagdiBlog dans le CanardPC Hardware Hors Série n°7 spécial électronique - MagdiBlog

  92. Philippe

    Bonjour,

    Je me suis appuyé sur ce blog pour réaliser un suivi de consommation mais en utilisant un compteur d’énergie EDMIN01 comme le montre le schéma http://phlag.info/download/consoElec_TH.pdf
    (habitant à l’étranger, je n’ai pas le compteur digital)
    De plus j’en ai profité pour connecter à mon Raspberry 2 détecteurs DHT22 pour faire l’acquisition de la température intérieure et extérieure.
    Un bravo aux auteurs du blog

    Répondre
  93. Laurent

    Salut,
    Alors d’abord encore un bravo pour l’auteur et son travail pour faire un article aussi bien fait.
    Dommage que lorsque quelqu’un fait un commentaire pour ‘aider’ il y ait des ‘enculeurs de mouches’ qui coupent les cheveux en 4, et qui surtout ne savent pas lire…
    cf. réponses à plusieurs de mes messages où je n’ai jamais dis que certains contrats n’existaient plus, qu’il y avait du 220V sur une ligne téléinfo, etc., je ne vais pas faire l’apanage des interventions mal ciblées ou peu en rapport des dires précédents.
    voilà c’était mon coup de gueule du jour, ça me pèle et ne sert à rien à part paumer un non sachant, bref. Cela dit ce commentaire ici présent est pour moi clos, je ne répondrai à aucune rétorques à ce sujet.

    Par contre si quelqu’un à une question à propos de mes interventions, aucun soucis, je ne suis pas un ahuri non plus.

    Bonne journée à tous.

    Répondre
  94. zylix

    je relance le sujet car suite à la parution de l’article sur canard pc hardware j’ai pu avancer un peu sur la conso edf.
    je vois bien les trames edf en faisant un cat /dev/ttyAMA0

    J’ai copié les 4 fichiers modifié par canard pc et suivi toute la procédure (installation de apache…crontab…)

    mais au final lorsque je tape dans mon navigateur

    192.168.1.24/teleinfo_conso.php ou 192.168.1.24/teleinfo_puissance.php

    j’ai ceci comme réponse

    #!/usr/bin/php5

    et rien d’autre ne s’affiche…page blanche…pas de graphique

    est-ce que quelqu’un aurait un eclaircissement ? merci de votre aide.

    Répondre
    1. Korleone

      Bonjour, j’ai exactement le même problème que toi zylix (page blanche sur index.php, alors que les trames cat /dev/ttyAMA0 sont reçues), as-tu pu trouver une solution ?

      Répondre
      1. Korleone

        J’ai chowné et chmodé /home/pi/teleinfo.sqlite ainsi que tout le dossier /var/www/html/ et j’ai enfin mes premières courbes !
        Essai de lancer les scripts directement dans la console afin de voir les messages d’erreur. Ça m’a bien aidé.

        Répondre
  95. Vincent

    Bonjour,

    Merci pour cet article très bien fait et fort utile mais j’aurais néamoins une question: est-il possible d’utiliser ce montage sous Domoticz?

    Merci

    Répondre
    1. Drabo

      Bonjour,

      Bien sûr, il suffit, une fois que tout fonctionne, d’installaer un matériel de type « Teleinfo EDF USB ». de donner les bons paramètres et tout est récupéré dans l’onglet mesures.

      Bon test

      Répondre
  96. Ping : Toz (ers4) | Pearltrees

  97. fred

    Bonjour,
    merci pour ce super tuto.
    Quelques retours
    sans heures creuses, j’ai beaucoup moins de données. je n’ai pas MOTDETAT c’est grave docteur ?
    J’ai tripatouillé les fichiers du zip donné tout en haut. pour virer les HC-HP. genre

    function collectTeleinfoData () {
    global $sqlite;
    $db = new SQLite3($sqlite);
    $db->exec(‘CREATE TABLE IF NOT EXISTS puissance (timestamp INTEGER, base INTEGER, va REAL, iinst REAL, watt REAL);’); // cree la table puissance si elle n’existe pas

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

    $data = array();
    $data[‘timestamp’] = time();
    $data[‘base’] = preg_replace(‘`^[0]*`’, »,$trame[‘BASE’]); // conso total en Wh heure creuse, on supprime les 0 en debut de chaine
    $data[‘va’] = preg_replace(‘`^[0]*`’, »,$trame[‘PAPP’]); // puissance en V.A, on supprime les 0 en debut de chaine
    $data[‘iinst’] = preg_replace(‘`^[0]*`’, »,$trame[‘IINST’]); // intensité instantanée en A, on supprime les 0 en debut de chaine
    $data[‘watt’] = $data[‘iinst’]*220; // intensite en A X 220 V

    if($db->busyTimeout(5000)){ // stock les donnees
    $db->exec(« INSERT INTO puissance (timestamp, base, va, iinst, watt) VALUES (« .$data[‘timestamp’]. », ‘ ».$data[‘base’]. »‘, ».$data[‘va’]. », « .$data[‘iinst’]. », « .$data[‘watt’]. »); »); }

    return 1;
    }

    La commande teleinfo_puissance ne renvoie parfois pas d’erreur parfois, le fichier sqlite (que je ne sais pas lire) est mis à jour.
    parfois j’ai

    PHP Notice: Undefined index: BASE in /home/pi/teleinfo/teleinfo_func.php on line 57
    PHP Notice: Undefined index: IINST in /home/pi/teleinfo/teleinfo_func.php on line 59
    PHP Warning: SQLite3::exec(): near « , »: syntax error in /home/pi/teleinfo/teleinfo_func.php on line 63

    la commande getTeleinfo () doit rien retourner de temps en temps mais je ne parle pas code alors je ne sais pas quoi faire.

    merci

    Répondre
    1. fred

      Alors de temps en temps MOTDETAT apparait mais ça ne semble pas grave car le caractère « STX » lui est toujours présent.
      Mais je me pose une question comment ce passe la lecture du fichier. si la PI est occupé on rate un bout ?

      Répondre
    2. fred

      J’ai enfin réussi à faire marcher le teleinfo.
      Je suis avec RPi b+ whezy.
      j’ai mis cette ligne pour l’UART
      stty -F /dev/ttyAMA0 1200 sane parenb -parodd cs7 -isig -icrnl -crtscts -icanon
      voilà ce que donne un cat:
      ADCO 011527864501 ;
      OPTARIF BASE 0
      ISOUSC 30 9
      BASE 004867898 6
      PTEC TH.. $
      IINST 001 X
      IMAX 030 B
      PAPP 00280 +
      MOTDETAT 000000 B

      j’ai repris les 4 php du zip tout en haut, j’ai enlevé les parties HC et HP.

      Pensez au logiciel DB browser for sqlite, ça permet de voir la base se remplir.
      => j’avais parfois des infos vide pour BASE, la raison est simple quand le fichier php voit la fin de la trame il passe à l’enregistrement, mais parfois il y passe trop lentement du coup le début de la trame suivante n’est pas enregistré. Je fais maintenant une vérification avant d’enregistrer la valeur dans la base.
      => j’ai remarqué que le java script de la page graph plantait si on n’avait pas encore fait de teleinfo_conso.php. Il est donc possible que le premier jour ça soit page blanche (une autre erreur ne me permet pas de confirmer ce point).
      => j’avais bêtement oublié de supprimer la création d’une colonne HCHP dans la graph puissance d’où plusieurs jours de pages blanche sans comprendre pourquoi. Merci le débogueur du navigateur Chrome.

      Répondre
    3. fred

      Encore un retour: J’ai tracé la valeur P1=U*I le P2=PAPP est P3=delta(conso)/delta(t).
      P1 est trop imprécis.
      P2: est proche de P3 mais décroche pour le faible conso.
      P3: me donne satisfaction. il ne rate rien, bien sur à faible conso il y a oscillation car un wh arrive juste avant ou juste après une mesure.
      Toujours à faible conso (entre 60 et 200w) la valeur indiqué par l’afficheur du compteur est un peu inférieur à celle de P3 (qui reste la plus proche).

      Pour la récupération de donnée j’ai énormément d’erreurs (1 sur 5 environ) Ce n’est, selon moi, pas la qualité de la transmission, j’ai fait tournée le cat sur plus d’une centaine de trame sans erreur. du coup avec un fread($handle, 200) j’ai divisé par 10 le nombre d’erreur. j’en supprime automatiquement en vérifiant que la puissance en W du P3 est bien entre 0 et 8000.

      Répondre
  98. Romain Brethomeau

    J’ai remis au gout du jour mes essai de teleinfo avec interface.

    Le cat /dev/ttyUSB0 fonctionne je vois bien mes trames.

    J’ai modifié les fichiers teleinfo ( les 4 pour modifier les repertoires source par var/www/teleinfo2/

    Quand je tente d’ouvrir les pages elle reste blanche sauf conso et puissance qui affiche #!/usr/bin/php5

    Dans mon fichier log j’ai 3 erreurs :
    [Sun Feb 12 20:55:36.853406 2017] [:error] [pid 23064] [client 192.168.1.23:49630] PHP Fatal error: Uncaught exception ‘Exception’ with message ‘Unable to open database: unable to open database file’ in /var/www/teleinfo2/teleinfo_func.php:79\nStack trace:\n#0 /var/www/teleinfo2/teleinfo_func.php(79): SQLite3->__construct(‘/var/www/telein…’)\n#1 /var/www/teleinfo2/teleinfo_conso.php(8): computeLastDayConso()\n#2 {main}\n thrown in /var/www/teleinfo2/teleinfo_func.php on line 79, referer: http://192.168.1.7/teleinfo2/
    [Sun Feb 12 20:55:38.545452 2017] [:error] [pid 23062] [client 192.168.1.23:49632] PHP Fatal error: Uncaught exception ‘Exception’ with message ‘Unable to open database: unable to open database file’ in /var/www/teleinfo2/teleinfo_func.php:50\nStack trace:\n#0 /var/www/teleinfo2/teleinfo_func.php(50): SQLite3->__construct(‘/var/www/telein…’)\n#1 /var/www/teleinfo2/teleinfo_puissance.php(8): collectTeleinfoData()\n#2 {main}\n thrown in /var/www/teleinfo2/teleinfo_func.php on line 50, referer: http://192.168.1.7/teleinfo2/
    [Sun Feb 12 20:56:41.821957 2017] [:error] [pid 2887] [client 192.168.1.23:49645] PHP Fatal error: Uncaught exception ‘Exception’ with message ‘Unable to open database: unable to open database file’ in /var/www/teleinfo2/teleinfo_func.php:101\nStack trace:\n#0 /var/www/teleinfo2/teleinfo_func.php(101): SQLite3->__construct(‘/var/www/telein…’)\n#1 /var/www/teleinfo2/teleinfo_graph.php(23): getInstantConsumption(5)\n#2 {main}\n thrown in /var/www/teleinfo2/teleinfo_func.php on line 101, referer: http://192.168.1.7/teleinfo2/

    J’ai compris que le serveur n’arrive pas a trouver la data base mais si j’ai bien compris elle devrait se créer seul non ?

    Merci

    Répondre
  99. fury0

    Bonsoir,

    Pour eliminer les erreurs on peut aussi utiliser la checksum, Voici le principe:


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

    foreach ($messages as $key => $line ) {
    $message = explode (‘ ‘, $line, 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];
    /* La « checksum » est calculée sur l’ensemble des caractères allant du début du champ étiquette à la fin du champ donnée, caractère SP (espace) inclus.
    * On fait tout d’abord la somme des codes ASCII de tous ces caractères. Pour éviter d’introduire des fonctions ASCII (00 à 1F en hexadécimal),
    * on ne conserve que les six bits de poids faible du résultat obtenu (cette opération se traduit par un ET logique entre la somme précédemment calculée et 03Fh).
    * Enfin, on ajoute 20 en hexadécimal. Le résultat sera donc toujours un caractère ASCII imprimable (signe, chiffre, lettre majuscule) allant de 20 à 5F en hexadécimal
    */
    $checksum = ord($message[2]); // Retourne la valeur decimal du caractere
    $ctrl = 0;
    $longueur_msg = strlen ($etiquette. ‘ ‘.$valeur);

    for ( $i=0; $i < $longueur_msg; $i++ )
    $ctrl += ord($line[$i]); // Retourne la valeur decimal du caractere

    $ctrl = ( $ctrl & 63 ) + 32 ; // ( (Sum & 03Fh) + 020h )

    if ( $checksum !== $ctrl )
    return false;

    $datas[$etiquette] = $valeur; // on stock les etiquettes et les valeurs de l'array datas
    } else
    return false;
    }
    return $datas;
    ….

    Répondre
  100. Paul

    Bonjour,

    j’ai réalisé votre montage sur mon compteur Linky que j’ai passé en mode application. Je reçois donc les trames, mais j’ai des « pertes »/erreurs de transmissions. Exemple :

    SMNSTS 00216 O

    SOAXSN Hq70305103041 02200 *

    SMAXSN-1 H170304183049 03160 ]
    CCAsN H170305182000 0013r

    PRM 1911418r320451 +

    On voit bien qu’il y a des caractères « défectueux » (le r dans le PRM, le q de Hq70305103041 qui est en fait un 1, le r36 de UMOY1 qui est en fait 236…).
    J’avais pas trop d’idées d’où ça pouvait venir, alors j’ai testé plusieurs trucs :

    – Je me suis mis au plus proche du compteur pour réduire les pertes dans les câbles -> rien changé
    – J’ai remplacé l’optocoupleur par un autre du même modèle -> Toujours pareil

    J’envisage d’utiliser un optocoupleur plus performant, mais je ne sais pas quoi choisir, et je ne sais même pa si c’est ça le problème.

    PS : J’utilise un Raspberry PI 3, et je fonctionne bien à 9600 bauds

    Répondre
  101. Jeremie Kaufmann

    Excellent tuto, ça a marché sur mon raspberry pi 1 pendant deux jours, jusqu’à ce que je me décide d’overclocker le pi en mode Turbo, et paf ça n’a jamais redémarré, je ne pensais pas que ça augmenterait le voltage du GPIO également, du coup je pense que l’optocoupleur a grillé. Les résistances sont encore bonnes, j’ai plus qu’à retourner au magasin d’électronique.

    Répondre
  102. Matronox

    Bonjour et merci pour cet excellent tuto.

    J’ai plusieurs petits problèmes que je n’arrive pas à résoudre, le premier c’est sur le page « teleinfo_puissance.php » j’ai comme message « #!/usr/bin/php5 ‘/dev/ttyAMA0’ not found » alors que le « cat /dev/ttyAMA0 » fonctionne très bien, le second, impossible d’afficher le graphique malgré la BDD qui ce rempli parfaitement.

    Précision, je suis sur un Rpi2 sous Jessie avec clé wifi et tous les fichiers sont dans « /var/www/html/teleinfo/ » est les chemins sont bien modifiés dans les fichiers, je me suis aussi inspirer de ce tuto pour quelque partie https://www.journaldulapin.com/2016/02/25/raspberry-pi-teleinfo/

    Répondre
    1. Matronox

      j’ai réussit à avoir le graphique en tapant le commande « php /path/to/teleinfo_conso.php » pour que le table ce créer mais il me met une erreur « Warning: SQLite3::exec(): near « , »: syntax error in /var/www/html/teleinfo/teleinfo_func.php on line 94″ et j’en ait une aussi avec puissance.php « Warning: SQLite3::exec(): attempt to write a readonly database in /var/www/html/teleinfo/teleinfo_func.php on line 70 » mais le graphique instantané fonctionne bien.

      (teleinfo_func.php ==> http://puu.sh/uZZBP/3e7240cf3d.txt)

      Répondre
  103. Ottawh

    J’ai un soucis, j’ai suivi le tuto et lorsque je fait
    sudo stty -F /dev/tty4 1200 sane evenp parenb cs7 -crtscts
    J’ai le message d’erreur :
    stty: /dev/ttyAMA0: No such file or directory

    J’ai un RPi 2 avec Raspbian Jessy
    Quelqu’un a une astuce ?

    Répondre
    1. Paul

      Tu dis que tu as entré la commande :

      sudo stty -F /dev/tty4 1200 sane evenp parenb cs7 -crtscts

      Moi je te demande d’entrer la commande (avec ou sans sudo) :

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

      Répondre
  104. Guillaume

    Bonjour,
    Je tente de faire fonctionner la teleinfo sur mon Raspberry Pi 2 (sous Jessie).
    Mais lorsque j’execute la ligne permettant de cree le peripherique :
    stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

    J’obtiens le message d’erreur suivant:
    /dev/ttyAMAO: No such file or directory.

    Quelqu’un aurit-il une idee …?
    D’avance merci.

    Guillaume

    Répondre
  105. Guillaume

    Et lorsque je fais un sudo ls /dev, j’obtiens :
    ….
    loop0 ram13 tty15 tty40 tty9 vhci
    loop1 ram14 tty16 tty41 ttyAMA0 watchdog
    loop2 ram15 tty17 tty42 ttyprintk watchdog0

    Répondre
    1. Guillaume

      Je me réponds à moi-même :

      dans le fichier /etc/rc.local (juste avant exit 0), j’ai ajouté la ligne suivante :
      stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

      Et cela fonctionne enfin !

      Bon, je passe à l’étape suivante : traitement des données et graphique.

      Bonne journée à tous !

      Répondre
  106. Patrice

    Bonjour a tous,
    Pour le suivi graphique, je suis en train de mettre en place le site 220v.fr. Il suffit de s inscrire et de renseigner son numero de compteur…. et vous avez les graphiques en envoyant des donnees sur la bonne adresse. Pour l instant, cela permet de suivre 2 compteurs (Edf et compteur perso…. pour production photovoltaique) sans Hc Hp…. mais je ferai evoluer suivant les demandes.
    Au plaisir de partaget si cela vous interesse.
    Il y a une page demo.
    Patrice

    Répondre
  107. Seb

    Merci pour ce tuto interressant mais j’ai un petit soucis avec mon Pi 3.
    Quand je tappe la commande cat /dev/ttyS cela affiche des ligne mais a la place de chaque caractère j’ai un trangle avec un ? a l’interieur.
    Je pense que cela viens d’un probleme d’encodage raspberry il est actuellement en FR utf-8.
    Auriez vous une idée ?
    Merci

    Répondre
    1. Paul Caranton

      C’est /dev/ttyS0 et non /dev/ttyS

      Et tu as fait « stty -F /dev/ttyS0 1200 sane evenp parenb cs7 -crtscts »
      ?

      Répondre
    2. Paul Caranton

      C’est /dev/ttyS0 et non /dev/ttyS

      Et tu as fait « stty -F /dev/ttyS0 1200 sane evenp parenb cs7 -crtscts »
      ?

      Répondre
  108. Mikl44

    Bonjour,

    Mon installation fonctionnait parfaitement depuis 2 ans (encore merci pour ce tuto).
    Mais depuis le changement de compteur par un linky, j’ai plus rien !!!!
    La fonction cat /dev/ttyAMA0 ne revoit plus rien.

    Est-ce que quelqu’un aurait une idée ?
    Merci.

    Répondre
    1. destroyedlolo

      Salut,
      Ben il faudrait déja etre sur que la TéléInfo soit activée.
      Ensuite, Linky a un mode natif qui n’est pas compatible avec ce que faisait les anciens compteurs.
      Il y a un mode compatibilité … mais tant qu’a faire, autant prendre le mode natif.
      A+

      Répondre
      1. Paul

        Par défaut le Linky est paramétré en mode « compatibilité » (appelé historique), contrairement au mode standard (qu’il faut faire activer par ton FOURNISSEUR d’énergie). Perso je n’arrive pas à lire correctement les trames du mode standard. Je les reçois mais j’ai beaucoup de caractères qui sautent ou qui sont remplacés par d’autres.

        Répondre
        1. destroyedlolo

          @Paul « J’ai beaucoup de caractères qui sautent ou qui sont remplacés par d’autres. »
          Ca, c’est typiquement un pb de communication : peux-être que qq chose a changé entre Linky et les anciens compteurs car EDF préconise des résistances plus forte « pour permettre d’utiliser plusieurs dispositifs ».
          Ce qui est clair pour ma part, c’est qu’avec des résistances de 1.2ko, avec un ancien compteur, mon BananaPI se perdait de temps en temps. Maintenant, j’ai mis des 10k (de mémoire, je peux vérifier) et je n’ai plus aucune erreur.
          (mes sources : l’excellent https://hallard.me/demystifier-la-teleinfo/ même si le changement de résistances a suffit et que j’ai toujours des SFH620)

          Répondre
          1. destroyedlolo

            Pris d’un doute, j’ai vérifié : j’ai maintenant des résistances de 2k … mais j’ai diminué les résistances de tirages qui étaient trop fortes. Du coup, le montage est moins sensible aux parasites et aux fuites dans le SFH620.

      2. mikl44

        Il est en mode historique (c’est indiqué dessus).
        Pour l’activation de la teleinfo, je l’avais avant donc je suppose qu’ils ne l’ont pas enlever en changeant de compteur.

        Répondre
        1. destroyedlolo

          « Pour l’activation de la teleinfo, je l’avais avant donc je suppose qu’ils ne l’ont pas enlever en changeant de compteur. »
          Ca, ca ne veut rien dire car il me semble que c’est un paramètre directement au niveau du compteur : ca mériterait quand même a etre vérifié vu que les techniciens qui l’on installé n’y ont pas forcément touché.

          Répondre
      1. mikl44

        J’utilise le montage décrit dans se tuto qui fonctionnait parfaitement avec l’ancien compteur.
        Sinon j’ai un raspberry PI B+

        Répondre
        1. Charly86

          Si tu as que ce montage de branché sur ton Linky, essayes de diminuer R1 pour voir (3 solutions possibles, a tester dans l’ordre)
          – change la par une 470 pour voir
          – diminue la en y ajoutant une résistance en //, genre jusque 2K2
          – court-circuiter R1 (ça doit marcher à tous les coups)

          Va voir cet article, tout est expliqué
          https://hallard.me/demystifier-la-teleinfo/

          Répondre
          1. Charky86

            Ça doit faire marcher ton opto avec le linky j’ai écrit un article la dessus mais dès que je poste un lien mes réponses sont bloquées

          2. mikl44

            Sinon pour info, ma R2 est une 10k. C’est peut-être elle qui ne correspond plus !

          3. mikl44

            Enfin, ca marche !
            Merci Charky86 c’est grace à ton site.
            J’ai refait le montage sur une plaque et en effet si j’enleve la résistance R1 ca marche et en modifiant la connexion à mon rasp.
            Maintenant j’ai plus qu’a refaire mon montage/connexion pour lire à la fois mon compteur edf et mon compteur photovoltaique.

    1. Paul

      C’est bien ça. C’est bizarre, moi ça fonctionnait ce montage avec mon Linky en mode historique (et partiellement maintenant en mode standard). Je ne sais pas quoi te dire de plus à part vérifier une nouvelle fois ton circuit (genre tu es bien branché sur L1-L2 et non L1-A). Je me rappelle que j’avais galéré à insérer correctement les fils dans le bornier du Linky. Tu as fait comment toi ?

      Répondre
      1. mikl44

        Non, je suis sure de moi : le branchement est bon.
        J’ai plié le fils en 2 pour avoir plus d’épaisseur et je les ai mis ensemble.
        Sinon je suis preneur pour récupérer en mode standard car mon 2ème compteur (production photovoltaique) est en mode standard (le mec d’enedis en a mis un en standard et un en historique mais d’après lui c’est pas lui qui paramètre ca).
        Si vous me dites qu’il n’y a pas de modif a faire sur le rasp, je pense alors que j’ai plus la téléinfo !

        Répondre
      2. Paul

        D’après la doc Enedis-PRO-CF_55E :
        « Elle est activée par défaut sur le compteur en mode « historique » et ne peut pas être désactivée. »
        Donc elle n’est pas désactivée. Tu n’as pas un oscilloscope par hasard ?

        Répondre
        1. mikl44

          Non je n’ai pas d’oscilloscope.
          Donc si la téléinfo est forcément activée, je comprends vraiment pas pourquoi y’ a plus rien qui marche.

          Répondre
  109. Phil69

    Bonjour à tous, j’ai découvert il y a peu cet article et cela m’a donné envie de m’y mettre. Par contre j’aimerais utiliser le Pi pour la mesure de la consommation et de la production (j’ai des panneaux solaires). J’ai donc acheté le matériel nécessaire, soit 2 x les 2 résistances + l’optocoupleur avant de m’apercevoir que tous les ports GPIO du Pi n’ont pas les mêmes caractéristiques. Dans le montage, on se branche sur la broche RXD. Est-il possible de se brancher sur une autre broche pour mon besoin ? Laquelle ? Quelles adaptations à faire sur l’électronique ? Quelqu’un l’a déja fait ?

    Répondre
  110. Mikl44

    Bonjour Phil69,
    Regarde sur le site de chaleur terre : il y a un sujet sur le même type de montage en branchant 2 compteurs.
    Je l’utilise en ce moment (edf + production)

    Répondre
  111. SOKS

    Bonjour,

    Mon compteur a ses sorties I1 & I2 occupées par un gestionnaire d’énergie (hager 49354).
    Connaitriez-vous un moyen d’avoir les deux fonctionnels en même temps ? (un moyen de dupliquer les cables ?)

    Cordialement

    Répondre
  112. Ping : Téléinfo EDF Arduino sans fil avec RFXCOM – Greg Inside

  113. Sigri44

    Salut à tous !
    J’ai suivi tout le tuto, mais lors de l’écoute, rien ne ce passe sur le RPi, rien ne défile.
    Le branchement est bon, et DE (mon fournisseur) me dit que le modèle que j’ai de Linky (V3 apparemment, y’a plus d’USB) ne nécessite plus d’activation de la prise télé-info.
    Comment savoir ou quoi faire ?
    Merci

    Répondre
    1. Paul

      Salut Sigri44,

      Quelle est ton modèle de RPi ?
      Peux-tu aller vérifier sur ton compteur le mode de la TIC ? (Il faut naviguer dans le menu avec le « + » jusqu’à atteindre l’écran « Mode TIC »
      As-tu mis tes fils dans les bons trous du Linky ? (Photo ?)

      Répondre
  114. Torseur 06

    Bonjour à tous et merci pour ce super tuto !

    J’ai bien suivi tout le tuto et je suis enfin arrivé avec mon PI 3 à afficher les courbes de ma consommation instantanée qui fonctionne bien depuis 2 semaines avec une URL en php créée pour l’occasion pour consulter depuis l’extérieur. Je fais fonctionner le PI 3 avec un dongle USB de téléinfo.

    Le problème est que pour ce qui est des histogrammes de la consommation journalière et mensuelle, les graphes restent vides.
    Lorsque je consulte les tables SQLITE par DB Browser, la table « puissance » se remplit bien toutes les minutes mais pour ce qui est de la table « conso », elle est bien créée mais reste vide (d’où les histogrammes vides je présume).
    Pourtant j’ai utilisé les mêmes scripts dans le tuto en adaptant l’aspect dongle USB et je ne comprends pas qu’une table puisse s’écrire et pas l’autre.

    Avez vous des pistes pour résoudre ce problème ?
    Merci à vous

    Répondre
    1. Torseur 06

      Je me réponds à moi même, j’ai finalement réussi à remplir entièrement la base SQLITE pour compléter mes histogrammes « conso journalière » et « conso mensuelle ». J’ai affecté des propriétés complètes sur les 4 php et bizarrement ça a résolu le problème.

      En revanche j’ai une question à savoir comment configurer par défaut le « range » à zoomer de la consommation instantanée. Je m’explique, par défaut le « range » affiché correspond à l’ensemble des mesures depuis l’installation du Raspberry mais j’aimerais que par défaut le « Range Slider » puisse zoomer sur la courbe des consommations des dernières 24 dernières heures.
      Comment modifier le code pour arriver à faire cela ?

      Question complémentaire, sur le smartphone il semble qu’on ne puisse pas bouger le RangeSlider. Y’a t’il un moyen de rendre la page php responsive de telle sorte que l’on puisse bouger le RangeSlider à la fois depuis le pc et le smartphone ?

      Merci à vous

      Répondre
  115. Userli

    > Comment modifier le code pour arriver à faire cela ?
    Il faut ajouter dasn rangeslider:
    ‘state’: {‘range’: {‘start’: yesterday, ‘end’: new Date()}}

    Répondre
  116. Torseur 06

    Merci Userli de votre réponse.
    En revanche pouvez vous m’indiquer exactement où je dois coller cette ligne de code dans le programme.
    Je l’ai collé dans :

    var rangeSlider = new google.visualization.ControlWrapper({
    [……………………………………………………….]
    ‘gridlines’: {‘color’: ‘none’}
    },
    ‘state’: {‘range’: {‘start’: yesterday, ‘end’: new Date()}}

    Mais ça ne fonctionne pas.
    Merci à vous !

    Répondre
    1. Userli

      Voici le code complet que j’utilise:

      var yesterday = new Date();
      yesterday.setDate(yesterday.getDate() – 1);

      var rangeSlider = new google.visualization.ControlWrapper({
      ‘controlType’: ‘ChartRangeFilter’,
      ‘containerId’: ‘filter_div’,
      ‘options’: {
      filterColumnLabel: ‘Date’,
      ui: {chartType: ‘LineChart’, chartOptions: {
      height: 80,
      backgroundColor: ‘#FFF’,
      colors: [‘#375D81’, ‘#ff9900’, ‘#ff5050’, ‘#00cc66’],
      curveType: ‘function’,
      focusTarget: ‘category’,
      lineWidth: ‘1’,
      ‘legend’: {‘position’: ‘none’},
      ‘hAxis’: {‘textPosition’: ‘in’, format: « dd.MMMyy HH’h’mm »},
      ‘vAxis’: {
      ‘textPosition’: ‘none’,
      ‘gridlines’: {‘color’: ‘none’}
      }
      }}
      },
      ‘state’: {‘range’: {‘start’: yesterday, ‘end’: new Date()}}
      });

      Répondre
      1. Torseur 06

        Parfait Merci Userli, cela fonctionne maintenant !

        Avez vous une idée pour rendre responsif l’affichage. C’est à dire qu’à l’heure actuelle je peux bouger le RangeSlider que depuis un pc. Or lorsque j’essaie de bouger ce RangeSlider depuis le téléphone, cela ne fonctionne pas.

        Une idée pour rendre l’affichage responsif ?

        Merci à vous !

        Répondre
  117. luc

    bonjour, je me suis lancé dans mon premier projet a base de raspberry,

    j’ai reussi a modifier le fichier cmd line,

    mais la commande stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts, ou stty -F /dev/ttyS0 1200 sane evenp parenb cs7 -crtsctsne fonctionne pas

    (j’ai un raspberry pi 2 model b v1.1 sous raspian jessie)

    merci de votre aide

    Répondre
    1. Jonathan

      Actuellement, quand je tente de configurer `/dev/ttyS0`, ca me donne ça :
      « `
      $ sudo stty -F /dev/ttyS0 1200 sane evenp parenb cs7 -crtscts
      stty: /dev/ttyS0 : impossible d’effectuer toutes les opérations demandées
      « `

      Tout ce que j’ai pu recevoir en donnée est :
      « `
      HCHC 004564270  »

      H�HP�000�5�����’�
      P��àHP..���
      ��NSԠ00��؍
      �MAؠ060�ō
      PAPP�00350���
      HHPHàA���
      M��D��AԠ000000�B��
      AD�Ϡ0���6�56�339�D�
      �P�A��ƠH�..�<�
      �S�USà�5�?�
      H�Hà00�56���0�"�
      H�HP�000�5�����'�
      P��àHP..���
      ��NSԠ00��؍
      �MAؠ�
      « `
      Ca ne semble pas être le bon format.

      Répondre
    2. Jonathan

      Je suis un peu perplexe. Je viens de voir que si je débranche le câble rouge (donc l’alimentation GPIO), je reçoit bien les données dans le format :
      « `

      ADCO 021761562339 D

      OPTARIF HC.. <

      ISOUSC 45 ?

      HCHC 004564270 "

      HCHP 000455488 5

      PTEC HP..

      IINST 001 X

      IMAX 060 E

      PAPP 00440 )

      HHPHC A ,
      « `

      Répondre
  118. Léo

    Bonjour,

    J’ai réalisé le montage et le raspberry ne démarre pas lorsqu’il est branché au montage. Je vois qu’il récupère une ip mais au bout de quelques minutes il s’arrête. J’imagine qu’il y a un problème dans mon montage mais je ne parviens pas à identifier d’où viens le problème.

    Pour info je me suis branché en parallèle du téléinfo avec deux fils récupérés d’un RJ45.
    Mon fil vert sur la photo est branché sur I1 (fil bleu RJ45) et le bleu sur I2 (fil blanc RJ45)

    Les photos:
    https://ibb.co/mXjLmS
    https://ibb.co/mdi7Y7
    https://ibb.co/huzaLn
    https://ibb.co/iVRcY7

    Merci beaucoup

    Répondre
  119. Lucien Gardon

    Bonjour.

    Je suis dans le même cas que Mikl44. J’avais une belle installation existante et fonctionnelle depuis 2015 sur un ancien compteur et depuis l’installation du linky impossible de lire le flux :'(

    Mikl44, tu disais que supprimer R1 n’avais pas suffit directement ? Tu disais avoir modifié la connexion à ton rasp ?

    Répondre
    1. Raspalex

      Bonjour,
      Pour les erreurs, comme pour Jonathan, il faut basser la résistance coté Linky.
      Avec 500ohms ca fonctionne sur mes Raspi 0 W et Raspi 3.
      J’ai lu que certain sont même descendu a 10-20ohms

      Répondre
  120. Fanch

    Je tiens à dire merci pour toutes ces informations extrêmement précieuses ! Car au bout de plusieurs bidouillages en lisant les commentaires ci dessous, cela finit par fonctionner! 🙂

    Répondre
  121. Jengal

    Salut,
    Petit retour d’expérience, je me lance dans un projet solaire et j’avais besoin de connaitre ma consommation, du coup j’ai voulu mettre en place tout ceci.
    J’utilise un raspberry 3 B, avec une distrib strech lite, et un optocoupleur SFH620A-3.
    Comme je n’avais pas les bonnes resistance j’ai utilisé 1.4k ohms et 3k ohms.
    Autant dire que je ne partais pas gagnant sur la réussite du projet :p
    Pourtant après quelques bidouilles, ça marche 🙂
    Merci 🙂

    Répondre
  122. Bruno

    Bonjour et merci pour ce tuto !

    je reçois bien le flux téléinfo (sudo cat /dev/ttyAMA0), par contre ma bdd ne se remplit pas…

    Voici ce que j’obtient en retour de la commande : php /var/www/html/Teleinfo/teleinfo_puissance.php

    PHP Warning: Illegal string offset ‘ADCO’ in /var/www/html/Teleinfo/teleinfo_func.php on line 40
    PHP Warning: Illegal string offset ‘OPTARIF’ in /var/www/html/Teleinfo/teleinfo_func.php on line 40
    PHP Warning: Illegal string offset ‘ISOUSC’ in /var/www/html/Teleinfo/teleinfo_func.php on line 40
    PHP Warning: Illegal string offset ‘HCHC’ in /var/www/html/Teleinfo/teleinfo_func.php on line 61
    PHP Warning: Illegal string offset ‘HCHP’ in /var/www/html/Teleinfo/teleinfo_func.php on line 62
    PHP Warning: Illegal string offset ‘PTEC’ in /var/www/html/Teleinfo/teleinfo_func.php on line 63
    PHP Warning: Illegal string offset ‘PAPP’ in /var/www/html/Teleinfo/teleinfo_func.php on line 64
    PHP Warning: Illegal string offset ‘IINST’ in /var/www/html/Teleinfo/teleinfo_func.php on line 65
    PHP Warning: A non-numeric value encountered in /var/www/html/Teleinfo/teleinfo_func.php on line 66
    PHP Warning: Illegal string offset ‘HCHC’ in /var/www/html/Teleinfo/teleinfo_func.php on line 67
    string(1) « 0 »
    PHP Warning: SQLite3::exec(): near « , »: syntax error in /var/www/html/Teleinfo/teleinfo_func.php on line 70

    Quelqu’un aurait une idée pour débugger ?

    Merci beaucoup par avance !

    Répondre
    1. damien

      J’ai eu le même souci, c’est un problème de déclaration de la variable $data dans getteleinfi qui doit être un tableau au lieu d’un string. remplace la ligne $datas =  »; par $datas = array(« ADCO » => «  »);.

      Répondre
      1. Bruno

        Merci beaucoup pour ton retour,

        Maintenant j’ai une nouvelle erreur :

        PHP Notice: Undefined index: HCHC in /var/www/html/Teleinfo_magdi/teleinfo_func.php on line 63
        PHP Notice: Undefined index: HCHP in /var/www/html/Teleinfo_magdi/teleinfo_func.php on line 64
        PHP Notice: Undefined index: PTEC in /var/www/html/Teleinfo_magdi/teleinfo_func.php on line 65
        PHP Notice: Undefined index: PAPP in /var/www/html/Teleinfo_magdi/teleinfo_func.php on line 66
        PHP Notice: Undefined index: IINST in /var/www/html/Teleinfo_magdi/teleinfo_func.php on line 67
        PHP Warning: A non-numeric value encountered in /var/www/html/Teleinfo_magdi/teleinfo_func.php on line 68
        PHP Warning: SQLite3::exec(): near « , »: syntax error in /var/www/html/Teleinfo_magdi/teleinfo_func.php on line 72

        Si quelqu’un peu aider (je suis novice en la matière)…

        Répondre
  123. tetack

    bonjour je suis interessé par le sujet mais mon compteur est situé en bord de rue (distance 8m environ de la maison.

    quel partie peut/doit etre edéportée a coté du compteur et/ou peut etre stockée dans la maison ?

    Répondre
    1. Dam

      Bonjour,

      J’ai mon compteur dans le garage et j’ai donc réalisé un système de transmission sans fil.
      Si possible, je recommande néanmoins le filaire qui est plus fiable et permet de ne pas encombrer la fréquence 433 Mhz.

      Coté compteur :
      – Le montage (optocoupleur, résistances, micro breadboard – 5€)
      – Un chargeur iPhone Ali Express (1€)
      – Un arduino nano (la aussi chinois à 3 € cable usb compris)
      – Un émetteur 433 MhZ (1.50€)

      Coté Maison :
      – un Raspberry Pi (90€ package)
      – un récepteur 433Mhz (Compris avec l’émetteur)

      Répondre
  124. GIPET

    Salut
    idem chez moi : compteur électromécanique sur rue. (il est passé LINKY depuis).
    Moi je n’aime pas les ondes, il y en a beaucoup trop ! au fil du temps les équipements se brouillent, se chevauchent… les gammes d’ondes changent… et puis il faut changer les piles… c’est pas écologique…
    Tu peux essayer de passer un câble dans le fourreau ENEDIS, mais tu n’es pas sur d’y arriver !
    une autre solution consiste à régénérer un signal TIC, composants électriques à mettre dans ton tableau électrique
    c’est ce que j’ai fait avec l’EMTI de chez DELTA DORE, avec un Rpi derrière.
    bonne chance

    Répondre
  125. Mengelle

    Bonjour,
    Bravo pour ce tuto.

    Je dispose d’un compteur qui fournit la téléinfo via RJ45 (2 fils utilisés) J’ai donc câblé le GND et TXD0 du Raspberry sur le cable RJ45.
    J’ai suivi tous les tuto pour activer le port série, mais lorsque je fais cat /dev/ttyS0 rien ne s’affiche…
    Pourtant à oscilloscope je vois bien le signal carré. Meme en inversant les fils, rien…

    Si quelqu’un a une solution…

    Merci

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

  127. Ping : Elec | Pearltrees

  128. Ping : Linky opendata my ass – HugoPoi

  129. Jean-Claude Gaubertier

    bonsoir,
    je reçois bien les datas du compteur, avec cat /dev/serial0, ou ttyAMA0, dans le script teleinfo_func.php j’ai corrige l’erreur de déclaration de datas en array plutôt qu’en string dans la fonction getTeleinfo () mais ma base ne se remplit toujours pas.???

    Je ne connais rien php aussi quel est le bon code?
    Merci de votre aide et Merci a l’auteur de ce post deja ancien.

    Jean-Claude

    Répondre
  130. Jean-Claude Gaubertier

    Finalement j’ai du corriger 2 petites choses dans le code PHP de teleinfo_func.php.Pour n’avoir plus d’erreurs.Si ça vous intéresse je vous dirai où.
    Tout fonctionne bien et je voulais féliciter Olivier pour ce travail.
    J’ai une question comment et quand doit on purger la base de données, Puissance?
    Bonne soirée

    Répondre
  131. Philippe

    Bonsoir,
    j’ai fait le petit montage pour me connecter au bornier TIC du Linky, il fonctionne très bien, le signal est très propre à l’oscillo.
    Je viens de configurer un Raspberry, je le pilote en SSH, c’est opérationnel. J’en suis maintenant à la pertie exploitation des données sur le Raspi, et je surfe de site en site pour trouver la solution qui me convienne. Je m’arrte donc sur cette page ^car j’y ai trouvé des choses intéressantes. Mais j’y ai aussi trouvé une énormité dans le code php.
    L’auteur du code calcule la puissance active en W en multipliant des ampères par des volts! Ce calcul U*I est une puissane apparente, et elle est donnée par le compteur, c’est (PAPP).
    Seules deux infos pour calculer la puissance active (W) sont dispo, le calcul n’est donc pas possible de cette façon, il manque le déphasage entre U et I, et c’est l’erreur que beaucoup de non électricien font. Dans l’état, le calcul de P par le code php est faux.
    La formule étant P=U x I x Cos phi.
    Le seul moyen de calculer la puissance active instantanée est de faire la différence entre deux index qui se suivent au prorata du temps.
    Je reste à disposition pour des éclaircissements.

    Répondre
    1. Suaz

      Déjà évoqué plusieurs fois dans les commentaires. Mais le code n’est plus maintenu et ça n’a pas été corrigé. Effectivement il fait un calcul de puissance apparente en faisant UxI, qui sera fausse et différente de papp donnée par le compteur à cause de la précision retournée pour I (à l’unité). Seul PAPP (ou SINSTS en mode standard). Et vous avez raison pour le calcul du cos phi qui est à déduire du reste.

      Répondre
    2. Gipet

      Effectivement, j’ai déjà effectué une remarque en ce sens…
      L’intérêt énergétique est de faire des différences d’index kWh / Wh entre 2 périodes, toutes les autres données calculées ne permettent pas de retomber sur des valeurs vraies, mais sont seulement une approche : Il manque des données d’entrées, tension, cos !

      Répondre
  132. Philippe

    Bonjour,
    je vois que le sujet a été abordé. Si le code n’est plus maintenu, est-ce qu’il y a un endroit ou un moyen de de trouver le code à jour?
    Un grand merci par avance!!


    Philippe

    Répondre
    1. fred

      On trouve surement équivalent ailleurs et à jour. Perso ça tourne dans un coin mais ça fait bien longtemps que je ne suis plus les datas qui sortent. J’avais juste modifier le code pour prendre en compte la mesure sur l’index, changer la routine de lecture pour prendre en compte les erreurs (j’en ai souvent, je ne sais pas pourquoi) et aussi ne gardé que la conso journalière passé un mois sinon la base grossi trop je trouve.

      Répondre
  133. Nico

    Bonjour à tous !

    Je souhaiterais savoir le code que vous fournissez est compatible avec un compteur d’énergie MID (compteur modulaire que l’on place dans un tableau)

    Répondre
    1. Gipet

      Bjr nico
      Le comptage décrit dans ce blog concerne pour bonne partie la récupération des données sur le bus TIC du compteur ENEDIS.
      Pour récupérer les données sur d’autres compteurs, il faut s’adapter au protocole de communication, Modbus mbus ou autre.
      Le label MID concerne la précision de mesure du compteur, et permet une répartition de charges.
      La partie gestion des données peut être source d’inspiration pour d’autres applications 😉
      A+

      Répondre
  134. joel

    Bonjour et merci pour ce travail, j’ai longtemps utilisé ce code.
    Aujourd’hui mon compteur linky est dehors et je ne peux plus y mettre un Raspberry a coté, ma question est la suivante, savais vous s’il est possible de lire les trame cpl du linky pour faire l équivalent ?

    Répondre
    1. Dough29

      Salut
      Pour ma part j’ai fait un petit montage mySensors et ça marche super bien depuis plusieurs années, même après passage au Linky.

      Répondre
  135. mikl44

    Bonjour,
    Actuellement j’ai un Rasp Pi B+ relié sur mes 2 compteurs linky (EDF et Production photovoltaique).
    En entrée de mon Opto SFH620A, j’ai aucune résistance en R1 et en sortie j’ai une résistance de 10k pour R2.
    Tout fonctionne bien.
    Je veux changer avec un Rasp plus récent (PI 4) et ca fonctionne différemment.
    Pour mon compteur EDF (mode historique), j’ai mis une résistance de 3,3k pour R1 et garder la 10k pour R2 et ca fonctionne.
    Pour mon compteur Production (mode standard), j’ai essayé plusieurs résistances pour R1 et R2, et rien : que des caractères pourris.
    Est-ce que quelqu’un aurait une idée ?
    Merci à vous.

    Répondre
    1. Gipet

      bonjour mikl44
      pour ma part, j’utilise un convertisseur TIC/USB, cela me permet de m’affranchir des adaptations électroniques, c’est compatible avec tous les PC et mini PC, rpi, …

      Répondre
    2. Phil

      Bonjour, j’ai le même problème que vous avec les données de production en mode standard. La qualité des données s’est détériorée avec le temps, je ne m’explique pas pourquoi. A tel point que j’ai demandé ce jour de revenir en mode historique, je ne sais pas si c’est une bonne idée…
      Avez-vous trouvé une solution pour améliorer la qualité des données ?

      Répondre
      1. mikl44

        Bonsoir, non je n’ai pas trouvé de solution …
        Je vais sans doute acheté d’autres résistances pour trouver les bonnes, mais ca risque de me prendre du temps.

        Répondre
        1. Phil

          Merci pour le retour 🙂 L’idéal serait une résistance variable pour essayer facilement plusieurs valeurs. Sur mon montage actuel, R2 = 47 K. J’avais cette valeur sur un autre site. J’ai essayé en passant à 4.7 K (je n’ai pas la 3.3 K indiquée par l’auteur de cet article). Ça cause toujours, mais c’est bien pire.

          Répondre
  136. Drabo

    Bonjour,
    J’essaye de passer d’un RaspberryPi3 à un RaspberryPi4. du coup, mon système fonctionne sur le Pi3 et lorsque j’applique les consignes sur mon Pi4 (qui fessemble à ça : console=tty1 root=PARTUUID=1f3cb3db-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles enable_uart=1) je n’ai rien sur le ttyAMA0. et le ttyS0 n’existe pas.
    J’ai bien lancé la commande stty
    Lorsque je fais cat /dev/ttyAMA0 il rend la main direct sans rien afficher au lieu de donner la série en continue.

    je n’ai aucune idée de là où est le problème. Si quelqu’un l’a déjà fait, je suis preneur

    Merci

    Répondre
  137. drabo

    aujourd’hui j’ai désactivé le bluetooth et maintenant quand je fait cat /dev/ttyAMA0 il ne rend plus la main : mais toujours rien

    Répondre
  138. drabo

    Bonjour

    Bon j’ai trouvé mon problème : j’ai rajouté
    enable_uart=1
    dtoverlay=pi3-disable-bt

    dans le fichier /boot/config.txt
    CEla donne des choses mais pas encore tout à fait correctes car ce n’est pas régulier : j’ai des lignes à blanc alors que sur l’ancien Rapsberry tout était affiché à chaque lignes :
    PTEC TH.. $
    IINST 026 _
    IMAX 090 H
    PAPP 06130 +
    HHPHC A ,

    PTEC TH.. $

    IINST 025 ^

    je cherche encore

    Répondre
  139. drabo

    Re
    Comme l’a dit Bernard 94 plus haut : j’ai passé la commande
    stty -F /dev/ttyAMA0 1200 sane parenb -parodd cs7 -isig -icrnl -crtscts -icanon
    et maintenant tout est OK
    je vais enfin pouvoir basculer de Raspberry

    Répondre
  140. aladin

    Une idée pour dépannage de mon cas…. en mode Standard
    testé le ligne en 9600 cs7n Stop1,7 Bits, PArity Paire
    Circuit simple Optocoupleur SFH620A et R1=1,2K R2=3,3K TEST OK sur PC windows

    tset FTDI ok ==> Link I1 I2 OK

    RASPBERREY 1 Rev B

    circuit avec optocoupleur SFH620A et BS170, avec R1=1,2K, 3,3K 4,7K et R2 R3 10K
    OPTO optocoupleur SFH620A KO
    changer l’OPTO par un LTV-814 KO
    suprimé la R1 KO

    testé la ligne en 9600 cs7n Stop1,7 Bits, PArity Paire
    j’ai deux services serial et isp pour envoter vers homeassisant
    – serialrfc2217server.service
    – isp-rpi-reporter.service

    si j’arrete les deux service ma commande « cat /dev/ttyAMA0 » ne donne rien
    Cela ne donne rien au niveau local et distant
    ~
    ~
    ~Est ce qqun aurait une idée ?
    ~
    ~

    Répondre

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.