Pour un rendu optimal, activez JavaScript

Grafana et la domotique

 ·  ☕ 3 min de lecture  ·  🩊 Propositionjoe

Des biens beaux graphiques Ă  selfhoster.

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!

Partagez

Propositionjoe
RÉDIGÉ PAR
Propositionjoe
Soyez rĂ©solus de ne servir plus et vous voilĂ  libres, Étienne de La BoĂ©tie, Bricoleur militant.