Raspberry, grapher sa consommation électrique (partie 2)

On continue dans notre périple du graphage de notre consommation électrique comme vu en première partie. Nous allons cette fois-ci nous intéresser à la partie serveur.

Installation & configuration d’InfluxDb

Sur le serveur à destination les données provenant du raspberry, récupérez la dernière version d’InfluxDb sur http://influxdb.com/download/
wget http://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb
dpkg -i influxdb_latest_amd64.deb

On édite la configuration d’InfluxDb (/opt/influxdb/shared/config.toml) pour activer le support du protocole collectd, voir l’article que j’ai déjà écrit à ce sujet. On redémarre pour prendre en compte le changement.
Vérifions que le port 25826/udp est bien ouvert.

sudo ss -lupn # liste des port udp en écoute avec le processus
State      Recv-Q Send-Q    Local Address:Port  Peer Address:Port 
...
UNCONN     0      0         :::25826 :::*      users:(("influxdb",pid=7405,fd=22))

Maintenant nous allons créer les utilisateurs et les bases nécessaires pour stocker les données. Connectez-vous avec un navigateur web sur l’interface web d’administration InfluxDb http://monserveur:8083 (root/root pour l’utilisateur et le mot de passe par défaut)

InfluxDb administration

Interface d’administration InfluxDb

Créez tout d’abord une base nommée collectd et un utilisateur homonyme pour cette base; celle-ci stockera les métriques collectés.
Créons ensuite une base grafana et un autre utilisateur, cette base stockera les données grafana, comme les tableaux de bord et les graphes.

Tout est terminé pour ce qui est de la configuration d’InfluxDb.

Démarrage de collectd

Sur le raspberry il est temps de démarrer collectd
/etc/init.d/collectd start
Pour vérifier que tout fonctionne bien, faîtes ps -edf |grep collectd vous devriez voir quelque chose comme cela

root 7129 7127 0 Jan12 ? 00:21:58 collectd -C /etc/collectd/collectd.conf -f
pi 7141 7129 0 Jan12 ? 00:09:19 python -u /home/pi/collectd_teleinfo.py

On voit bien que notre script python tourne.

Maintenant vérifions qu’InfluxDb récupère bien les métriques, pour cela rendez-vous sur l’interface web d’administration dans la base collectd.

select * from /.*/ limit 1

Installation & Configuration de grafana

Je pars du principe que l’on créé un vhost dédié pour l’hébergement de grafana.
Pour le vhost rien de compliqué, il suffit de déclarer un Document Root qui pointe sur un répertoire /srv/www/grafana (un exemple pour nginx est disponible). Pensez-bien à activer le vhost.

On se rend dans le répertoire /srv/www et on place la dernière version de grafana disponible au format tar.gz sur la page http://grafana.org/download/.
On extrait l’archive ce qui va vous donner un répertoire grafana-1.x.x.
Créez un lien symbolique nommé grafana

/srv/www$ ln -s grafana-1.x.x grafana

Cela rendra plus simple les futures mises à jour de versions.
Testez que votre site grafana répond bien, vous devriez avoir une interface noire, c’est bon signe :).

On passe maintenant à la configuration de grafana pour interroger les données dans InfluxDb.
Dans le répertoire du vhost, copiez le fichier config.sample.js en config.js, et éditons ce dernier pour déclarer nos deux sources de données crées précédemment, de sorte que vous ayez quelque chose comme cela:

...
datasources: {
  influxdb: {
    type: 'influxdb',
      url: "http://votre_serveur_influxdb:8086/db/collectd",
      username: 'collectd_user',
      password: 'collectd_pass',
  },
  grafana: {
    type: 'influxdb',
      url: "http://votre_serveur_influxdb:8086/db/grafana",
      username: 'grafana_user',
      password: 'grafana_pass',
      grafanaDB: true
  },
},
...

