31

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 :

stty 1200 cs7 evenp cstopb -igncr -inlcr -brkint -icrnl -opost -isig -icanon -iexten -F /dev/ttyAMA0

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

me@pi02:~# cat /dev/ttyS0
ON 236 ;
PAPP 00870 0
HHPHC H 3
MOTDETAT 000000 B
ADCO 030522024356 7
OPTARIF HC.. <
ISOUSC 45 ?
HCHC 040722963 '
HCHP 058023291 1
PTEC HP..
IINST 004 [
IMAX 033 E
TENSION 236 ;
PAPP 00870 0
HHPHC H 3
MOTDETAT 000000 B
ADCO 030522024356 7

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

You can discuss about this article or other project using the community forum