From 46e11b044ca72bad98f5c8e80909c028c20db896 Mon Sep 17 00:00:00 2001 From: laf Date: Sat, 18 Apr 2015 19:04:06 +0100 Subject: [PATCH] Updates to make the apc ups more dynamic --- includes/discovery/current/apc.inc.php | 45 +++++++++++++++----------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/includes/discovery/current/apc.inc.php b/includes/discovery/current/apc.inc.php index d7d46a9b0d..ea313f3312 100644 --- a/includes/discovery/current/apc.inc.php +++ b/includes/discovery/current/apc.inc.php @@ -174,27 +174,34 @@ if ($device['os'] == "apc") unset($oids); # UPS - $oids = snmp_get($device, "upsHighPrecOutputCurrent", "-OsqnU", "PowerNet-MIB"); - if (empty($oids)) { - $oids = snmp_get($device, "upsAdvOutputCurrent", "-OsqnU", "PowerNet-MIB"); - $current_oid = "upsAdvOutputCurrent"; - } else { - $current_oid = "upsHighPrecOutputCurrent"; - } - if (!empty($oids)) { - $type = "apc"; - if ($debug) { - print_r($oids); + + $oid_array = array( + array('HighPrecOid' => 'upsHighPrecOutputCurrent', 'AdvOid' => 'upsAdvOutputCurrent', 'type' => 'apc', 'index' => 0, 'descr' => 'Current Drawn', 'divisor' => 10, 'mib' => 'PowerNet-MIB'), + array('HighPrecOid' => 'upsHighPrecOutputLoad', 'AdvOid' => 'upsAdvOutputLoad', 'type' => 'apc', 'index' => 0, 'descr' => 'Current Load', 'divisor' => 1, 'mib' => 'PowerNet-MIB'), + ); + foreach ($oid_array as $item) { + $low_limit = NULL; + $low_limit_warn = NULL; + $warn_limit = NULL; + $high_limit = NULL; + $oids = snmp_get($device, $item['HighPrecOid'], "-OsqnU", $item['mib']); + if (empty($oids)) { + $oids = snmp_get($device, $item['AdvOid'], "-OsqnU", $item['mib']); + $current_oid = $item['AdvOid']; + } else { + $current_oid = $item['HighPrecOid']; } - $oids = trim($oids); - if ($oids) { - echo "APC PowerNet-MIB UPS"; + if (!empty($oids)) { + if ($debug) { + print_r($oids); + } + $oids = trim($oids); + if ($oids) { + echo $item['type'] . ' ' . $item['mib'] . ' UPS'; + } + $current = $oids / $item['divisor']; + discover_sensor($valid['sensor'], 'current', $device, $current_oid, $item['index'], $item['type'], $item['descr'], $item['divisor'], 1, $low_limit, $low_limit_warn, $warn_limit, $high_limit, $current); } - $index = 1; - $descr = "Current Drawn"; - $divisor = 10; - $current = $current_oid / $divisor; - discover_sensor($valid['sensor'], 'current', $device, $current_oid, $index, $type, $descr, $divisor, '1', NULL, NULL, NULL, NULL, $current); } }