On déclare les deux datasources créé précédemment, les url doivent être accessible  par le navigateur web que vous utiliserez, un nom public est plus simple de ce point de vue. Notez que le second datasource a un attribut grafanaDB: true pour définir qu’il va stocker vos préférences Grafana.

Pour la configuration des tableaux de bord Grafana, ca sera dans le post suivant (à venir).

Raspberry, grapher sa consommation électrique (partie 1)

Dans cette série de publications, je vais vous détailler comment j’ai mis en place chez moi la collecte des information de télémétrie sur mon compteur électrique, afin de surveiller en temps réel la consommation (Watt + Intensité).
Mon but à long terme est de me rendre compte de manière plus détaillée des spécificités de ma consommation, de ses différences entres les saisons, et de son évolution au cours des années, en fonction des changements et des travaux effectués dans mon habitat.

Graphe de consommation électrique par heure dans grafana.

Graphe de consommation électrique par heure, dans grafana. En vert les plages heures creuses, en rouge les plages heures pleines.

Les critères que j’avais en tête.

  • Économique. Peu de matériel à acheter
  • Une installation avec pas ou peu d’électronique à réaliser. Je n’ai aucune compétence dans ce domaine, et m’investir dans électronique m’aurait coûté en temps et en argent.
  • Basé sur des outils existants. Je n’ai pas envie de créer du code spécifique pour mon propre besoin si des projets existent.
  • Une interface de visualisation puissante. Les graphes générés par rrd sont sympas mais manque de dynamisme.

La solution de collecte se basera sur la solution suivante

Matériel

  • Raspberry Pi (35 € mais je l’avais déjà en fait)
  • un module téléinfo pour Raspberry Pi. Pour ma part j’ai pris un module Yadom RPIDOM Lite (29 €)
  • 2 câbles électriques. Pour raccorder le module téléinfo au compteur.
  • un serveur de stockage pour les métriques. Ça pourrait être sur le Raspberry si on n’utilise pas le stockage sur la carte SD. Dans mon cas, j’ai déjà un serveur Dedibox SC gen2 chez online.fr, qui va me servir à cela, mais vous pouvez l’installer sur n’importe quoi.

Logiciel

  • Collectd. Un système de collecte de métriques, très léger et très performant.
  • Un script de collecte des données du module téléinfo en python.
  • Influxdb. Un serveur de stockage de métriques, j’en ai brièvement parlé auparavant.
  • Grafana. Une application Web pour afficher et exploiter les données stockées dans Infuxdb.
  • Un serveur Web pour faire tourner Grafana.

Présentation

Collectd: C’est un outil qui collecte des métriques. Il a plein d’avantages, léger en consommation ressource, une fréquence de polling élevée (jusqu’à 10 secondes), il est pourvu de plein de plugins pour la lecture de métriques. Il permet d’écrire les données reçues en rrd (le format le plus populaire) mais aussi dans d’autres stockages (NoSQL comme mongoDb ou Redis, en CSV), la liste officielle se trouve à la page https://collectd.org/wiki/index.php/Table_of_Plugins.
Il est possible d’écrire ses propres plugins en perl, python, bash, …Je l’utilise déjà pour la surveillance de mes machines.
InfluxDb: C’est un serveur qui permet le stockage de métriques mais au lieu d’utiliser des fichiers au format RRD, il s’appuie sur le concept de bases élastiques et distribuées.
Grafana: C’est une puissante application web d’affichage dynamique de données provenant d’InfluxDb ou Graphite. Jetez un coup d’œil sur la page de démo pour vous rendre compte des possibilités.
collectd_teleinfo.py: c’est le script que j’ai développé en me basant sur du code d’autres personnes pour collecter les données depuis le device /dev/ttyAMA0 et envoyer les données a destination du démon collectd de la machine. Ce script a été testé pour la tarification heures creuses / heures pleines.

Réalisation

Branchement du module téléinfo sur le compteur électrique

Module RPIDom Lite

