munin-contrib/plugins/weather/novra_s300

85 lines
1.8 KiB
Perl
Executable File

#!/usr/bin/perl -w
# -*- perl -*-
# novra_s300
# Munin plugin for Novra S300 Satellite Receiver
# Displays Signal and Carrier to Noise values
#
#%# family=auto
#%# capabilities=autoconf
#
###############################################################################
#
# This plugin monitors the signal strength and carrier to noise ratio on
# a Novra S300 satellite receiver
# @author Jason Brooks
# @version 2011.05.20.01
# @email icedown@gmail.com
#
# Usage:
# Copy this to your plugin folder (default: /usr/share/munin/plugins)
# Edit is file, replacing CMCS, IP, and PW with your values
# Make a symlink to your active plugins folder (default: /etc/munin/plugins)
# Finally run munin-node-config and restart munin-node
#
#
################################################################################
use strict;
use warnings;
my $CMCS = "/usr/bin/cmcs";
my $IP = "192.168.1.1";
my $PW = "Password";
my $xmlcheck = 0;
if(! eval "require XML::Simple;") {
$xmlcheck = "Missing XML::Simple";
}
my $command = "$CMCS -ip $IP -pw $PW -xmlstatus";
if (defined($ARGV[0]) and ($ARGV[0] eq 'config')) {
print "graph_title Novra S300\n";
print "graph_vlabel Signal\n";
print "graph_category sensors\n";
print "s300.signal Signal\n";
print "s300.ctn CtN\n";
exit(0);
}
if (defined($ARGV[0]) and ($ARGV[0] eq 'autoconf')) {
if($xmlcheck) {
print "no ($xmlcheck)\n";
exit(0);
}
if(-e $CMCS) {
my $status = `$command`;
if($status =~ m/Login unsuccessful/) {
print "No (Invalid receiver details)\n";
exit(0);
}
print "yes\n";
exit(0);
}
print "no (Cannot locate CMCS)\n";
exit(0);
}
require XML::Simple;
my $data = `$command`;
my $xml = new XML::Simple;
my $output = $xml->XMLin($data);
print "s300.signal " . $output->{SIGNAL_STRENGTH_AS_DBM} . "\n";
print "s300.ctn " . $output->{CARRIER_TO_NOISE} . "\n";