Outils pour utilisateurs

Outils du site


user:pascal_cabaud:blog:em01b_et_mrtg

EM01b et MRTG [update]

J'utilise depuis plusieurs années un W&T Web Thermo Hydrograph pour avoir température et hygrométrie (relative et absolue) dans notre salle machines. Ces appareils embarquent un serveur Web pour afficher les données (avec graphiques !) et communiquent aussi par SNMP, mail ou syslog(3).

Un collègue m'a dernièrement prêté une sonde thermique EM01b de Sequoia Technology. Ces appareils sont interrogeables uniquement par un GET HTTP et ils renvoient quelque chose comme :

$ /usr/pkg/bin/lynx -source http://192.168.254.102/index.htm?em345678
<html>
<head><title></title></head>
<body>        hN020925TC: 36.1HU:18.9%IL:  0.7                        </body></html>

On note probablement un timestamp (je n'ai pas trop potassé la documentation…) puis TC: suivi de la température en degrés Celsius (on note qu'il fait chaud dans notre salle machine…), suivi de l'humidité relative (HU:) et enfin la luminosité (IL:).

Commençons par un script :

#!/bin/ksh
# 
# EM01B-STN
 
ip=192.168.254.102
 
ping -c2 -w2 -o $ip > /dev/null 2>&1
if [ $? -ne 0 ]; then
        printf "WARN: $ip unreachable\a\n"
        exit 1
fi
 
data=$( /usr/pkg/bin/lynx -source http://$ip/index.htm?em345678 |\
        tail -1 |\
        tr -s ' '|cut -f2,3,4 -d' '|\
        sed -e "s/: /:/g; s/^.*TC:\(.*\)/TC:\1/; s/HU:/;HU:/; s/IL:/;IL:/" )
 
# MRTG wants 2 values
echo 0
 
while [[ $1 == -* ]]; do
        case $1 in
                -h)
                        echo $data | sed -e "s/.*;HU://; s/;IL:.*//; s/\%//"
                        ;;
                -l)
                        echo $data | sed -e "s/.*;IL://;"
                        ;;
                -t)
                        echo $data | sed -e "s/;.*//; s/TC://;"
                        ;;
                -\?)
                        printf "Usage: $0 [ -h | -l | -t ]\n"
                        exit 1;
        esac
        shift
done
 
uptime |tr -s "  " ' '|sed -e "s/^.*up //"|cut -f1,2 -d','
hostname

Il accepte trois options : -h pour l'humidité, -l pour la luminosité et -t pour la température ; par exemple :

$ ./em10b.sh -t
0
28.8
130 days, 3:06
ma-machine-a-moi-que-j-ai

Il ne fait plus que 28.8°C.

Plus qu'à configurer MRTG pour avoir le tracé :

...
Options[_]: gauge,growright,nopercent,nobanner,noborder

Target[hum]: `/opt/scripts/em01b.sh -h`
Title[hum]: Humidité relative
PageTop[hum]: <H1>Humidité relative</H1>
MaxBytes[hum]: 100
Ysize[hum]: 250
XSize[hum]: 500
ShortLegend[hum]: percent
PageFoot[hum]: &nbsp;
PNGTitle[hum]: Humidite
YLegend[hum]: Pourcent
LegendI[hum]:
LegendO[hum]: Humidité relative
Legend1[hum]:
Legend2[hum]: Humidité relative

Et voilà ! Pour rendre les données accessibles, il manque encore la configuration du serveur Web.

user/pascal_cabaud/blog/em01b_et_mrtg.txt · Dernière modification: 2009/12/31 00:34 par Pascal Cabaud