verify that the log timestamp is not too old
[usb-wde1-tools.git] / munin / usb-wde1_
index 44443a81dc2d40c3788943eceb82dd70a1c2c346..950c6a75b9cbeb7ac976ca4f2ebd1853f6796174 100755 (executable)
@@ -14,25 +14,35 @@ usb-wde1 -  Munin plugin to report usb-wde1 temperature and humidity data
 
 =head2 EXAMPLE CONFIGURATION
 
- [usb-wde1_temperature]
-  env.logfile /var/log/usb-wde1.log
+ [usb-wde1_*]
+  env.logfile /tmp/usb-wde1-last
   env.host_name House
-  env.sensors 0 1 2 3 4 7
+  env.sensors 0 1 7
   env.sensor0 Living room
   env.sensor1 Kitchen
+  env.sensor7 Outside
 
 =head1 MAGIC MARKERS
 
  #%# family=manual
  #%# capabilities=autoconf suggest
 
+=head1 AUTHOR and LICENSE
+
+License: http://www.gnu.org/licenses/agpl.html AGPL
+Author: Christian Weiske <cweiske@cweiske.de>
+
 =cut
 
+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
 
@@ -42,9 +52,20 @@ 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
+# FIXME: Warning/critical values
 
 
 if [ "$1" = "config" ]; then
@@ -53,12 +74,14 @@ if [ "$1" = "config" ]; then
     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
@@ -66,6 +89,52 @@ if [ "$1" = "config" ]; then
     echo 'graph_category sensors'
 
     #FIXME: warning/critical values
+    for i in $sensors; do
+        eval "name=\$sensor$i"
+        echo "sensor$i.label $name"
+    done
 
     exit 0
-fi
\ No newline at end of file
+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