added a fix to round limit values to avoid limits being updated on every discovery since a change of 1rpm in current rpm would cause a new limit since limits are based on the current value

This commit is contained in:
Rasmus Aberg
2015-07-21 13:39:53 +02:00
parent 2ec76a01b1
commit 75e9a0fb27

View File

@@ -1,6 +1,17 @@
<?php
if ($device['os'] == 'xos') {
// Function used to round limit values to hundreds to avoid h/w/l limits being changed on every discovery as a change of 1rpm for fan speed would cause the limit values to change since they're dynamically calculated
function roundme($val = 0) {
$diff = $val % 100;
if ($diff >= 50) {
$ret = $val + (100-$diff);
} else {
$ret = $val - $diff;
}
return $ret;
}
echo(" EXTREME-BASE-MIB ");
// Fan Speed
@@ -13,13 +24,13 @@ if ($device['os'] == 'xos') {
$index = $matches[1];
// substract 100 from index to start from 1 instead of 101
$modindex = ($index - 100);
$oid = "1.3.6.1.4.1.1916.1.1.1.9.1.4.$index";
$value = snmp_get($device, $oid, '-Oqv', 'EXTREME-BASE-MIB');
$descr = "Fan Speed $modindex";
$high_limit = ($value * 1.5);
$high_warn_limit = ($value * 1.25);
$low_warn_limit = ($value * 0.75);
$low_limit = ($value * 0.5);
$oid = "1.3.6.1.4.1.1916.1.1.1.9.1.4.$index";
$value = snmp_get($device, $oid, '-Oqv', 'EXTREME-BASE-MIB');
$descr = "Fan Speed $modindex";
$high_limit = roundme($value * 1.5);
$high_warn_limit = roundme($value * 1.25);
$low_warn_limit = roundme($value * 0.75);
$low_limit = roundme($value * 0.5);
if (is_numeric($value)) {
discover_sensor($valid['sensor'], 'fanspeed', $device, $oid, $index, 'extreme-fanspeed', $descr, '1', '1', $low_limit, $low_warn_limit, $high_warn_limit, $high_limit, $value);
}