La première version de l’outil permettant de réaliser un télérelevé EDF chez soi est arrivée.
Cette version 0.1.0 fige une première fois le code source et en donne une première base utilisable. J’utilise déjà cette version sur mon Raspberry Pi.
Attention toute fois, cette version corrige un manque dans la base de données SQLITE. Avant cette version, il n’y avait aucun index dans la table relevée.
Si vous utilisez les versions précédentes avec une base SQLITE, il est nécessaire à la mettre à jour manuellement.
Voici les requêtes SQL à exécuter pour la mettre à jour.
# Creation de la nouvelle table
CREATE TABLE IF NOT EXISTS new_releve (at TEXT, ptec TEXT, iinst REAL, hchc REAL, hchp REAL, base REAL);
# Copie des données
INSERT INTO new_releve (at, ptec, iinst, hchc, hchp, base) SELECT at, ptec, iinst, hchc, hchp, base FROM releve;
# Suppression de l'ancienne table
DROM TABLE releve
# Changement de nom de la nouvelle table
ALTER TABLE new_releve RENAME TO releve
Après cela, la base est à jour.
Et vous, avez-vous mis en place un tel système ? Comment gérez-vous votre consommation électrique ?
Après avoir cherché de nombreuses fois la meilleure méthode pour suivre la consommation électrique de la maison, je suis tombé sur un gazouillis qui parlait du télé-relevé EDF côté client.
Puis une recherche Google plus loin, je suis arrivé sur cette page. Les gros avantages de cet exemple pour moi sont que la réalisation a été faite sur un Raspberry Pi et que le code est en PHP. Pour les premiers tests cela fut bien pratique.
Me voilà reparti à réaliser un montage électronique. Le dernier montage était il y a 3 ans maintenant.
Grâce à un généreux collège qui a déjà réalisé la performance, j’ai pu obtenir le bon optocoupleur. Deux résistances plus tard, un câble posé entre le compteur et le Raspberry Pi, me voici parti dans le dur du sujet.
Comme présenté dans le lien donné plus haut, il y a quelques modifications à réaliser dans la configuration du Raspberry Pi avant de connecter le câble sur le port GPIO.
Ensuite, vient la création du port série. Cette création est rapidement réalisée par la commande suivante stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts
Avant l’exécution de la commande, soit le fichier /dev/ttyAMA0 n’existe pas, soit il est muet lors de l’exécution de la commande cat.
Malheureusement, après un redémarrage du Raspberry Pi, le fichier est muet. Afin de palier ce problème, il est nécessaire d’ajouter la commande de création du port série à la cron tab (tâche planifiée) de l’utilisateur root.
Maintenant la commande cat /dev/ttyAMA0 affiche bien les données du télé-relevé après un redémarrage du Raspberry Pi.
Ensuite, étant développeur PHP, j’ai testé les scripts fournis dans l’article mais, n’étant pas pleinement satisfait, j’ai développé une application un peu plus moderne. Une fois développée, je me suis aperçu que le Raspberry ne disposait que de PHP 5.4 qui est incompatible avec mon travail (PHP 5.6 minimum).
Peu importe, PHP est libre, je vais le compiler. Et tant qu’à faire de le compiler, autant prendre la dernière version de PHP 7.0 pour profiter des nombreuses optimisations réalisées sur cette version. Afin de vous épargner bon nombre de désagréments, je vous fournis les commandes permettant la compilation de PHP 7.0 sur un Raspberry Pi A avec Raspbian 7.
Récupération des sources (les commandes durent longtemps) :
cd /home/pi
git clone https://github.com/php/php-src.git
cd php-src
git checkout PHP-7.0.6
## Si vous avez déjà les sources et pour récupérer la dernière version :
cd /home/pi/php-src
git checkout master
git clean -d -x -f
git reset --hard
git pull
git checkout PHP-7.0.6
Maintenant, il faut installer les librairies et outils nécessaires à la compilation de PHP :
Pour le télécharger, rien de plus simple. Tout comme pour PH, l’utilisation de GIT est recommandée.
cd /home/pi
git clone https://github.com/Mactronique/edf-telereleve.git telereleve
cd telereleve
Maintenant, nous sommes dans le dossier de l’application. La première chose à faire est de télécharger la dernière version du gestionnaire de dépendances Composer.
Une fois installé, installons les dépendances du logiciel :
$ composer install --no-dev -o
Après la fin du téléchargement et de l’installation, le logiciel doit être configuré à minima en ajoutant ceci dans le fichier config.yml situé à la racine du projet :
compteur: CBEMM
device: /dev/ttyAMA0
Le type de compteur correspond à la version la plus courante (doc EDF).
Maintenant vérifions que tout fonctionne bien :
pi@raspberrypi ~/telereleve $ ./telereleve
Mactronique EDF Telereleve Reader version 0.1
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
count
help Displays help for a command
list Lists commands
read
test
Vérifions que la lecture se passe bien :
Maintenant que tout fonctionne bien, il reste à mettre en place la dernière chose nécessaire à la réalisation d’un relevé toutes les 5 minutes.
Modifions la crontab de l’utilisateur pi crontab -e pour y ajouter la ligne suivante :
Que se passera-t-il toutes les 5 mins ? Le gestionnaire de tâches planifiées exécutera la commande « read » de mon application et stockera le relevé dans une base de données sqlite nommé « datas.sqlite ». Elle est située à la racine du projet. Afin de pouvoir vérifier ce qui s’est passé lors de l’exécution, le log est disponible dans le fichier « telereleve.log » également situé à la racine du projet.
Voici un exemple des données présentes dans la base de données (j’ai lu la base de données avec sqlite browser).
Les données sont exprimées en Wh. Il faut diviser par 1000 pour obtenir des KWh.
Merci de votre intérêt pour mon travail. Je suis impatient de lire vos retours d’expérience et vos commentaires sur le projet.
Les cookies utilisés sur ce site sont soit techniques, soit pour le suivi respectueux de votre vie privée. Plus d'information
The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.