Le module permet de transformer le signal des bornes L1/L2 du compteur électrique en signal série. Il suffit de le brancher sur le raspberry sur les broches GPIO et de raccorder deux fils aux broches du compteur électrique.

Comme je n’aime pas la redite, je vous envoie vers la documentation du module RPIDOM sur le site de Yadom pour la configuration du shield sur le raspberry.

teleinfo-I1I2

Mise en place du script de collecte téléinfo

Le script, lancé par collectd, a pour rôle d’aller lire les données du port série (périphérique /dev/ttyAMAO) en boucle et écrire en sortie standard les valeurs récupérées. Ces valeurs sont lues par collectd et envoyées aux différents destinations en écriture.

Vous pouvez récupérer le script dans mon dépôt GitHub. Placez-le où bon vous semble. Vous aurez besoin du paquet python-serial. Pour tester son bon fonctionnement, lancez le script en utilisateur pi avec la commande python -u collect_teleinfo.py, vous devriez voir après quelques instants des lignes similaires.

PUTVAL framboise/teleinfo-intensite/power-imax interval=30 N:49
PUTVAL framboise/teleinfo-intensite/power-iinst interval=30 N:32
PUTVAL ...

Cela veux dire que les données sont bien récupérées. En cas de problème le script devrait vous afficher une erreur compréhensible vous permettant de corriger.

Installation & configuration de collectd

Sur le serveur raspberry, on installe collectd via la commande apt-get install collectd-core.
On créé ensuite la configuration (/etc/collectd/collectd.conf) avec ce contenu.

LoadPlugin exec
LoadPlugin network

<Plugin Exec>
  Exec "pi" "python" "-u" "/path/collectd_teleinfo.py"
</Plugin>

<Plugin Network>
  Server "monserveur.fr" "25826"
</Plugin>

Donc qu’avons-nous fait ?
Nous avons déclaré que nous utilisions le plugin exec pour exécuter une commande python -u /path/collectd_teleinfo.py en tant qu’utilisateur pi. le -u dans la commande est nécessaire pour éviter la mise en cache vers la sortie standard.
Ensuite nous activons le plugin Network et déclarons un serveur collectd qui a le nom monserveur.fr sur le port 25826 qui recevra les métriques lues par ce démon.

Nous pourrions lancer le démon dès maintenant mais le serveur distant n’est pas encore prêt.

Pour la suite passons à l’article suivant.

Construire une terrasse en bois sur un sol en terre

(Normalement ce blog n’héberge pas de discussion à propos du bricolage mais une fois n’est pas coutume et ayant galéré un peu de mon côté, je me suis dit que partager mon expérience serait utile pour quelqu’un qui chercherait à construire une terrasse sur de la terre.)

Présentation

Le but de mon projet était de prolonger ma terrasse en carrelage par une terrasse en bois au-dessus d’un bout de terre qui mesure d’environ 3 mètres par 2,50 mètres (donc environ 7,5 m²).

Étant un bricoleur novice, sans beaucoup de main d’œuvre ni temps libre, je voulais que ça soit simple de réalisation, d’entretien et solide. J’ai donc éliminé le choix de bétonner le sol, de plus ma copropriété n’autorise pas les constructions en dur.

Le matériel choisit pour la terrasse est le suivant:

Initialement j’ai prévu de poser les lambourdes directement sur la terre après avoir égaliser légèrement le parterre avec une pioche et un râteau mais cette tache s’est relevée plus difficile que prévu alors j’ai préféré creuser profondément la terre et poser les lambourdes sur un support.

Matériel

Outils nécessaires

  • Pelle(s)
  • Pioche(s)
  • Râteau(s)
  • Règle(s) de 1,5 mètre avec niveau
  • Perceuse – Visseuse
  • Scie circulaire
  • Foret bois exotique 4 mm (si les vis font 5 mm)
  • Foret bois 8/10 mm (si les têtes des vis font 10 mm)
  • Espaceurs de terrasse

Choix des lambourdes

