Grafana et la domotique.

Des biens beaux graphiques

Sommaire

Prérequis:

  • Des données à représenter graphiquement !
  • Utiliser la bonne version de python (la 3.6 est fonctionnelle).

Utilisation de Grafana

J’ai passé quelques jours à m’amuser à mettre en graphique les données issues de mes capteurs domotiques. C’est assez simple à faire en utilisant les métriques issus de Jeedom et en les transmettant à Influxdb puis à Grafana. L’idée m’est venue après avoir vu passer de nombreuses contributions intéressantes sur le journal du hacker, montrant les mérites de l’utilisation de grafana comme interface de mise en forme de ses données. De ce que j’avais vu, l’outil en jetait pas mal, et j’avais bien envie de m’y essayer (d’autant plus quand j’ai lu les bidouillages du camarade seboss666). J’ai donc suivi le tuto de Chocoblog, de Feub, ou encore de Guillaume.

Je ne reviens pas en détail sur les étapes, les liens donnés précédemment vous diront tout. Pour résumer, il faut dans un premier temps installer Collectd (soft qui collecte les données), Influxdb (qui est la base qui stocke les données de Collectd), et Grafana (qui met en forme les données stockées par Influxdb). C’est simple non? En tout cas ça s’installe très facilement.

Collecter de la donnée avec une requête url

Une fois que tout est installé chez vous, vous obtiendrez des graphes pour vos différentes machines. Mais là où les choses deviennent intéressantes, c’est de faire la même chose avec les données collectées par ses capteurs domotiques. Neuhausj a mis sur github un petit soft pour récupérer les pushurl que les équipements jeedom réalisent à chaque changement d’état. Son appli fait le pont entre Jeedom et InfluxDB. Là encore, cette page vous dira tout.

Faites juste attention à l’url que vous renseignerez; voici comment elle se compose:

http://192.168.1.1:1234/updateData?name=luminosite&val=#value#&location=bureau
  • 192.168.1.1:1234 : IP et Port où vous avez installé le soft de Neuhausj
  • name=luminosite : renseignez le nom de la variable que vous vouler grapher
  • val=#value# : Laissez comme cela, Jeedom va remplacer #value# par la valeur du capteur
  • location=bureau : renseigner le lieu où se situe votre capteur

Et voici ce que cela donne chez moi.


Utilisation dans uns script

Ce qui est propre, c’est qu’avec ce pont il est possible de grapher facilement ce que l’on veut puisqu’il suffit d’écrire une url et de faire la requête. J’ai par exemple utilisé cette possibilité dans un simple script bash (inspiré par celui-ci) qui surveille la température de mes disques durs, et envoie le résultat avec un curl. Ce script est aussi prévu pour vous notifier si jamais la température d’un des disques dépasse les 45°c, que ce soit par mail (il faudra que votre machine en soit capable) ou que ce soit par sms (avec une ligne free).

~$ nano /home/toto/tempdisquesdurs.sh
      #!/bin/bash
      # Script monitoring espace disque et températures disques
      # Pré-requis : apt install hddtemp
      # Pour connaitre la liste des ses disques: fdisk -l
      # Notification par mail ou sms free (non obligatoire).

      alerte=45

      liste="sda sdb sdd sde sdf sdg sdh sdi"
      mail=toto@bibi.lulu
      location=chezdédé
      userfreebox=123456789
      passfreebox=azertyuiop

      for disque in $liste

      do
      temp=$(/usr/sbin/hddtemp -n /dev/$disque)
      curl --insecure "http://192.168.1.1:1234/updateData?name=$disque&val=$temp&location=$location"
      if [ $temp -ge $alerte ]; then
      curl --insecure "https://smsapi.free-mobile.fr/sendmsg?user=$userfreebox&pass=$passfreebox&msg=La temperature du disque /dev/$disque sur `hostname` est de $temp degres"
      echo "La temperature du disque /dev/$disque est de $temp degres" | mail -s "- Alerte - Disque dur sur `hostname`" $mail
      fi

      done
~$ chmod a+x /home/toto/tempdisquesdurs.sh

Pour automatiser la remonté d’information toutes les 3h, ajoutez simplement une ligne dans crontab.

~$ crontab -e
      0 */3 * * * bash /home/toto/tempdisquesdurs.sh

Amusez-vous bien!