30

Gestion de la Teleinfo avec un Raspberry Pi et une carte ArduiPi

Ce billet a pour but d’expliquer comment j’ai mis en oeuvre la teleinformation à mon domicile à l’aide d’une machine linux ou d’un Raspberry Pi et d’une carte ArduiPi

Prérequis

Pour obtenir la Téléinformation sur un ordinateur il existe de nombreux moyen puisque c’est un signal qui une fois converti n’est juste qu’un signal série à 1200 bps. Pour le convertir il existe de nombreuses cartes toutes faites et des schémas différents mais le but est toujours le même, récupérer un signal série à 1200 bps.

Pour ma part j’ai construit cet étage de conversion de la façon la plus simple possible et je l’ai inclus lors de la conception de la carte ArduiPi. Vous trouverez le schéma détaillé (on ne peut plus simple) dans le “schematic” de la carte ArduiPi dans la section Téléinfo.

Pour ce tutoriel j’utilise deux cartes ArduiPi ainsi que 2 Raspery Pi car une est positionnée près du compteur EdF et l’autre va recevoir les informations et les afficher mais bien entendu il est possible de tout faire avec une seule carte. La liste du matériel est donc (à minima)

  • Un Raspberry Pi (connecté au réseau ou en Wifi c’est mieux mais pas indispensable)
  • Une carte ArduiPi (pour la partie téléinfo, ok çà fait un peu riche d’utiliser cette carte uniquement pour cela mais c’est pour la démo)

Préparation de la carte ArduiPi

La carte ArduiPi est capable d’envoyer le signal de Téléinformation soit sur l’entrée RX de l’Arduino soit sur l’entrée RX du Raspberry Pi. La configuration se fait en soudant sur un PAD dédié à l’arrière de la carte ArduiPi.

Pour cette démonstration il faut souder sur le PAD STEINFO la pastille PI avec celle du milieux comme indiqué ci dessous. Sur la photo les soudures ne sont pas réalisées mais il faut bien connecter les deux PAD identifiés par le carré rouge.

Solder PAD pour la téléinfo sur le Raspberry Pi

Solder PAD pour la téléinfo sur le Raspberry Pi

Préparation du Raspberry Pi

La liaison série du Raspberry  est par défaut configurée pour la console Linux est ne peut donc pas être utilisée pour autre chose, nous allons donc la désactiver afin de pouvoir utiliser la ligne RX du Pi pour recevoir les informations de la téléinformation. Pour se faire, se connecter sur le Pi (perso je fais tout via SSH, mon Pi n’est pas connecté sur un écran, n’a pas de clavier ni de souris) Et réaliser les deux opérations suivantes :

  • Modifier dans le fichier /boot/cmdline.txt la ligne qui contient le texte ci dessous et supprimer de cette ligne uniquement le texte ci dessous

console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
La ligne après modifications doit donc ressembler à quelque chose comme ceci, n’oubliez pas d’enregistrer les modifications.
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

  • Ensuite il faut désactiver le login sur le port série en modifiant le fichier /etc/inittab, vous trouverez dans le fichier la ligne suivante

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Et la commenter en ajoutant un # devant cette ligne ce qui au final doit donner la ligne suivante
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
n’oubliez pas d’enregistrer les modifications !

Une petite astuce, le port serie du Pi est le /dev/ttyAMA0, qui peut ne pas être compris par certaines applications, donc je crée un lien symbolique /dev/ttyS0 qui pointe sur /dev/ttyAMA0, çà ne coûte rien et çà ne mange pas de pain. Allons y :
sudo ln -s /dev/ttyAMA0 /dev/ttyS0
voilà maintenant nous pouvons accéder la liaison série avec un classique /dev/ttyS0

Et maintenant rebooter le Pi avec la commande suivante afin que les modifications soient effectives.
sudo shutdown -r now
Connection Physique

Il vaut maintenant relier la sortie téléinfo du compteur Edf à l’entrée dédiée sur la carte ArduiPi à l’aide de deux fils (je décrirais ce processus plus tard avec la doc de la carte ArduiPi mais c’est le connecteur J14 en bas au milieux sur la photo suivante pour les impatiens) ou sur votre adaptateur téléinfo si vous en utilisez un autre.Arduipi V1.0 front

