#!/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";


