Où sommes nous ?

Retour

BananaPI et téléinformation

Les compteurs EDF récents, c'est-à-dire ceux qui comportent un afficheur digital et non une roulette, disposent d'une prise nommée TéléInfo qui expose leurs statistiques sous forme d'une classique trame série : plus d'informations directement sur le site d'EDF.
Encore mieux, si vous êtes vous-même producteur d'électricité, les 2 compteurs supplémentaires sont du même type et peuvent eux aussi fournir des informations.

Le but de ce billet est de connecter ce ou ces compteurs à notre BananaPI pour générer de jolies statistiques.

Côté compteur

La partie haute du compteur est réservée au personnel d'EDF et briser la scellée ne pourra que vous amenez que des problèmes ... vous êtes donc prévenu. Le bas par contre est à votre disposition avec 2 connecteurs :

Cette prise téléinfo produit un signal série classique (identique à prises RS-232), mais avec des niveaux électriques atypique : un signal modulé à 50hz, 5 volts en nominal.

Gràce à ce dernier, un simple câble téléphonique suffit, dans lequel plusieurs paires peuvent être utilisées (ben oui, les producteurs ont plusieurs compteurs comme je l'ai indiqué plus haut) sur une longueur qui peut atteindre les ... 500 mètres. Enfin la norme intègre le risque inductif en cas d'orage (la norme prévoie une surtension ponctuelle jusqu'à 20 volts) : Bref, utilisable aussi si vos compteurs sont déportés en limite de propriété.

Il faut donc ...

un (des) convertisseur de niveau

Il se résume à 3 composants par compteur à connecter suivant un schema qui se trouve facilement sur internet :

Mon schéma vient du forum de ChaleurTerre.

Sont nécessaires :

Pour rendre la chose un peu plus "propre", j'ai aussi ajouté un bornier : J'ai trouvé sur la baie un kit tout prêt qui ne m'a coûté qu'une dizaine d'€uros pour 2 flux, port compris.

Côté BananaPI

La majorité des solutions de téléinfo DIY sont basées sur un RaspberryPI, qui ne dispose que d'un seul UART : pas pratique pour suivre plusieurs compteurs ...

Le BananaPI expose, lui, 4 UARTs tels qu'indiqué dans le guide utilisateur.

Ce qui donne les correspondances suivantes :

       | Correspondance | Connecteur | Utilisation
| Gentoo | |
-------------------------------------------------------------
uart0 | ttyS0 | J11 | Console (par défaut)
uart2 | ttyS1 | Con 3 | GPIO0 & 2
uart3 | ttyS2 | Con 3 | Compatible rPI
uart7 | ttyS3 | J12 |

J'ai laissé de côté ttyS0, toujours utile d'avoir une console sur un serveur headless, ainsi que ttyS1 pour conserver la compatibilité avec le Raspberry du con3 : On sait jamais, au cas où j'aurai envie d'ajouter un sheild prévu pour ce SBC.
Il me reste donc :

Ben ... et le 3e compteur dit de sous-tirage ?
Il n'est utilisé que pour vérifier que vous ne réinjectez pas le courant issu d'EDF dans votre production : Il restera donc à zéro, strictement aucun intérêt.

Configuration des ports séries

Les transmissions se font en 1200 bauds, 7 bits, parité paire, 1 bit de stop. Ce qui correspond aux commandes suivantes :

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

Placer ces commandes dans le fichier /etc/local.d/teleinfo.start (qui doit être exécutable), initialisera nos ports à chaque boot.

Ce fichier n'est pas suffisant pour l'utilisation d'un démon car le dit démon sera lancé avant que les fichiers locaux ne soient utilisés. Voir plus loin dans cette page pour un script openrc.

Autoriser l'accès aux ports

Tous les utilisateurs devant accéder aux ports doivent faire partir du groupe uucp.

usermod -a -G uucp utilisateur

Test

Ca marche, yeaaaahhhh !

laurent@bPI ~ $ cat /dev/ttyS3ADCO 040928025841 B
OPTARIF HC.. <
ISOUSC 60 <
HCHC 037551020 ]
HCHP 053068843 8
PTEC HP.. 
IINST 002 Y
IMAX 062 G
PAPP 00520 (
HHPHC C .
TDETAT 000000 B
ADCO 040928025841 B
OPTARIF HC.. <
ISOUSC 60 <
HCHC 037551020 ]
HCHP 053068843 8
PTEC HP.. 
IINST 002 Y
IMAX 062 G
PAPP 00520 (
HHPHC C .

avec comme informations interessantes :

Réalisation

Comme on peut le voir, il reste beaucoup de place pour d'autres aventures électroniques

Et pour exploiter tout ça ...

... j'ai créé un joli démon.

Téléinfod lit ces trames et les convertit en messages MQTT. C'est de l'open-source et, d'après mes tests, la charge sur le BananaPI est négligeable.

Libérons le port CON3

En regardant de plus près le schéma du BananaPI, le RX de l'UART4 est connecté au port J12-03 (pin PH04 du proc, le TX, PH05 n'est connecté nul part): ça tombe bien, nous n'avons besoin que d'entrée (RX) et cela libére entièrement le CON 3.

Seule une modification du fichier FEX et nécessaire : activation de l'UART4 comme suit :

[uart_para4]
uart_used = 1
uart_port = 4
uart_type = 2
uart_tx = port:PH04<4><1><default><default>
uart_rx = port:PH05<4><1><default><default>

Le uart_used est passé de 0 à 1. Un reboot et l'uart4 est actif.

Et pour faire plus propre, un fichier de démarrage

Pour que les UART soient configurés correctement à chaque démarrage, j'ai créé le fichier /etc/init.d/uart suivant :

#!/sbin/runscript
# Copyright Laurent Faillie 2015
#
# init uart for Teleinfo usage

start() {
        ebegin "Init uart for Teleinformation"
        stty 1200 cs7 evenp cstopb -igncr -inlcr -brkint -icrnl -opost -isig -icanon -iexten -F /dev/ttyS3
        stty 1200 cs7 evenp cstopb -igncr -inlcr -brkint -icrnl -opost -isig -icanon -iexten -F /dev/ttyS4
        eend $?
}

Que j'ai activé par un classic

rc-update add uart default

/etc/local.d/teleinfo.start n'était pas suffisant car le démon TeleInfod démarait avant que les UART ne soient configurés ...


Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2017
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.