Générer des graphiques munin grâce aux sondes 1-wire

Grapher grapher grapher et grapher !
Déformation professionnelle ou pas, mais vive les graphs !

Analyser de bons graphiques en dit beaucoup.

  • l’inertie de mon chauffage est-il optimisé ?
  • Pourquoi ce pic de température, comment le lisser ?
  • Pourquoi cette soudaine chute de température ?

Obtenir une vue globale de l’ensemble des températures/hygrométrie, c’est primordial et bien sur, une base fondamentale en domotique.

Dans un premier temps, je souhaite monitorer les sondes de température via munin, plus tard, je doublerais très certainement le schlimblik via une base MySQL pour une meilleure exploitation des données. Il existe déjà des choses farfelues dans ce genre mais j’y reviendrai bien plus tard.

# apt-get install munin munin-node apache2

Je dé-commente et modifie les lignes de munin « /etc/munin/munin.conf » pour le faire fonctionner en tant que « serveur » comme je le souhaite, en rapport avec apache2.

dbdir /var/lib/munin
htmldir /var/www
logdir /var/log/munin
rundir /var/run/munin
#
# Where to look for the HTML templates
tmpldir /etc/munin/templates

J’utilise un script pompé et légèrement modifié de chez Yoann QUERET (qui au passage fait du super taff dans le domaine Asterisk & FreePBX). Merci à lui.

Le fichier du script se situe : /usr/share/munin/plugins/owfstemp

#!/bin/bash
DEVICE=`basename $0| cut -d "_" -f2`
ALIAS=`basename $0| cut -d "_" -f3`

if [ "$1" = "autoconf" ]; then
 echo yes
 exit 0
fi
if [ "$1" = "config" ]; then
 echo "graph_title Temperature $ALIAS"
 echo "graph_info Temperature pour la sonde $DEVICE"
 echo 'graph_args --base 1000 -l 0'
 echo 'graph_vlabel Celsius'
 echo 'graph_scale no'
 echo 'graph_category Temperature'
 echo "$ALIAS.label $ALIAS"
 exit 0
fi
# Pour une utilisation owserver avec owfs
#FS="/mnt/1wire"
#cd $FS/$DEVICE/
#echo "$ALIAS.label $ALIAS"
#echo -n "$ALIAS.value "
#sed -e 's/ //g'#echo

# Pour une utilisation owserver avec ow-shell et owread
TEMP=`owread -s localhost:4304 /$DEVICE/temperature`
echo -n "$ALIAS.value "
echo $TEMP

A noter qu’il est possible d’utiliser owread ou faire un cat/sed du fichier de température de la sonde, il ne me semble pas qu’il y’ait une différence ou une préférence dans l’utilisation.

On veille à rendre le fichier exécutable.

# chmod +x /usr/share/munin/plugins/owfstemp

Et on crée nos plugins munin :

# ln -s /usr/share/munin/plugins/owfstemp /etc/munin/plugins/owfstemp_28.EA54B5030000_Exterieur
# ln -s /usr/share/munin/plugins/owfstemp /etc/munin/plugins/owfstemp_28.7B2DB5030000_Chambre

Bien sûr, les ID changent selon chaque sonde, EA54B5030000 et 7B2DB5030000 me sont indiqués par owhttp http://domy:2121 par exemple.
Un petit essai :

# munin-run owfstemp_28.7B2DB5030000_Chambre
Chambre.value 21.5
munin-run owfstemp_28.EA54B5030000_Exterieur
Exterieur.value 21.125

Restart de munin-node pour la prise en compte de ces 2 plugins.

# /etc/init.d/munin-node restart

Et au bout d’une demi journée :

Graphique extérieur avec munin et une sonde DS18B20

Graphique extérieur avec munin et une sonde DS18B20

Graphique intérieur avec munin et une sonde DS18B20

Graphique intérieur avec munin et une sonde DS18B20

C’est un bon début, une base pour la supervision des températures sur le long terme, il faudra cependant très certainement repenser la récupérations des valeurs vers une base MySQL pour traiter les valeurs à court terme ; mais l’un n’empêche pas l’autre.

Ce billet est posté dans 1-wire, Debian, graphs. Mettre en favoris le permalien.

7 réponses à Générer des graphiques munin grâce aux sondes 1-wire

  1. Pingback: Générer des graphiques de températures de sondes 1-wire avec pChart2 | Domolio, la domotique et pas que…

  2. Pingback: Monitorer la temperature avec un Raspberry Pi | Domolio, la domotique et pas que…

  3. xhark says:

    Hello,

    merci pour ton tuto 🙂 J’ai la même sonde DS18B20 et avec owread j’ai des valeurs très aléatoires, qui changent à chaque refresh (un coup 7°, un coup 54°…)

    Sans parler du fait que mon ID via l’interface web http://monPi:2121 est différent de :

    /sys/bus/w1/devices/28-*

    La température fonctionne bien avec :

    cat /sys/bus/w1/devices/28-*/w1_slave

    ID dans OWFS=10.67C6697351FF alors qu’il devrait commencer par 28 non ?
    Merci !

    • Lionel says:

      Salut,

      Alors pour commencer, si l’ID commence par 10, je pense que c’est un DS18S20 ( http://owfs.sourceforge.net/family.html )
      Les DS18B20 commence par 28.
      Mais ici, ça ne pose pas de soucis.

      Une fois, j’avais ce type de comportement, des valeurs qui changent, c’était lié à un mauvais câblage, le composant « redemarrait » en boucle, et quand il démarre, il indique n’importe quoi.
      Un câble trop long peut apporter ce même problème.

      Donc :
      1) verifier le câblage, si nécessaire, le mettre au plus proche du DS9490R ou du raspberry
      2) mesurer la tension entre DATA et GND puis entre le 5V et la GND.
      3) essayer avec un autre DS18S20

      bon courage
      ++

      • xhark says:

        Ce qui est étrange c’est que je pense bien avoir une DS18B20 :

         more /sys/bus/w1/devices/28-021561a1f9ff/name
        28-021561a1f9ff
        

        car elle commence par 28 ? Je n’ai que 1m de câble et câblage OK. Pourquoi OWFS et le shell ne renvoient pas la même info sur l’ID ? existe-t-il un moyen pour être sûr d’être en possession d’une DS18S20 ou d’une DS18B20 ?

        Merci 🙂

        • xhark says:

          J’ai investigué un peu, la ligne « FAKE » n’était pas commentée dans /etc/owfs.conf, voilà donc d’où venait cet étrange ID.

          Si j’ai bien saisi OWFS ne peut fonctionner sans dongle USB, avec une simple sonde branchée sur le GPIO de toutes façons ?

          • Lionel says:

            Ce n’est pas tout à fait ça.
            OWFS fonctionne avec le dongle USB, mais on peut utiliser du 1-wire sans dongle USB en utilisant les GPIO d’un Raspberry Pi, mais du coup sans OWFS.
            Du coup se pose la question de l’intéret du dongle ? La réponse est simple, c’est de pouvoir utiliser du 1-wire sur un PC classique, c’est également la possibilité d’utiliser + de modèles de sondes 1-wire, d’autres choses que de la température, présence, etc…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *