#!/bin/sh # -*- sh -*- : << =cut =head1 NAME usb-wde1 - Munin plugin to report usb-wde1 temperature and humidity data =head1 CONFIGURATION The plugin offers two modes: temperature and humidity graphing. Symlink usb-wde1_ as "usb-wde1_temperature" and/or "usb-wde1_humidity". =head2 EXAMPLE CONFIGURATION [usb-wde1_*] env.logfile /tmp/usb-wde1-last env.host_name House env.sensors 0 1 7 env.sensor0 Living room env.sensor1 Kitchen env.sensor7 Outside Warning/critical values for all sensors: env.warning 10 env.critical 5 Warning/critical values for single sensors: env.sensor7_warning 40 env.sensor7_critical 50 =head1 AUTHOR Christian Weiske =head1 LICENSE AGPL http://www.gnu.org/licenses/agpl.html =head1 MAGIC MARKERS #%# family=manual #%# capabilities=autoconf suggest =cut . ${MUNIN_LIBDIR:=/usr/share/munin}/plugins/plugin.sh TYPE=`basename $0 | sed 's/^.*_//g'` if [ "$1" = "autoconf" ]; then if [ ! -r "$logfile" ]; then echo "no (Logfile \"$logfile\" does not exist)" elif [ "$TYPE" != "temperature" -a "$TYPE" != "humidity" ]; then echo "no (Type \"$TYPE\" not supported, try \"./usb-wde1_ suggest\")" else echo yes fi exit 0 elif [ "$1" = "suggest" ]; then echo temperature echo humidity exit 0 fi ############### #load variables ############### # Sensors to display if [ "$sensors" = "" ]; then sensors="0 1 2 3 4 5 6 7" fi # Sensor names for i in $sensors; do code="sensor$i=\${sensor$i:=Sensor $i}" eval $code done if [ "$1" = "config" ]; then if [ "$host_name" != "" ]; then echo "host_name $host_name" fi if [ "$TYPE" = "temperature" ]; then echo 'graph_title Temperature' #echo 'graph_args --base 1000 --lower-limit -30 --upper-limit 60' echo 'graph_args --base 1000' echo 'graph_vlabel Temperature' echo 'graph_info Shows the temperature of different thermometers' else echo 'graph_title Humidity' #echo 'graph_args --base 1000 --lower-limit 0 --upper-limit 100' echo 'graph_args --base 1000' echo 'graph_vlabel Humidity' echo 'graph_info Shows the air humidity of different thermometers (in %)' fi echo 'graph_scale no' echo 'graph_category sensors' for i in $sensors; do eval "name=\$sensor$i" echo "sensor$i.label $name" print_warning "sensor$i" print_critical "sensor$i" done exit 0 fi #Beispielausgabe USB-WDE1: # $1;1;;13,8;22,7;22,6;17,8;22,2;21,2;22,9;;59;35;38;49;38;40;35;;;;;;;0 # Doku des Formats in 92030_USB_WDE1_V1.0_UM.pdf bei elv.de verfügbar # Format ist "Logview openformat" # http://www.logview.info/cms/d_formatbeschreibung.phtml #split by semicolons OLDIFS="$IFS" IFS=";" read -r sign state timestamp\ t0 t1 t2 t3 t4 t5 t6 t7\ h0 h1 h2 h3 h4 h5 h6 h7\ tc hc ws ns rain checksum\ < "$logfile" IFS=$OLDIFS if [ "$sign" != '$1' ]; then echo Log line does not begin with \$1 exit 2 fi curdate=`date +%s` if [ "$timestamp" -lt `expr $curdate - 600` ]; then #timestamp is too old, data are too old exit fi if [ "$TYPE" = "temperature" ]; then varprefix=t else varprefix=h fi for i in $sensors; do eval "value=\$$varprefix$i" value=`echo $value|sed s/,/./` echo "sensor$i.value $value" done