Repository
Munin (contrib)
Last change
2018-09-16
Graph Categories
Family
auto
Capabilities
Keywords
Language
Perl
Authors

humidity-sensor

Sadly there is no documentation for this plugin.

#!/usr/bin/perl -w
#
# Copyright (C) Viktoras Pecia 2010(Based on 2006 Lars Strand "temperatures" code)
#
# Plugin to fetch humidity from weather.noaa.gov
#
# Parameters supported:
#
#       config
#       autoconf
#
# Magic markers:
#%# family=auto
#%# capabilities=autoconf

use strict;
my @wcode = undef;
if (defined($ENV{wcode})) {
    @wcode = split(' ', $ENV{wcode});
} else {
    @wcode = ("EYSA","EYKA","EYPA","EYVI");
}
my $proxy = $ENV{proxy}   || undef;   # Example: "http://proxy.foo.bar:8080/"
my $ret = undef;
if (! eval "require LWP::UserAgent;")
{
    $ret = "LWP::UserAgent not found";
}
if (defined $ARGV[0] and $ARGV[0] eq "autoconf") {
    if (defined $ret) {
	print "no ($ret)\n";
    } else {
	print "yes\n";
    }
    exit 0;
}
my $datasource = "http://weather.noaa.gov/pub/data/observations/metar/decoded/";

my $ua = LWP::UserAgent->new(timeout => 30);
$ua->agent('Munin');
# Use proxy, if defined.
if (defined($proxy)) {
    $ua->proxy(['http'], $proxy);
}
if (defined $ARGV[0] and $ARGV[0] eq "config") {
    print "graph_title Humidity\n";
    print "graph_args --base 1000 -l 0\n";
    print "graph_category sensors\n";
    print "graph_info This graph shows humidity fetched from weather.nooa.gov.\n";
    print "graph_vlabel humidity in %\n";
    for my $station (@wcode) {
	my $url = "$datasource$station.TXT";
	my $response = $ua->request(HTTP::Request->new('GET',$url));
	# New York City, Central Park, NY, United States (KNYC) 40-47-00N 073-58-00W 48M
        if ($response->content =~ /^((.*?),.*\)).*\n/) {
	    print "$station.label $2\n";
	    print "$station.info $1\n";
	} else {
	    print "$station.label $station\n";
	}
    }
}
for my $station (@wcode) {
    my $url = "$datasource$station.TXT";
    my $response = $ua->request(HTTP::Request->new('GET',$url));
    if ($response->content =~ /Relative Humidity:\s*(\d+)\%.*/) {
	    print "$station.value $1\n";
        } else {
	    print "$station.value U\n";
        }
    }