#!/bin/sh

: <<=cut

=head1 NAME

mbmon_ - monitor motherboard temparature using mbmon

=head1 APPLICABLE SYSTEMS

The software "mbmon" is required:
 http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html

=head1 CONFIGURATION

The following details can be configured (e.g. below /etc/munin/plugin-conf.d/):
  [mbmon_*]
  env.mbmon /usr/local/bin/mbmon
  env.mbmonargs -I -pit87

Parameters
  mbmonpath  - path to the mbmon program (default: automatic detection)
  mbmonargs  - additional arguments given to mbmon

=head1 AUTHOR

Copyright (c) 2005 Arne Schwabe

All rights reserved.

=head1 LICENSE

Redistribution and use in source and binary forms are freely
permitted provided that the above copyright notice and this
paragraph and the following disclaimer are duplicated in all
such forms.

This software is provided "AS IS" and without any express or
implied warranties, including, without limitation, the implied
warranties of merchantability and fitness for a particular
purpose.

=cut


#%# family=contrib
#%# capabilities=autoconf suggest

what=$(basename "$0" | sed 's/^mbmon_//g')
mbmon=${mbmon:-$(command -v mbmon)}
mbmonargs=${mbmonargs:-}


run_mbmon() {
	# shellcheck disable=SC2086
	"$mbmon" -c 1 -r $mbmonargs
}


if [ "$1" = "suggest" ]; then
	echo 'TEMP'
	echo 'FAN'
	echo 'Voltage'
	exit 0
fi

if [ "$1" = "autoconf" ]; then
	if [ -z "$mbmon" ] || [ ! -x "$mbmon" ]; then
		echo "no (executable 'mbmon' not found)"
	elif "$mbmon" -c 1 > /dev/null 2>/dev/null; then
		echo "yes"
	else
		echo "no (mbmon could not read sensor values)"
	fi
	exit 0
fi



if [ "$1" = "config" ]; then
case $what in
	TEMP)
		echo 'graph_title Motherboard Temperature'
		echo 'graph_order TEMP0 TEMP2 TEMP1'
		echo 'graph_category sensors'
		echo 'graph_vlabel C'
		echo 'graph_scale no'
		echo 'TEMP0.label Temperature 1'
		echo 'TEMP1.label Temperature 2'
		echo 'TEMP2.label Temperature 3'
		exit 0
		;;
	Voltage)
		echo 'graph_title Motherboard Voltages'
		echo 'graph_category sensors'
		echo 'graph_order VC0 VC1 V33 V50P V12P V12N V50N'
		echo 'graph_vlabel V'
		echo 'graph_scale no'
		echo 'VC0.label VC0'
		echo 'VC1.label VC1'
		echo 'V33.label +3,3V'
		echo 'V50P.label +5V'
		echo 'V12P.label +12V'
		echo 'V12N.label -12V'
		echo 'V50N.label -5V'
		exit 0
		;;
	FAN)
		echo 'graph_title Motherboard Fans'
		echo 'graph_category sensors'
		echo 'graph_order FAN0 FAN1 FAN2'
		echo 'graph_vlabel rpm'
		echo 'FAN0.label Fan 1'
		echo 'FAN1.label Fan 2'
		echo 'FAN2.label Fan 3'
		exit 0
		;;
esac
fi

case $what in
	TEMP)
		run_mbmon | sed -e "s/ *: */.value /" | grep TEMP
		exit 0
		;;
	Voltage)
		run_mbmon | sed -e "s/ *: */.value /" | grep V
		exit 0
		;;
	FAN)
		run_mbmon | sed -e "s/ *: */.value /" | grep FAN
		exit 0
		;;
esac
