From b8398d32b0582e50fa98263f45ceb8756ca0e629 Mon Sep 17 00:00:00 2001 From: Lorenzo Zafra Date: Fri, 4 Aug 2017 00:47:49 -0600 Subject: [PATCH] newdevice: Added additional sensors for Microsemi PowerDsine PoE Switches (#7114) * Added power, voltage and temperature sensors for microsemi powerdsine poe switch * Use MIB, switch to yaml discovery * Revert "Use MIB, switch to yaml discovery" --- .../sensors/power/microsemipdsine.inc.php | 40 +++++++++++++++++ .../temperature/microsemipdsine.inc.php | 45 +++++++++++++++++++ .../sensors/voltage/microsemipdsine.inc.php | 39 ++++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 includes/discovery/sensors/power/microsemipdsine.inc.php create mode 100644 includes/discovery/sensors/temperature/microsemipdsine.inc.php create mode 100644 includes/discovery/sensors/voltage/microsemipdsine.inc.php diff --git a/includes/discovery/sensors/power/microsemipdsine.inc.php b/includes/discovery/sensors/power/microsemipdsine.inc.php new file mode 100644 index 0000000000..8746f8f1c8 --- /dev/null +++ b/includes/discovery/sensors/power/microsemipdsine.inc.php @@ -0,0 +1,40 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Lorenzo Zafra + * @author Lorenzo Zafra + */ + +// Power consumption per port +$oids = snmpwalk_cache_oid_num($device, '1.3.6.1.4.1.7428.1.2.1.1.1.3.1', array()); + +foreach ($oids as $oid => $data) { + $current_id = substr($oid, strrpos($oid, '.') + 1); + $current_oid = ".$oid"; + + $descr = 'Power Consumption Port ' . $current_id; + $divisor = 1; + $type = 'microsemipdsine'; + $current = current($data) / $divisor; + $index = '1.1.3.1.' . $current_id; + + discover_sensor($valid['sensor'], 'power', $device, $current_oid, $index, $type, $descr, $divisor, '1', null, null, null, null, $current); +} diff --git a/includes/discovery/sensors/temperature/microsemipdsine.inc.php b/includes/discovery/sensors/temperature/microsemipdsine.inc.php new file mode 100644 index 0000000000..2f0cffa579 --- /dev/null +++ b/includes/discovery/sensors/temperature/microsemipdsine.inc.php @@ -0,0 +1,45 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Lorenzo Zafra + * @author Lorenzo Zafra + */ + +// temperature + +$temperature_unit = trim(snmp_get($device, '.1.3.6.1.4.1.7428.1.2.2.1.1.12.1', '-Oqv'), '" '); +$temperature = trim(snmp_get($device, '.1.3.6.1.4.1.7428.1.2.2.1.1.11.1', '-Oqv'), '" '); + +if (!empty($temperature_unit) && !empty($temperature)) { + // If fahrenheit convert to celcius + if ($temperature_unit == "2") { + $temperature = ($temperature - 32) / 1.8; + } + + $divisor = 1; + $index = '11.1'; + $descr = 'Unit Temperature'; + $type = 'microsemipdsine'; + $oid = '.1.3.6.1.4.1.7428.1.2.2.1.1.11.1'; + $current_value = $temperature / $divisor; + + discover_sensor($valid['sensor'], 'temperature', $device, $oid, $index, $type, $descr, $divisor, '1', null, null, null, null, $current_value); +} diff --git a/includes/discovery/sensors/voltage/microsemipdsine.inc.php b/includes/discovery/sensors/voltage/microsemipdsine.inc.php new file mode 100644 index 0000000000..fae00ba409 --- /dev/null +++ b/includes/discovery/sensors/voltage/microsemipdsine.inc.php @@ -0,0 +1,39 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Lorenzo Zafra + * @author Lorenzo Zafra + */ + +// voltage + +$mainVoltage = trim(snmp_get($device, '.1.3.6.1.4.1.7428.1.2.2.1.1.2.1', '-Oqv'), '" '); + +if (!empty($mainVoltage)) { + $divisor = 1; + $index = '2.1'; + $descr = 'Power Supply Voltage'; + $type = 'microsemipdsine'; + $oid = '.1.3.6.1.4.1.7428.1.2.2.1.1.2.1'; + $current_value = $mainVoltage / $divisor; + + discover_sensor($valid['sensor'], 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', null, null, null, null, $current_value); +}