Je me suis tourné vers des lambourdes en bois exotique parce qu’au début je voulais juste poser les lambourdes directement sur le sol et donc cette solution nécessitait d’utiliser un bois imputrescible. Après avoir changé d’idée j’aurais pu me tourner vers des lambourdes bien moins chères comme des lambourdes en pin, qui sont aux environs de 5 € / pièce, mais je n’y ait pas pensé. Par contre étant moins dense donc moins solide il faut les rapprocher (une toutes les 30 cm au lieu d’une toute les 40 cm) pour compenser.

Choix des lames

Au départ mon choix s’était porté sur des lames en composites pour leur facilité d’entretien mais après avoir vu l’aspect et la couleurs des lames en vente chez Leroy-Merlin, j’ai été plutôt déçu. Le magasin Castorama du coin étant en rénovation, rien n’était disponible, je suis donc retourné chez Leroy-Merlin et j’ai donc choisi du bois plutôt que du composite.

Concernant les bois, les choix possibles étaient pin, douglas, cumaru, lantawi / tali, bambou et ipé. J’avoue que j’ai évité les lames en bois bas de gamme comme le pin car j’ai eu peur qu’elles deviennent cassantes au bout de quelques temps; j’ai aussi préféré éviter les lames à clipper et privilégier les lames à viser, il est donc resté cumaru, lantawi, bambou et ipé.

Le bambou était le bois qui me paraissait le plus beau mais l’entretien nécessaire — au moins deux traitements par an — m’a un peu freiné (oui je suis paresseux) et il n’est pas imputrescible;  de plus le risque que le bois soit contaminé par un champignon était possible (malgré les commentaires élogieux des consommateurs quant au traitement rapide et efficace effectué par le fournisseur en cas de découverte).

Concernant le cumaru et le lantawi je les ai trouvé trop sombres, la couleur tirant plus vers le rouge foncé que le marron.

Au final j’ai privilégié l’ipé de par son peu d’entretien et du prix intéressant auquel il était vendu, aux alentours de 80 € / m² au lieu de 130 € / m² habituellement, mais certes il restait néanmoins le plus cher.

Choix du support

plot-plastiquePour le support j’ai simplement choisi des plots en plastique réglables qui permettent d’avoir un débattement entre 8 et 14 centimètres, nécessaire compte tenu de la difficulté d’avoir un sol plane. Au début j’avais choisi des plots de 4 à 6 cm de débattement mais c’était trop difficile de limiter la différence de profondeur du sol à 2 centimètres.

Installation

Préparation de la terre

Il faut creuser d’une profondeur équivalente à l’épaisseur des lames (2,1 cm) + l’épaisseur des lambourdes (3,8 cm) + la hauteur des plots (entre 8 et 14 cm) afin que si nécessaire, les lames arrivent à la hauteur de votre terrasse existante. C’est un grosse partie du boulot à faire et cela peut déjà prendre pas mal de temps.

Ensuite Il faut faire en sorte que la terre soit le plus droit possible. Cela veut dire gratter et ratisser la terre le plus possible.  Pour évaluer la planéité de votre sol utilisez un règle muni d’un niveau. À ce moment-là il est possible de mettre une couche de sable afin de rendre le sol plus plane mais pour ma part je ne l’ai pas fait. Il faut ensuite poser du tissu géotextile afin de stabiliser et empêcher la pousse des herbes.

Pose des plots en plastique

On pose les plots en plastique directement sur le géotextile, en ligne perpendiculaire à la pose prévue des lames de bois. Les plots, avec des lambourdes en bois exotique, peuvent être espacées de 60 centimètres environ; pour des lambourdes moins denses il faut laisser 50 voire 40 centimètres.

dalle_plotEn cas de besoin, si la terre est trop meuble ou pas assez stable, il est possible de poser un carreau de carrelage sous le plot pour égaliser le terrain. Castorama propose aussi des dalles stabilisatrices spéciales pour la pose des plots.

Cassez 2 ergots faces à face sur les plots pour permettre de poser les lambourdes.

