Relever et grapher la température de sa maison sur Debian
Cet article a été publié par Benjamin
le 21-06-14 à 09:58 dans la catégorie Raspberry Pi
Tags :
- Libre
- Raspberry Pi
- Serveur
- Ubuntu
Depuis que j'ai mis en place mon serveur perso, dans mon salon, je graphe pas mal de choses grâce à Munin. Par exemple, la température de 2 villes (voir sur mon article de présentation). Je voulais, depuis longtemps, grapher la température à l'intérieur de mon appart (pour pas cher, bien évidemment). C'est désormais chose faite pour moins de 6€. Voici ce que j'ai fait (j'ai fait les manips sur mon serveur perso, une Debian, tout est donc identique pour le faire sur une Ubuntu ou un Raspberry Pi).
I. Le matériel
Après quelques recherches, j'ai trouvé le thermomètre USB TEMPer. Les prix peuvent varier entre 5 et 20€, je pense avoir trouvé le moins cher sur ebay, pour 5,37€ frais de ports gratuits. Je passe donc commande et je reçois le joujou 2 semaines plus tard.
II. Les logiciels
Une fois reçu le thermomètre, je le branche sur le port USB de mon serveur. Voici le résultat de la commande dmesg (ou dans /var/log/messages) :
kernel: [4850586.280542] usb 2-1: new low speed USB device using uhci_hcd and address 4
kernel: [4850586.455191] usb 2-1: New USB device found, idVendor=0c45, idProduct=7401
kernel: [4850586.455200] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
kernel: [4850586.455207] usb 2-1: Product: TEMPerV1.4
kernel: [4850586.455211] usb 2-1: Manufacturer: RDing
kernel: [4850586.455421] usb 2-1: configuration #1 chosen from 1 choice
kernel: [4850586.474046] input: RDing TEMPerV1.4 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/input/input11
kernel: [4850586.474331] generic-usb 0003:0C45:7401.0007: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPerV1.4] on usb-0000:00:1d.0-1/input0
kernel: [4850586.489026] generic-usb 0003:0C45:7401.0008: hiddev0,hidraw1: USB HID v1.10 Device [RDing TEMPerV1.4] on usb-0000:00:1d.0-1/input1
Et le résultat de la commande lsusb :
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 004: ID 0c45:7401 Microdia
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 046d:0992 Logitech, Inc. QuickCam Communicate Deluxe
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Le TEMPer c'est la ligne "0c45:7404 Microdia". En tapant cette recherche dans votre moteur de recherche, vous tombez sur pas mal de docs. J'ai donc dû installer le binaire me permettant de relever la température. J'ai choisi temperv14 de dev-random.net.
Voici le détail les commandes :
sudo su
apt-get install libusb-dev libusb-1.0-0-dev unzip
cd /tmp/
wget http://dev-random.net/wp-content/uploads/2013/08/temperv14.zip
#ou un miroir
wget http://www.generation-linux.fr/public/juin14/temperv14.zip
unzip temperv14.zip
cd temperv14/
make
Si tout se passe correctement, vous obtenez un binaire temperv14 (dans le répertoire dans lequel vous vous trouvez, ici, /tmp/temperv14). Il ne reste plus qu'à le déplacer dans /usr/local/bin/ :
mv temperv14 /usr/local/bin
Vous pouvez désormais utiliser la commande suivante pour obtenir la température via le TEMPer :temperv14 -c
Une dernière chose, dans l'état, le binaire temperv14 n'est utilisable que par l'utilisateur root. Comme je compte grapher ces valeurs dans munin, il faut faire en sorte que tout le monde (dont l'utilisateur munin) puisse exécuter cette commande. Je lance donc cette commande :
chmod +s /usr/local/bin/temperv14
III. Monitoring dans munin
Voici le code que j'ai utilisé dans munin et le rendu obtenu :
Le code
#!/bin/sh
# Where is pcsensor located?
PCSENSOR="/usr/local/bin/temperv14"
if [ ! -e ${PCSENSOR} ]; then
echo "Cannot find pcsensor executable" >&2
exit -1
fi
case $1 in
config)
echo "graph_title Temperature Appart
graph_vlabel Celsius
graph_info Graph la temperature de mon appart avec temperv14
graph_category sensors
graph_args --base 1000 -l 0
graph_vlabel temp in C
temp.label temp"
exit 0;;
esac
echo -n "temp.value "
${PCSENSOR} -c
Le rendu
Voila, c'est pas plus compliqué :)
Commentaires
Huum, c'est intéressant de vouloir monitorer ces données mais la chaleur de serveur ne risque pas d'augmenter les valeurs ?
Il faudrait comparer avec la température affichée sur un thermomètre (à court terme) ou utiliser la clé sur un Raspberry Pi loin de chauffages, ordinateurs... pour avoir des valeurs sûrs.
En fait j'ai branché le thermomètre sur une rallonge USB et l'ai mis à environ 1m du serveur. En le branchant directement sur le serveur la température était supérieure en effet (le dongle faisait radiateur en fait).
J'ai comparé les valeurs au cours du week-end, j'ai entre 1.5° et 2° de plus avec le thermomètre USB.
Bonjour Benjamin, j'ai adoré ton article.
Le thermomètre USB, c'est exactement ce qu'il faut dans mon salon, avec tous les serveurs !
Je vais l'interfacer avec des graphes MRTG et des alertes Nagios.
Est-ce que quelqu'un connait une prise électrique IP, interruptible via une API ouverte, à partir d'un appel HTTP par exemple, sans avoir besoin de poser des installations supplémentaires ? Pas envie de recâbler tout mon tableau électrique pour commander une simple prise ...
PS : j'en ai besoin pour pouvoir déclencher et désactiver ma clim 3000W sur alerte de température (pour les alertes / actions Nagios, c'est mon boulot quotidien)
Merci d'avance !
Salut,
C'est curieux cette ligne noir dans le graph munin .... ?
V.
As-tu testé la version 2 ("TEMPer2") ?
J'ai envie de prendre celle-ci car elle possède une sonde externe (sur câble) mais j'ai peur que cette nouvelle version ne soit pas compatible avec les outils open-source dont on a besoin pour faire tourner nos serveurs chéris.
@V : en fait c'est un bug connu pour les graphs avec une seule ligne (single gauge) : https://bugs.debian.org/cgi-bin/bug...
C'est corrigé dans la v2 de munin
@CDuv : je n'ai pas testé TEMPer2, mais si tu fais un tuto à ce sujet, je suis curieux de voir :)
Il y a un petit bug sur Raspberry, il faut appliquer ce patch à Munin : https://github.com/cgzones/munin/co...
@MilonZ
hello.
j'utilise le X10 avec un marmitek CM15Pro pilotable facilement en cli sous debian/ubuntu
AM12 à la prise. (3kw à l'aise)
Excellent utilitaire. Merci !
Une option un peu plus complexe à mettre en oeuvre - à la premiere utilisation - mais qui ne nécessite pas les droits admin pour lancer l'utilitaire sans forcer l'UID en root, utiliser udev:
1. Creer un fichier de configuration udev, par ex.
2. Ajouter la sonde Temper2 de manière à la rendre accessible à un groupe existant, ici "plugdev" dans ce fichier et l'enregistrer:
3. Ajouter l'utilisateur souhaitant utiliser l'utilitaire au groupe plugdev, ici soi-même:
4. Quitter la session en cours et se relogger pour que le groupe soit pris en compte
5. Debrancher/rebrancher la sonde de température de maniere à ce que le nouveau réglage udev soit pris en compte
Désormais, temperv14 peut être lancé sans droits particuliers.
Bonjour,
je viens d'acquerir une sonde TEMPer2 (avec sonde exterieure).
en suivant le tuto j'obtiens bien la temperature du dongle mais pas de la sonde ext.
j'aurai besoin d'aide pour :
1- comment recuperer cette 2eme temperature ?
2- ou mettre le code proposé pour munin ? est-ce dans un fichier et sous quel nom et quel emplacement ?
merci d'avance