Outils pour utilisateurs

Outils du site


documentations:ds1820owfs

~~DISCUSSION~~

Utilisation de owfs et de munin pour monitorer des capteurs de températures(DS1820)

Prérequis

Un serveur debian avec owfs installé dessus (voir ) et le paquet munin-node pour faire le graphe.

Un convertisseur 1-wire⇔USB : DS9490R.

Un cable réseau, ici du cat5.

Un connecteur RJ11 4 fil.

Un capteur de température 1-wire, ici un DS18S20.

Un sucre(éléctrique).

Montage

J'ai pris une paire (la bleu) dans mon cable réseau. J'ai mis le fils banc/bleu sur le pin 1 du rj11 et le bleu sur le pin 2.
De l'autre coté, j'ai placé le sucre sur les fils.

Voici le schéma de sortie du DS9490R dans un RJ11 6 fils :

PinSignal NameDéscription
1VDD5VDC output
2GNDTerre
3OW1-wire data
4GND_OW1-wire Return
5SUSOUSB Suspend Output
6N.C.Rien

Voici le schema de DS1820 :
DS1820

Voici le branchement complet :

Une fois que le montage est fait, clipser le rj11 dans le DS9490R.

Ne brancher pas encore le DS9490R à l'ordinateur. Sinon, il va charger le module ds2490 qui va plus géner qu'autre chose.

Préparation système

Si vous avez branché le DS9490 sur l'USB, vous aller surement avoir les modules ds2490, wire et cn de chargé. Il faut les décharger (au moins le ds2490), il faut être root :

~# rmmod ds2490 wire cn
~#

Il faut maintenant empecher que le module remonte à chaque plug du DS9490.

Dans le repertoire /etc/modprobe.d/, créer un fichier ds2490 avec :

/etc/modprobe.d/ds2490

blacklist ds2490

Vous pouvez mettre ceci dans le fichier blacklist à la place de créer un fichier, mais j'ai toujours peur qu'un mise à jour écrase le fichier un jour.

Et voilà, le module ds2490 ne se chargera plus, et ne chargera donc plus les modules wire et cn dont il dépendait.

Mise en place du script munin

Dans le repertoire /etc/munin/plugins/ créez le fichier owTemp :

~# vi /etc/munin/plugins/owTemp

Voici le script que j'ai fait :

/etc/munin/plugins/owTemp

#!/usr/bin/perl -w
 
# script munin de monitoring de température via owfs
 
use strict;
 
# Je récupère les ds1820 dans mon owfs
opendir(THERM,"/mnt/owfs") or die "no";
my @ds1820 = grep /^10\..*/, readdir THERM;
 
# Petit translation de l'id du ds en terme plus parlant
my %translate;
$translate{"10.8FD163010800"}="Bureau";
 
# Gestion de l'autoconf et de la config
if (defined $ARGV[0]) {
  if ($ARGV[0] eq 'autoconf') {
    if ( @ds1820 ) {
      print "yes\n";
      exit 0;
    } else {
      print "no (ds1820 not found)\n";
      exit 1;
    }
  } elsif ($ARGV[0] eq 'config') {
    print "graph_title Temperature sur ow\n";
    print "graph_args --base 1000 -l 0\n";
    print "graph_vlabel temp in °C\n";
    print "graph_category sensors\n";
    print "graph_info This graph shows the temperature in degrees Celsius on the one-wire network.\n";
    print "$translate{$_}.label $translate{$_}\n" foreach @ds1820;
    exit 0;
  }
}
 
# Récupération de la température de chaque capteur
foreach (@ds1820) {
  my $therm=$_;
  my $temp=`cat /mnt/owfs/$therm/temperature`;
  print "$translate{$therm}.value $temp\n";
}

Redémarrez le munin-node pour prendre en compte le script owTemp :

~# /etc/init.d/munin-node restart
Stopping Munin-Node: done.
Starting Munin-Node: done.
~#

Attendez un peu que votre “serveur munin” fasse tourner le cron (toutes les 5 minutes), et vous allez avoir un jolie graphique de votre température comme ceci :
owTemp

documentations/ds1820owfs.txt · Dernière modification: 2008/03/19 11:53 (modification externe)