X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/upsgraph/blobdiff_plain/45bf98526bea58d37fbb30b4152dd1041ccb93be..HEAD:/upsgraph.pl diff --git a/upsgraph.pl b/upsgraph.pl index e55622b..f9d0fe3 100755 --- a/upsgraph.pl +++ b/upsgraph.pl @@ -15,6 +15,8 @@ use IO::Select; use RRDs; use File::Copy; use Data::Dumper; +use LWP::UserAgent; +use JSON; $UPSGRAPH::outdir = ""; $UPSGRAPH::daysCovered = 370; @@ -186,6 +188,39 @@ sub fetch_tcp_multi(@) { %values; } +sub fetch_iotcore(@) { + my $host = shift; + my $adr = shift; + my $mask = shift; + + my $ua = LWP::UserAgent->new; + $ua->timeout(1); + + my $iotcore_req = { + cid => 1, + code => 10, + adr => $adr, + }; + + my $req = HTTP::Request->new(POST => "http://${host}"); + $req->content_type('application/json'); + $req->content(encode_json($iotcore_req)); + + my $resp = $ua->request($req); + return undef if (!$resp->is_success); + + my $pdin = decode_json($resp->decoded_content); + return undef if (!defined($pdin)); + + my $value = hex($pdin->{'data'}->{'value'}); + + if (defined($mask)) { + $value = $value & $mask; + } + + $value; +} + sub dayGraphFunc { my $dataSrc = shift; my $mode = shift; @@ -477,6 +512,8 @@ while(1) { @multi_values{keys %values} = values %values; $result = $multi_values{$vars->{$var}->{'multi_id'}}; } + } elsif ($vars->{$var}->{'proto'} eq 'iotcore') { + $result = fetch_iotcore($host->{'address'}, $vars->{$var}->{'adr'}, $vars->{$var}->{'mask'}); } next unless (defined $result); @@ -515,7 +552,7 @@ while(1) { }; } - my @graphdef = ('-P', "-t", $hostname." - ".$vars->{$var}->{'name'}); + my @graphdef = ('-P', "-A", "-t", $hostname." - ".$vars->{$var}->{'name'}); push @graphdef, "--lazy" if !$first; push @graphdef, "DEF:${var}-avg=${rrdfile}.${var}:${var}:AVERAGE";