Une fois le reboot effectué, nous allons vérifier que la Téléinformation est bien reçue pour ce faire encore une petite ruse, nous allons devoir configurer la liaison série en mode “manuel” car la téléinformation n’utilise pas les paramètres standard d’une liaison série. Donc on va configurer la liaison avant de lancer un cat à l’aide de la commande suivante :

Cette commande configure le port série pour être conforme au protocole de la téléinformation. Voilà, il ne reste plus qu’a vérifier que la commande fonctionne en lançant un cat sur le port série

Et vous devriez voir le contenu de la téléinfo défiler comme ci dessus.

Dans un prochain post je vous expliquerais comment rendre accessible la téléinformation sur n’importe quel périphérique réseau en utilisant le programme teleinfo broadcast sur lequel je suis en train d’ajouter une fonctionnalité pour un accès Web avec une REST api afin de pouvoir récupérer les valeurs depuis n’importe quelle box domotique gérant des virtuals devices.

Pour plus d’information sur la Téléinformation vous pouvez consulter l’excellent site de domos

 

 

Charles

Charles

30 Comments

  1. Bonjour,

     

    Est-ce que tu pourais indiquer comment on connecte ton ArduiPi à la sortie teleinfo du compteur EDF ?

    En tout cas féclications, même si tu penses que l’ArduiPi juste pour ca c’est une solution “riche” ca reste une des moins chères et surtout propre et facile.

     

    Cédric

  2. Merci pour le complément sur le connecteur J14. Deux petites infos qui me manquent (pas vraiment spécifiques à l’ArduiPi mais plus à la téléinfo mais que je trouve pas non plus sur les autres montages, à croire que c’est réserver aux électriciens uniquement :D)

    – Est-ce qu’il y a une importance (positif/négatif) au branchement ? Genre J1 sur la marque carrée ou inversement ?
    – Si j’ai bien compris la doc ERDF, un cable RJ11 est a utilisé pour la connexion ? Est-ce que tout cable pourrait convenir ?

    Merci encore

    Cédric

  3. Cédric,

    Il n’y a aucune importance, le câble téléinfo peut se connecter dans n’importe quel sens, enfin les deux fils qui vont sur la carte bien entendu pas l’autre coté du connecteur qui lui est spécifique au modèle téléinfo utilisé.

    Pour faire simple dans le cadre de l’ArduiPi, tu connectes deux fils aux bornes J14 et les deux autres bouts de fils directement sur la sortie téléinfo du compteur électrique. Et en effet n’importe quel type de câble convient, aucun besoin d’avoir du “gros” câble, c’est de la basse tension.

    En espérant avoir répondu à tes interrogations

    Charles

     

  4. Bonsoir,

    Une petite dernière. Je recois rien sur mon cat /dev/ttyAMA0. Est-ce qu’il y a un moyen de savoir si le connecteur teleinfo est bien actif sur le compteur ? Le logement a moins de 3 ans. J’avais lu que normalement c’est bon sur les logements récents. Je vais vérifié mes branchements et le peu de soudure, mais bon je voudrais pas passer à côté du fait que c’est pas activé …

  5. Bonjour,

    Je viens de réaliser que je n’alimentatit pas la carte (le switch était sur alim externe)
    Du coup là j’ai bien des choses sur le port série, mais rien de lisible.
    Est-ce que les cartes arrivent avec un firmware opérationnel ou je suis obligé de passer par la case connexion FTDI ?

    Cédric

  6. pi@rp-elec ~ $ cat /dev/ttyAMA0
    EA@0I#
    @rjEE1Va
    @S @c
    1@ |
    @0@(|PTn@0L&26@|
    G]JFM c
    @*.5 M4j
    @@2L69
    ]L#H R|
    @rjE@9@a
    @S
    @c
    2@Z|
    @0@(|PTn@0L&26@|
    G]JFM c
    @*.5 M4j
    @@2L6
    ]L#H R|
    @rjE@4a
    @S @c
    4@5|
    @0@(|PTn@0L&26@|
    G]JFM c
    @*.5 M4j
    ~@@2L&
    ]L#H R|
    @rjE@4a
    @S
    @c
    2@|
    @0@(|PTn@0L&26@|
    G]JFM c

  7. Bonjour Cédric

     

    Si j’ai bien compris tu veux gérer la téléinfo depuis le raspberry, donc il faut bien souder un “pont” comme indiqué dans le post (STINFO souder le pad du milieu avec PI), ce que tu as du faire puisque tu reçois des données.

    Le firmware livré doit être celui de test, mais comme rien n’est connecté et que tu n’utilises que l’Arduino cela n’a pas d’influence, le mode Arduino n’est pas utilisé dans ton cas (mais tu pourras t’en servir pour autre chose)

    En revanche Il ne faut pas relier JTXD et JRXD par des cavaliers puisque le PI reçoit son RX depuis la ligne téléinfo et il ne faut donc pas connecter la série du Pi avec celle de l’Arduino.

    As tu bien désactivé la console comme indiqué dans le /boot/cmdline.txt et dans le /etc/inittab ?

    As tu bien configuré le port série avec la commande suivante ?

    Si çà ne fonctionne toujours pas je ferais un test avec une carte vierge pour vérifier.

    Charles

  8. Oui c’est ce que j’ai fait. Je reprend :

    – souder le STINFO entre le milieu et Pi : fait
    – souder un cable à deux fils sur le RJ14 : fait
    – fixer ce cable sur I1 et I2 du compteur : fait
    – modif de boot cmdline : fait
    – modif de iniittab : fait

    Là au début j’avais rien car l’arduipi n’était pas alimentée, j’ai juste basculer le switch sur alim du Pi (l’autre était déjà sur 5V)

    Quand je teste un cat /dev/ttyAMA0 sans la ligne de conf avant de toute facon je ne vois rien sur la sortie.
    Quand j’ai une sortie c’est bien enayt passer le stty avant.

    Du coup en lisant le premier article sur la carte Arduipi c’est là que je me suis posé la question sur la nécessité d’injecter un firmware dans l’Arduino je ne sais pas si on l’utilise avec juste la téléinfo. En tout cas j’ai pas vu clairement le connecteur pour charger le firmware (même pour plus tard pur utiliser le onewire et autres connecteurs)

    Du coup j’ai l’impression que je recois bien le signal mais qu’il y a un problème d’encodage.

  9. AZh oui et je n’ai pas mis de jumper ou bouger de jumper sur l’arduipi. Juste le switch d’alim. Je n’ai pas vu de jumper entre JTXD et JRXD.

  10. Cédric,

    Bon je viens de sortir de mes cartons un ArduiPi du batch de Prod de Seeedstudio (pour être sur car le 1er test que j’ai fait était avec le prototype (mais pas de modification de board depuis) et tu m’as mis un gros doute.

    Donc ce que j’ai fait (je me répète, carte vierge donc la même que tu as reçu), j’ai soudé deux fils sur J14 relié à mon compteur, soudé le PAD STINFO entre le milieu et PI, choisi l’alimentation du PI et pas ext avec le switch et c’est tout.

    Ensuite j’ai pris mon Pi. C’est un Pi Revision 2 (avec 512 Mo de RAM) distribution Adafruit (donc peu récente) dessus mais mise à jour avec : (mais çà ne doit rien changer, mais je vérifierais si besoin)

    Un uname -a me donne un

    Puis ensuite, les commandes comme indiqués sur le blog (mon Pi avait déjà le boot et initab modifiés)

    Mais j’ai déjà vu des problème de config série avec le stty donc peux tu essayer la commande suivante et regarder si çà fonctionne avec picocom :

    ctrl-A puis ctrl-x pour sortir de picocom ensuite (ouais çà s’invente pas)

    Jete un oeil sur ce post, très instructif sur le problème de stty et de config du port série (attention à bien remplacer /dev/ttyS0 /dev/ttyAMA0 si tu n’as pas créé le lien symbolique)

    Je suis bien ennuyé car çà fonctionne bien avec le ttyAMA0 et même avec le lien symbolique ttyS0, donc c’est très bizarre mais confirme que la conception est correcte, mais peut être as-tu un problème de carte défectueuse (mais j’en doute car tu reçois bien des informations).

    Si picocom ne fonctionne pas, peux-tu me donner ta distribution utilisée sur le Pi ? Tu es en root quand tu testes (au cas ou) ?  ah dernière question quel langage utilises-tu quand tu es dans le menu de raspi-config dans
    internationalisation option / change locale

    Car c’est peut être une page de code mauvaise aussi, je n’ai que en_US UTF8-UTF8 de sélectionné

    A l’aide de tes informations je continuerais de chercher d’ou peut venir ton soucis

    Charles

     

     

     

  11. Salut,

    Bon j’ai été absent 2 jours mais là j’ai pu reprendre le test.

    J’ai testé picocom sans success.

    Donc j’ai pris une intsall fraiche mais de Raspbian. Je n’ai pas le meme noyau 3.11.
    J’ai mis à jours la distrib, le fichier iniittab, le fichier cmdline et ensuite config du port com et pareil.

    J’utilise effectivement du fr UT8. Donc j’ai repris juste en US et UTF8 comme toi (Raspbian livré en en GB UTF) mais pareil.

    Donc là je vais testé avec une Adafruit, jamais utilisé encore mais comme ca je serais dans la meme conf que toi.

  12. J’ai pas encore testé avec une Adafruit (la Occidentalis c’ets ca ?)
    Mais par contre j’ai pu testé une carte USB de téléinfo qui est détecté en /dev/ttyUSB0 et avec le stty et ensuite cat ca marche bien.

    Donc mon arrivée téléinfo passe bien, ma Raspbian est ok (pour le potentiel problème de lang en locale et comm en série)

    • Cédric,

      Oui c’est la Occidentalis, mais je ne pense pas que çà vienne de la distribution. J’ai chargé une Raspbian aussi que je vais tester sur une autre carte ArduiPi.

      Le test avec une carte USB n’utilise pas l’Uart Interne du Pi mais permet de verifier que la téléinfo est Ok, c’est déjà un bon point.
      Le probleme vient soit d’une carte ArduiPi défectueuse soit d’un probleme sur l’Uart du Pi mais je pencherais quand meme pour le 1er problème.

      Aurais-tu un autre Pi sous la main pour faire le meme un test ? Si je de demande de souder une résistance entre 2 points pour faire un ultime test tu saurais faire ?

      Sinon, normalement tu devrais renvoyer la carte chez Seeedstudio mais çà va être un peu long, alors si tu préfères, tu me la renvoi et je t’envois celle que j’ai testé, si ta carte est défectueuse, je la réparerais, la partie téléinfo c’est 2 composants à coté du J14 donc pas un pb.

      Dis moi ce que tu veux faire, et encore désolé pour le soucis.

      Charles

  13. Ok je t’ai répondu en MP. Effectivement si on pouvait voir pour que je t’envois la carte (seedstudio a pas l’air bien rapide et puis ca va être long et ca dira pas ce qui va pas)

  14. Salut Charles,

    J’ai une carte arduipi depuis l’année dernière mais j’ai un soucis avec la téléinfo.

    Son fonctionnement est aléatoire. Elle fonctionne un peu quand elle veut.
    A la première mise en service, après avoir tout installé, rien n’arrivait sur /dev/ttyAMA0.
    Sans que je comprenne pourquoi, ça a commencé à fonctionner. Je suis passé à autre chose mais je m’y suis remis il y a quelques jours. Après un reboot, plus rien ne sortait de nouveau… et puis ça repartait.
    Là plus rien de nouveau. j’ai testé R1 et j’ai 1,2K (ce qui à l’air d’être correct, même si sur ton schémà il est inscrit 3,3K).

    J’ai fini par connecter l’optocoupleur directement sur le PI (avec un pull-up de 3,9K) et ça fonctionne.

    Est ce que ça t’inspire ?

    Vincent

    • Salut Vincent,

      Ravis que tu ais une carte ArduiPi, visiblement tu rencontres quelques soucis avec la partie téléinfo. Ce qui est curieux c’est qu’après un reboot çà ne fonctionne plus. je pencherais pour une mauvaise init de la liaison série mais ce n’est peut être pas çà. J’imagine que tu as suivi le tuto et notamment la partie init du serial avec stty ? Attention le stty n’est pas persistant au reboot et il faut donc le mettre dans un des scripts de démarrage.
      Ceci dit j’ai déjà rencontré aussi des soucis avec cette commande, donc parfois je vérifie aussi avec un bon vieux picocom. ça m’est arrivé aussi ces problèmes “fantômes” et dès que je lançais un picocom tout repartait.
      As-tu essayé la commande picocom ? Si oui as-tu le même résultat ?
      picocom -b 1200 -d 7 -p e -f n /dev/ttyAMA0

      Pour info j’ai testé chez moi avec 3 cartes ArduiPi sans jamais rencontrer le moindre problème, c’est un Pi revision 2 ou 1 que tu possèdes ?

      Dans tous les cas ta modification est parfaite avec arrivée directe sur le RX du Pi et la pullup, si elle règle ton problème, je te dirais de ne rien changer. Néanmoins, attention ta pull up doit être reliée au 3V3 et non au 5V puisque tu bypass les étages de translation 5V -> 3V3 sinon tu vas envoyer du 5V sur une GPIO 3V3 ton PI pourrait ne pas apprécier. Et n’oublies pas, si tu utilises la teleinfo avec le RX du Pi, tu ne pourras plus l’utiliser pour communiquer en série avec l’Arduino embarqué, c’est logique mais toujours utile de le préciser.
      Sinon merci du commentaire, effectivement ce doit être une 3.3K et non une 1.2K, mais ce n’est pas gênant (sauf potentiellement si tu as plus de 2 périphériques branchés sur ta sortie téléinfo), je vais faire modifier cela pour les prochaines versions.

      Si tu as d’autres questions n’hésites pas.

      Charles

  15. Le PI est un V12.

    Je voudrais comprendre le circuit pour voir ce qui pourrait clocher. Qu’est que Q6 et Q7 ?
    En général, j’utilise toujours /dev/ttyAMA0 et minicom pour vérifier la config.

    Une fois alors que je manipulais le pi, j’ai passer mes doigts sur les contacts du GPIO de l’arduipi et la téléinfo s’est mise a refonctionner. Est ce que le signal arrive trop faible au pi ? Je ne pense pas avoir les outils pour contrôler.

    J’ai bien branché le pullup sur le 3V3.

    Merci pour tes remarques.

    Très jolie carte en tous cas.

    Vincent

    • Vincent,
      Q6 et Q7 servent a adpater le signal, il permettent de transformer le signal 5v en 3v3 et vice versa, donc inutiles si tu relies l’opto au pi en direct avec une pullup au 3v3.
      Je serais tenter de dire que peut etre tu as un faux contact mais en reliant en direct tu devrais t’en affranchir si tel est le cas.

  16. Bon…

    En fait vers 16h, plus de téléinfo.
    J’ai branché l’oscilloscope sur la sortie téléinfo du compteur. Je suis pas un pro, difficile d’interpréter. Alors que je bidouillais, j’ai vu le signal a changer (1h30 après). Je rebranche le Pi dessus et il reçoit bien le signal.

    Je suspecte donc un problème avec la sortie téléinfo du compteur (Actaris).
    Il ne me reste plus qu’à attendre que ça plante de nouveau pour contrôler le signal dans cette config.

    J’imagine déjà la conversation avec erdf…

    Vincent

    • Arf pas cool ca, parce qu’effectivement avec l’opto en direct sur le pi tu peux dfficilement faire plus simple. Dans l’ideal il faudrait que tu branches ton oscillo entre la masse et la sortie de l’opto (celle qui est reliee a ta resistance de pull up) et tu devrais voir le signal osciller entre 0v et 3v3.
      Tiens moi au jus et bon courage , c’est toujours galere ces petits pepins
      Charles

  17. J’ai eu un peu de chance, j’ai pu choper les 2 signaux de la téléinfo.

    http://goo.gl/lcJosy

    Le signal normal a une amplitude de 12V alors que quand il est anormal cette amplitude passe à 20V. La trame (l’info) est en revanche toujours là il me semble.

    Je me demande si je ne devrais pas augmenter la valeur de R1 ?

    • Vincent,
      Oui c’est une excellente idée, et pour ne pas avoir à la dessouder, tu peux en mettre une autre en série sur le cable que tu connectes à la téléinfo. Genre 2.2K c’est standard çà.
      Charles

  18. Juste pour clore ce sujet, plus de problème avec la téléinfo avec une R1 augmenté.

    Salut!

    • Salut Vince,
      Ok, super, merci pour l’information, comme quoi tous les compteurs n’ont visiblement pas la même sensibilité, je ferais corriger celà dans la prochaine révision.
      Merci de ton aide ainsi que de ta patience.
      Charles

  19. Afin de pouvoir centraliser les demandes de supports et de faciliter la lecture je viens de désactiver les commentaires sur les articles. Celà ne signifie pas que ce n’est plus possible, au contraire mais pour cela merci de le faire via les Forums dédiés.

    Concernant la téléinfo c’est celui-ci

    Merci de votre compréhension.

34Comments are closed.

Comments on this topic in community Forums.