Lors du dernier Devoxx France, j’ai eu l’occasion de participer à plusieurs conférences. L’une d’entre elles a attiré mon attention de par son titre : “Analyser votre consommation électrique avec un Raspberry Pi“. En lisant plus en détail le descriptif de la session, celle-ci m’a définitivement convaincu d’y participer : Et si on s’amusait un peu? Prenons un Raspberry Pi et connectons-le à notre compteur électrique. Rajoutons un peu de Docker, de MongoDB, de Nodejs et d’HTML5 et nous obtenons un dashboard temps réel pour analyser notre consommation électrique. Ce n’est pas très difficile. Mais à quoi cela peut-il servir? Associer Raspberry Pi et Docker est original. Raison de plus d’aller faire un tour à cette session présentée dans un format court de 20 minutes montre en main !
Cédric Finance, développeur Java et intéressé par la domotique a présenté ce projet mené à titre personnel.
En quoi cela consiste ?
Comme indiqué dans la présentation, il s’agit là de relever et d’analyser sa consommation électrique afin d’en retirer un certain nombre d’informations. Pour ce faire, on utilise l’interface “Téléinformation” du compteur EDF qui délivre un signal électrique. Cette interface cliente est présente dans la partie basse du compteur, celle qui est non plombée. Le Raspberry Pi est raccordé au bornier par les ports GPIO et récupère les informations transmises par le compteur électrique. Les données reçues sont ensuite stockées en base de données afin d’être visualisées par l’intermédiaire d’un tableau de bord sur client léger.
Le matériel nécessaire
- Compteur Téléinfo
- Optocoupleur SFH620A
- Résistance 1.2 kΩ
- Résistance 3.3 kΩ
- Plaque d’essai (de type breadboard)
- Raspberry Pi avec carte SD, alimentation (dongle wifi en option)
Le détail du montage électronique est détaillé ici
Une fois la partie électronique réalisée et opérationnelle, il reste encore toute la partie logicielle à mettre en place. Et c’est là le cœur du sujet !
Les données récupérées
Le compteur EDF Téléinfo fournit une vingtaine de métriques. Celles qui nous intéressent ici sont les suivantes :
- La puissance instantanée (exprimée en Watt) : utile pour voir sa consommation électrique à l’instant T
- La consommation d’électricité (en Watts-heures) : sur laquelle se base la facturation de consommation et qui permet donc de connaître sa consommation (par heure, jour, mois) en fonction des périodes tarifaires
Le principal problème est que ces informations ne sont pas communiquées directement par le compteur. Il faut donc passer par un petit calcul mais rien de bien méchant rassurez-vous.
Le compteur électrique ne fournit que la puissance apparente (en Volt.Ampère) ce qui, en régime alternatif, ne correspond pas à la puissance instantanée. Il est donc nécessaire de multiplier la puissance apparente par le facteur de puissance, le fameux cosinus(Phi) pour ceux qui se souviennent de leurs cours du lycée. Le facteur de puissance traduit le déphasage angulaire entre la tension et l’intensité du courant électrique.
Un autre problème apparaît ici : ce facteur de puissance dépend de chaque appareil qui consomme de l’électricité dans notre appartement ou maison.
Plutôt que de passer par la puissante apparente, un autre moyen est d’utiliser l’intensité instantanée (en Ampère) fournie directement par le boitier Téléinfo. Avec ceci, on possède un moyen de déterminer approximativement la puissance instantanée consommée par tous les appareils électriques.
Pour ce qui est de la consommation d’électricité, il faut se baser sur le nombre total de Watts-heures consommés depuis l’installation du compteur. C’est la seule information que l’on a à notre disposition. Pour déterminer la consommation quotidienne, il faut donc faire la différence entre le nombre total de Watts-heures à l’instant T et le nombre total de la veille.
L’analyse des données
Une fois le port série du Raspberry Pi activé, celui-ci est apte à recevoir les trames envoyées par le compteur électrique toutes les 15 secondes.
On s’aperçoit donc qu’un certain nombre d’outils sont embarqués sur le Raspberry. Cela va de MongoDB pour la partie stockage de données à ActiveMQ pour la partie middleware (gestion de file de messages) en passant par Docker pour la virtualisation légère par conteneur. L’utilisation de ce dernier composant étant clairement dispensable à mon sens, mais pourquoi pas ! L’intérêt est ici, je pense, d’utiliser une techno qui a le vent en poupe.
Pour visualiser le tout, il existe un dashboard en NodeJS et HTML5 et qui lui aussi est intégré au Raspberry. Pour du prototypage cela fait bien l’affaire mais pour un fonctionnement de “production” dans un logement “domotisé”, la partie stockage et analyse devra être centralisée sur un NAS ou sur un Raspberry faisant office de cloud personnel.
Le dashboard affiche la consommation instantanée ainsi qu’un graphique de la consommation électrique au cours du temps. Tout cela ayant pour but de mieux comprendre sa consommation électrique.
Analyse des données : pour aller plus loin…
Si le monitoring de données est relativement simple dans ce cas (on récolte et affiche les valeurs), une analyse plus poussée peut rapidement complexifier le travail. Il peut alors être judicieux d’utiliser des outils qui peuvent nous faciliter le travail. C’est le cas de Thingspeak !
Ce service permet de publier des données par l’intermédiaire d’un “channel” (public ou privé) et de générer des graphes à partir de celles-ci. Il est également possible d’effectuer du “data processing” sur les données stockées (moyenne, médiane, arrondi, etc.). Ces graphes sont consultables directement sur le site de Thingspeak ou bien peuvent être intégrés sur son site personnel, ce qui nous intéresse dans notre cas.
Toujours dans l’esprit de pousser plus loin dans la visualisation de sa consommation électrique, deux fonctionnalités ont été identifiées comme étant utiles :
- L’interpolation de données pour les mesures manquantes
- Calcul du coût de consommation pour fournir une base comparative avec la facturation
Pour ce dernier point, il semble cependant assez complexe d’arriver à un niveau de précision acceptable étant donné que la calcul de la puissance instantanée se base sur des approximations. Mais cela permet tout de même de fournir un bon point de comparaison. Bien meilleur en tout cas que si l’on avait fait nos mesures avec des pinces ampèremétriques qui provoquent une dérive avec le temps.
Un condensé de technologies en vogue
Comme présenté sur le schéma de la couche applicative, ce prototype fait appel à un ensemble de technologies d’actualité, la plus plébiscitée ces temps-ci étant sans aucun doute Docker. Du moins pour tout ceux qui suivent l’actualité du mouvement DevOps. Bien que Docker ne soit pas dans notre cas incontournable (sa force est ici clairement sous exploitée), ce prototype a au moins le mérite de mettre en exergue les interactions entre différents composants d’une stack technologique hétérogène. Que ce soit pour la partie hardware (Raspberry Pi, montage électronique) ou la partie software (Docker, MongoDB, ActiveMq, Thingspeak), la cohabitation entre tous ces éléments fonctionne parfaitement, chacun avec son périmètre qui lui a été défini.
Pour autant, il n’y a pas une unique solution pour répondre à ce genre de problématique. On aurait très bien pu imaginer intégrer la stack ElasticSearch Logstash Kibana – ELK pour les intimes – en lieu et place du triptyque ActiveMQ, MongoDB, téléinfo-dashboard. L’intérêt ici aurait été de bénéficier d’une solution “clé en main” largement éprouvée dans le monde de l’exploitation d’applications.
L’éclosion de la maison connectée ?
Le boîtier de mesure de consommation électrique présenté lors de la conférence n’est qu’une toute petite partie de ce que l’on retrouve dans le monde de la domotique et plus généralement dans l’écosystème de l’Internet of Things (IoT). D’autres dispositifs similaires peuvent être adaptés à d’autres types de relevés de consommation d’énergie. On pense tout naturellement à l’eau ainsi qu’au gaz. Mais contrairement au compteur électrique, la mise en œuvre est plus délicate, surtout si l’on n’est pas trop bricoleur. Pour les plus téméraires je vous conseille l’article suivant qui détaille le dispositif.
On constate donc que les systèmes de relevés de mesures ne sont que des briques d’un ensemble beaucoup plus vaste pilotées par un orchestrateur comme, par exemple, une box domotique.
Lors du dernier TechDays Microsoft qui a eu lieu en Février 2015 le système de monitoring de consommation énergétique S-Energy développé par Sébastien Warin a été présenté au public.
Rien qu’à la vue de cette vidéo, on se rend bien compte que l’on peut aller très loin dans le concept de la maison connectée !
En resumé :
Le Raspberry Pi est une carte à processeur ARM. C’est une sorte de nano-ordinateur.
Il est possible de relever et d’analyser sa consommation électrique afin d’en retirer un certain nombre d’informations. Le Raspberry Pi est raccordé au compteur EDF par les ports GPIO et récupère les informations transmises par le compteur électrique. Les données reçues sont ensuite stockées en base de données afin d’être visualisées par l’intermédiaire d’un tableau de bord sur client léger.