diff --git a/plugins/other/wfrog b/plugins/other/wfrog new file mode 100755 index 00000000..4fb5bd79 --- /dev/null +++ b/plugins/other/wfrog @@ -0,0 +1,99 @@ +#!/usr/bin/perl -w + +# Author: William Viker +# Version: 0.1 + +# Non-members may check out a read-only working copy anonymously over HTTP. +# $ svn checkout http://wfrogmunin.googlecode.com/svn/trunk/ wfrogmunin-read-only + +# TODO: +# * Wait a couple of hours to see if this actually works. +# * Add proper data labels for the different values possible +# * more.. + +use strict; +use Data::Dumper; + +# INSTRUCTIONS +# +# 1. Install wfrog, get it up running with your weather station +# 2. Locate your wfrog.csv file (wfrog creates after 10 mins) +# 3. cd /etc/munin/plugins/ +# 4. ln -s /usr/share/munin/plugins/wfrog wfrog_temp +# 4. ln -s /usr/share/munin/plugins/wfrog wfrog_pressure +# 5. etc.. +# 6. reload munin-node ;-) + + +# In case you need to change this. + +my %CONFIG = ( + 'wfrogcsv' => '/var/lib/wfrog/wfrog.csv', +); + + +my $interesting; + +if ($0 =~ m#wfrog_(\w+)#) { + $interesting = $1; +} + +else { + print STDERR "Symlink the wfrog plugin file to wfrog_something, like wfrog_temperature, etc." . "\n"; + exit 1; +} + +if (defined $ARGV[0] && $ARGV[0] eq 'autoconf') { + print "yes\n"; + exit 0; +} + +open FILE, "<", $CONFIG{'wfrogcsv'}; + +my $header = ; + +seek( FILE, -300, 2 ); +my @line = readline FILE; + +$header =~ s/[\r\n]//gs; # bah @ csv +$line[-1] =~ s/[\r\n]//gs; # --- " --- + +my @Data = split /,/, $line[-1]; +my @Keys = split /,/, $header; + +my $GotKeyName; +my $GotKeyData; +my $cpos = 0; + +for (@Keys) { + if ($_ eq $interesting) { + $GotKeyName = $_; + if (defined $Data[$cpos]) { + $GotKeyData = $Data[$cpos]; + } + } + $cpos++; +} + +unless (defined $GotKeyName) { + print STDERR "Could not find any data on '$interesting'. Does the file contain any data?\n"; + exit 1; +} + +my $graph_name = $GotKeyName; +$graph_name =~ s/[^a-z]//gi; + +if (defined $ARGV[0] && $ARGV[0] eq 'config') { + print "graph_title WFrog $GotKeyName\n" + . "graph_args --base 1000 -l 0\n" + . "graph_vlabel Value\n" + . "graph_scale yes\n" + . "graph_category sensors\n" + # . "graph_printf %3.0lf\n" + . "$graph_name.label $GotKeyName\n" + . "$graph_name.draw AREASTACK\n"; + + exit 0; +} + +print "$graph_name.value $GotKeyData\n";