mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
2 more Rittal variants (#12953)
* 2 rittal variants * fix style * fix problem with missing entry["cmcIIIVarValueStr"] * fix typo
This commit is contained in:
@@ -17,3 +17,4 @@ discovery:
|
||||
sysDescr_regex:
|
||||
- '/^Rittal CMC III PU/'
|
||||
- '/^Rittal CMC III PU Compact/'
|
||||
- '/^Rittal PDU/'
|
||||
|
||||
@@ -8,7 +8,7 @@ $valid['sensor'] = [];
|
||||
/** @var OS $os */
|
||||
$pre_cache = $os->preCache();
|
||||
|
||||
if ($device['os'] == 'rittal-cmc-iii-pu') {
|
||||
if ($device['os'] == 'rittal-cmc-iii-pu' || $device['os'] == 'rittal-lcp') {
|
||||
include 'includes/discovery/sensors/rittal-cmc-iii-sensors.inc.php';
|
||||
} else {
|
||||
// Run custom sensors
|
||||
|
||||
@@ -31,18 +31,18 @@ foreach ($cmc_iii_var_table as $index => $entry) {
|
||||
$var_type = $entry['cmcIIIVarType'];
|
||||
$sensor_id = count($cmc_iii_sensors);
|
||||
|
||||
switch ($var_type) {
|
||||
case 'description':
|
||||
// Every new sensor starts with their description.
|
||||
if ($sensor_id == 0) {
|
||||
$sensor_id = 1;
|
||||
} else {
|
||||
$sensor_id++;
|
||||
}
|
||||
if ($cmc_iii_sensors[$sensor_id]['name'] != $sensor_name) {
|
||||
if ($sensor_id == 0) {
|
||||
$sensor_id = 1;
|
||||
} else {
|
||||
$sensor_id++;
|
||||
}
|
||||
|
||||
$cmc_iii_sensors[$sensor_id]['name'] = $sensor_name;
|
||||
$cmc_iii_sensors[$sensor_id]['desc'] = $entry['cmcIIIVarValueStr'];
|
||||
break;
|
||||
$cmc_iii_sensors[$sensor_id]['name'] = $sensor_name;
|
||||
$cmc_iii_sensors[$sensor_id]['desc'] = $entry['cmcIIIVarValueStr'] ?: $sensor_name;
|
||||
}
|
||||
|
||||
switch ($var_type) {
|
||||
case 'setHigh':
|
||||
$cmc_iii_sensors[$sensor_id]['high_limit'] = $entry['cmcIIIVarValueInt'];
|
||||
break;
|
||||
@@ -84,18 +84,26 @@ foreach ($cmc_iii_var_table as $index => $entry) {
|
||||
$cmc_iii_sensors[$sensor_id]['divisor'] = 1000;
|
||||
} elseif ($unit == 'A') {
|
||||
$type = 'current';
|
||||
} elseif ($unit == 'degree C' or $unit == 'degree F') {
|
||||
} elseif ($unit == 'Wh' || $unit == 'VAh') {
|
||||
$cmc_iii_sensors[$sensor_id]['divisor'] = 1000;
|
||||
$type = 'power_consumed';
|
||||
} elseif ($unit == 'kWh' || $unit == 'kVAh') {
|
||||
$type = 'power_consumed';
|
||||
} elseif ($unit == 'Hz') {
|
||||
$type = 'frequency';
|
||||
} elseif ($unit == 'degree C' || $unit == 'degree F') {
|
||||
$type = 'temperature';
|
||||
} elseif ($unit == 'l/min') {
|
||||
$type = 'waterflow';
|
||||
} elseif ($unit == 'V') {
|
||||
$type = 'voltage';
|
||||
} elseif ($unit == 'W') {
|
||||
} elseif ($unit == 'W' || $unit == 'VA' || $unit == 'var') {
|
||||
$type = 'power';
|
||||
} elseif ($unit == '%') {
|
||||
$type = 'percent';
|
||||
}
|
||||
|
||||
$cmc_iii_sensors[$sensor_id]['type'] = $type;
|
||||
break;
|
||||
$cmc_iii_sensors[$sensor_id]['type'] = $type;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +116,12 @@ if (! $device['serial']) {
|
||||
|
||||
foreach ($cmc_iii_sensors as $sensor_id => $sensor_data) {
|
||||
// Some sensors provide either no useful data at all or only partially useful data.
|
||||
if (! isset($sensor_data['oid']) || $sensor_data['name'] == 'System V24 Port' || $sensor_data['name'] == 'Memory USB-Stick' || $sensor_data['name'] == 'Memory SD-Card' || $sensor_data['name'] == 'Login') {
|
||||
if (! isset($sensor_data['oid'])
|
||||
|| $sensor_data['name'] == 'System V24 Port'
|
||||
|| $sensor_data['name'] == 'Memory USB-Stick'
|
||||
|| $sensor_data['name'] == 'Memory SD-Card'
|
||||
|| $sensor_data['name'] == 'Login'
|
||||
|| preg_match('/(Power Factor)|(Runtime)/', $sensor_data['name'])) {
|
||||
echo "\n" . $sensor_data['name'] . " skipped!\n";
|
||||
continue;
|
||||
}
|
||||
@@ -174,8 +187,7 @@ foreach ($cmc_iii_sensors as $sensor_id => $sensor_data) {
|
||||
|
||||
$sensor_data['value'] = ($sensor_data['value'] * $sensor_data['multiplier']);
|
||||
}
|
||||
|
||||
discover_sensor($valid['sensor'], $sensor_data['type'], $device, $sensor_data['oid'], $sensor_id, $sensor_data['name'], $sensor_data['desc'], $sensor_data['divisor'], $sensor_data['multiplier'], $sensor_data['low_limit'], $sensor_data['low_warn_limit'], $sensor_data['warn_limit'], $sensor_data['high_limit'], $sensor_data['value']);
|
||||
discover_sensor($valid['sensor'], $sensor_data['type'], $device, $sensor_data['oid'], $sensor_id, $sensor_data['name'], $sensor_data['desc'], $sensor_data['divisor'] ?? null, $sensor_data['multiplier'] ?? null, $sensor_data['low_limit'] ?? null, $sensor_data['low_warn_limit'] ?? null, $sensor_data['warn_limit'] ?? null, $sensor_data['high_limit'] ?? null, $sensor_data['value']);
|
||||
|
||||
if (isset($sensor_data['logic'])) {
|
||||
create_sensor_to_state_index($device, $sensor_data['name'], $sensor_id);
|
||||
|
||||
2249
tests/data/rittal-cmc-iii-pu_pdu-controller.json
Normal file
2249
tests/data/rittal-cmc-iii-pu_pdu-controller.json
Normal file
File diff suppressed because it is too large
Load Diff
2249
tests/data/rittal-lcp_cmciii-pu-lcp.json
Normal file
2249
tests/data/rittal-lcp_cmciii-pu-lcp.json
Normal file
File diff suppressed because it is too large
Load Diff
6585
tests/snmpsim/rittal-cmc-iii-pu_pdu-controller.snmprec
Normal file
6585
tests/snmpsim/rittal-cmc-iii-pu_pdu-controller.snmprec
Normal file
File diff suppressed because it is too large
Load Diff
7027
tests/snmpsim/rittal-lcp_cmciii-pu-lcp.snmprec
Normal file
7027
tests/snmpsim/rittal-lcp_cmciii-pu-lcp.snmprec
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user