Pose des lambourdes

Posez les lambourdes dans le même sens que les plots posés précédemment, il faut veiller à ne pas les coller contre le mur et laisser 1 centimètre.

Il faut maintenant avec une règle à niveau régler les plots pour que les lambourdes d’une même rangée soit bien plane en commençant par les plots aux extrémités puis ceux entre. Appuyez sur les lambourdes pour vérifier qu’elles ne bougent pas  et que tous les plots touchent bien les lambourdes.

Ensuite régler les lambourdes pour qu’elle soient planes sur plusieurs rangées, toujours avec le règle. Vous devriez avoir cela à la fin.

terrasse_lambourdes

Il est aussi possible de fixer les lambourdes entre elles en vissant un bout de bois entre 2 lambourdes contigües a 2 ou 3 endroits. Il est également possible de faire un cadre de fixation, en mettant une lambourde perpendiculaire à chaque extrémité des longueurs.

Fixation des lames

On attaque la partie la plus simple, en tout cas dans mon cas, la seule difficulté réside dans le fait de savoir de quel côté commencer la pose. Si vous commencez coté mur, dans l’hypothèse ou les lames sont parallèles au mur de la maison, la dernière lame sera coupée si elle dépasse des lambourdes; si vous commencez de l’extérieur, ça sera la lame proche du mur qui risquera d’être coupée.  À vous de voir ce que vous préférez.

Commencer à poser les lames depuis le mur pour voir comment elles se placent et si aucun défaut n’est visible une fois posée sur les lambourdes. Mélangez vos lames pour panacher les couleurs.

Une fois les lames posées, au niveau du croisement avec les lambourdes, faites 2 trous de pré-perçage avec le foret à bois; Je vous conseille pour allez plus vite de couper un petit bout de lame dans lequel vous ferez des trous qui servira de patron pour le placement des trous. Pour aller plus vite, commencez par faire les trous uniquement aux extrémités des lames. Ensuite au niveau des trou de pré-perçage, on réalise avec le foret de 8/10mm un trou sur 1 cm pour la tête de vis; si vous avez une fraise, c’est mieux™.

Pourquoi faire cela ? le pré-perçage permet de faire un chemin droit pour la vis, sinon la vis pourrait partir de travers et cela facilite sa pénétration dans la lambourde. Le trou plus gros pour la tête évite de casser la vis lorsqu’elle force dans la lame pour entrer.

Maintenant il est temps de fixer la lame sur la lambourde, il suffit de viser la vis dans la lame mais sans trop forcer sous peine de casser la vis; quand la lame descend légèrement sous le poids de la vis c’est bon. Insérez des espaceurs (j’ai pris 4 millimètres) pour écarter la lame adjacente, et continuer la fixation jusqu’à arriver au bout de la terrasse.

La terrasse

Pas de lame à couper pour moi.

Dans la cas ou la lame n’est pas assez longue, il faut que les bords des lames commencent et terminent sur une lambourde, et donc chacun prend une moitié de la lambourde; tout en laissant 2 à 4 millimètres entre les lambourdes pour laisser un espace de dilatation.

Conclusion

Cet article ne se veut pas un article complet sur comment poser une terrasse mais juste un moyen de partager mon expérience, vous trouverez surement plus d’information sur un forum de bricoleurs.

Pensez a bien mesurer les lames et les lambourdes et vérifier qu’elles sont bien planes, avec un règle par exemple avant de les embarquer; ça évite les surprises au moment de la pose, comme se rendre compte qu’elles font 2,96 mètres plutôt que 3 mètres :-).

J’ai passé un saturateur sur les lames en ipé mais cela n’était pas nécessaire car je trouve que le bois est trop foncé maintenant. Il devrait normalement s’éclaircir d’ici quelques temps, enfin je l’espère.

Les espaceur de terrasse que j’ai acheté sont trop cher, avec un lame en contreplaqué, vous pourriez faire la même chose en moins cher.