Un petit billet pour dire que j’ai commencer à superviser le compteur électrique EDF (téléinfo) avec emoncms.
J’ai suivi deux articles :
- Montage teleinfo pour Raspberry Pi / BeagleBone
Cet article m’a surtout aidé pour l’électronique, le raccordement au Raspberry. - Teleinfo Broadcast comptatible avec Emoncms
Chouette article, très complet ! Et j’aime quand je n’ai à faire que des copier/coller et que tout marche pareil.
Deux petites difficultés:
- Je n’avais pas désactivé la console série sur le Raspberry Pi, alors que c’est indiqué dans ici : Teleinfo – Préparation d’une Raspberry Pi.
- Une fois mes données dans emoncms, je ne sais pas trop quoi en faire, sources, feeds, process, nodes, ça ne m’inspire pas trop pour l’instant, mais je me dépatouille.
Quelques photos de l’installation pour les essais :
- Baie 19″
- Compteur EDF et TGBT
- Raspberry et breadboard pour essai téléinfo
- Borne L1 et L2 du téléinfo
Lorsque l’installation sera « validée », le téléinfo empruntera une paire en attente dans le boîtier DTI et le raspberry trouvera sa place dans la baie 19″, la partie photocoupleur sera dans un joli petit boitier.
Je ne connaissais pas du tout emoncms, je me suis laissé guider par les nombreux tuto qui existent.
Comme dit un peu plus haut, ma difficulté est de traiter les données reçues.
Si quelqu’un a des conseils à donner sur la façon de traiter les valeurs du téléinfo, je suis preneur…
Le script présenté par hallard.me a l’avantage de pouvoir alimenter emoncms et une table MySQL, ce qui va me permettre de tester d’autres solutions de graphs en parallèle d’emoncms.
Le script de hallard.me disponible sur github, permet en effet de remplir une table MySQL.
Pour ma part, ça représente une avantage important : ne maitrisant pas emoncms, une table MySQL me permet de maintenir une source brutte des données du téléinfo.
La table est constituée ainsi (CTRL+C / CTRL+V de hallard.de) :
CREATE TABLE IF NOT EXISTS `DbiTeleinfo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `DATE` datetime DEFAULT NULL, `ADCO` varchar(12) DEFAULT NULL, `OPTARIF` varchar(4) DEFAULT NULL, `ISOUSC` decimal(2,0) DEFAULT NULL, `BASE` decimal(9,0) DEFAULT NULL, `HCHC` decimal(9,0) DEFAULT NULL, `HCHP` decimal(9,0) DEFAULT NULL, `BBRHCJB` decimal(9,0) DEFAULT NULL, `BBRHPJB` decimal(9,0) DEFAULT NULL, `BBRHCJW` decimal(9,0) DEFAULT NULL, `BBRHPJW` decimal(9,0) DEFAULT NULL, `BBRHCJR` decimal(9,0) DEFAULT NULL, `BBRHPJR` decimal(9,0) DEFAULT NULL, `DEMAIN` varchar(4) DEFAULT NULL, `EJPHN` decimal(9,0) DEFAULT NULL, `EJPHPM` decimal(9,0) DEFAULT NULL, `PEJP` varchar(2) DEFAULT NULL, `PTEC` varchar(4) DEFAULT NULL, `IINST1` decimal(3,0) DEFAULT NULL, `IINST2` decimal(3,0) DEFAULT NULL, `IINST3` decimal(3,0) DEFAULT NULL, `IMAX1` decimal(3,0) DEFAULT NULL, `IMAX2` decimal(3,0) DEFAULT NULL, `IMAX3` decimal(3,0) DEFAULT NULL, `HHPHC` varchar(1) DEFAULT NULL, `PMAX` decimal(5,0) DEFAULT NULL, `PAPP` decimal(5,0) DEFAULT NULL, `ADPS` decimal(3,0) DEFAULT NULL, `MOTDETAT` varchar(6) DEFAULT NULL, `TENSION` decimal(3,0) DEFAULT NULL, PRIMARY KEY (`id`), KEY `SEARCH_INDEX` (`ADCO`,`DATE`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Idéale pour le script suivant :
https://github.com/BmdOnline/Teleinfo
Voici les données à modifier du fichier structure.date.php afin de correspond aux données soumises par le script de hallard.me :
// Adapter les valeurs du tableau si le nom du champ est différent "table" => array ( "DATE" => "DATE", // => généralement, vaut soit "DATE", soit "TIMESTAMP" "OPTARIF" => "OPTARIF", // option tarifaire souscrite "ISOUSC" => "ISOUSC", // intensité souscrite "BASE" => "BASE", // BASE "HP" => "HCHP", // HCHP "HC" => "HCHC", // HCHC "HPJB" => "BBRHPJB", // BBRHPJB "HPJW" => "BBRHPJW", // BBRHPJW "HPJR" => "BBRHPJR", // BBRHPJR "HCJB" => "BBRHCJB", // BBRHCJB "HCJW" => "BBRHCJW", // BBRHCJW "HCJR" => "BBRHCJR", // BBRHCJR "HN" => "EJPHN", // EJPN "HPM" => "EJPHPM", // EJPHPM "PTEC" => "PTEC", // période tarifaire en cours "DEMAIN" => "DEMAIN", // prévision du lendemain (formule Tempo) "IINST1" => "IINST1", // => généralement, vaut soit "IINST1" soit "INST1" "PAPP" => "PAPP" // puissance apparente )
Et voilà, j’ai certe deux outils pour presque la même chose :
– EmonCMS, très complet et difficile à maitriser à mon gout, il me faudra du temps pour avoir un monitoring au top.
– Teleinfo, simple, très facile à mettre en place, fait le boulot.
Coté tableau électrique, j’ai validé ma période de test et ai sorti le SFH620 de sa platine de tests :
Petite astuce, j’ai collé l’ensemble photocoupleur, bornier, résistance, au boitier du Raspberry en tailladant le plastique pour la colle prenne.
Ne pas oublier qu’il existe des modules sans fils pour Temp/Humidité et Conso électrique (pinces ampèremétriques) via le projet OpenEnergyMonitor qui s’intègrent très bien avec EmonCMS.
Et si on regarde les modules qui sont basés sur un transmeteur 433/866Mhz et un ATmega il devrait être possible de brancher le module téléinfo pour l’utiliser avec transmission radio.
Pourquoi ne pas acheter un module teleinfo tout fait?
On en trouve à 15-20€, c’est dommage de s’en priver.
Salut,
Un peu pour le plaisir de le faire soi-même.
Question coût, le SFH620A m’a couté 6$. Les resistances, j’ai pris un lot de 250 pièces avec diverses valeurs à 3,49$ le lot. Faut rajouter le PCB, hors raspberry (qui servira à d’autre choses en +) au total, j’en ai au max pour 10 € environ je pense.
Salut Lionel,
Merci pour ton article ! 😉
J’ai moi aussi une préférence pour la version hardware réalisée soi-même plutôt qu’un produit tout fait acheté dans le commerce… Mais là n’est pas la question.
J’en suis au stade où tout est en place et fonctionnel, je n’ai simplement pas trouvé d’info sur ton blog sur la façon dont tu alimentes la db MySQL.
Est-ce que tu pourrais m’éclairer ?
Merci par avance !
Hello,
C’est le script dispo ici :
http://hallard.me/teleinfo-emoncms/
Qui m’alimente la db MySQL.
Ce script est utilisable sans emoncms, juste pour alimenter une bdd mysql :
Mon fichier /etc/teleinfo.conf se présente ainsi :
mysql = 0
server = 192.168.1.100
user = teleinfo
password = tele1nfo
database = teleinfo
table = DbiTeleinfo
mysql_port = 3306
Puis le serveur teleinfo se lance en local sur le raspberry Pi -> dans le fichier /etc/rc.local via la commande :
/usr/local/bin/teleinfo -m s -d
Une fois le serveur teleinfo lancé, l’envoi à la BDD MySQL se fait toutes les 30 secondes dans mon cas, via le cron :
* * * * * root /usr/local/bin/teleinfo -m r -e -q > /dev/null &> /dev/null
* * * * * root ( sleep 30 ; /usr/local/bin/teleinfo -m r -e -q) > /dev/null &> /dev/null
Dans le fichier /etc/teleinfo.conf , mysql = 0
Car c’est le cron qui force l’envoi des infos MySQL au serveur, mais il récupère le reste des infos de connexion dans ce même fichier.
Je complète l’article ASAP.
Super merci ! 😉
J’étais arrivé à remplir la db, le soucis c’est que j’avais quasiment un enregistrement toutes les 2 ou 3 secondes, inutiles dans mon cas.
Au plaisir de te lire sur Domolio 🙂
Que faire des données, JeeDom est ton ami… C’est comme cela que j’ai commencé, la téléinfo puis maintenant les températures des congélos, les petits scénario pour envoyer des sms sans programmation, avec depuis le simple navigateur des trucs du genre si température congélo > -15 alors SMS avec info de la température. Bref c’est vraiment super bien fait et bien conçu.
Coucou, effectivement jeedom est mon ami 🙂 je l’utilise depuis une petite année, il faut que je fasse un article à ce sujet à l’occasion d’ailleurs…
Pour teleinfo et jeedom, j’utilise le plugin « teleinfo » mais avec une API propre à ce plugin : toutes les 30 secondes, je récupère la dernière valeur en base de donnée et l’envoi au plugin par requete HTTP sous cette forme : http://127.0.0.1/jeedom/plugins/teleinfo/core/php/jeeTeleinfo.php?api=$APIJEEDOM&ADCO=$ADCO&BASE=$BASE&PAPP=$PAPP
Et c’est top, permet d’avoir la collecte ‘normale’ avec ça : https://github.com/BmdOnline/Teleinfo et aussi teleinfo.
Du coup, j’ai abandonné emoncms 🙂