X-Git-Url: https://git.cweiske.de/usb-wde1-tools.git/blobdiff_plain/b47b4cde0022da49c160d40030e79dfc12f2fb30..76589ea07926b0101cae599736d13e4c507c8f97:/munin/usb-wde1_ diff --git a/munin/usb-wde1_ b/munin/usb-wde1_ index 388a9b4..3c75c72 100755 --- a/munin/usb-wde1_ +++ b/munin/usb-wde1_ @@ -8,14 +8,36 @@ 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 /var/log/usb-wde1.log + [usb-wde1_*] + env.logfile /var/spool/usb-wde1/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 @@ -24,17 +46,17 @@ usb-wde1 - Munin plugin to report usb-wde1 temperature and humidity data =cut -# params: -# - logfile -# - sensor names -# - type (temperature / humidity) -# - hostname +. ${MUNIN_LIBDIR:=/usr/share/munin}/plugins/plugin.sh + +TYPE=`basename $0 | sed 's/^.*_//g'` if [ "$1" = "autoconf" ]; then - if [ -r "$logfile" ]; then - echo yes - else + 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 @@ -44,25 +66,89 @@ elif [ "$1" = "suggest" ]; then exit 0 fi - +############### #load variables -TYPE=`basename $0 | sed 's/^.*_//g'` +############### + +# 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 + if [ "x$host_name" != "x" ]; 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 --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 --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' - #FIXME: warning/critical values -fi \ No newline at end of file + + 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