mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Fix: Rittal CMC III low warn limit and CAN bus current (#12513)
* Rittal CMC III: Add low warn limit * Rittal CMC III: Fix CAN current
This commit is contained in:
@@ -49,6 +49,9 @@ foreach ($cmc_iii_var_table as $index => $entry) {
|
||||
case 'setWarn':
|
||||
$cmc_iii_sensors[$sensor_id]['warn_limit'] = $entry['cmcIIIVarValueInt'];
|
||||
break;
|
||||
case 'setWarnLow':
|
||||
$cmc_iii_sensors[$sensor_id]['low_warn_limit'] = $entry['cmcIIIVarValueInt'];
|
||||
break;
|
||||
case 'setLow':
|
||||
$cmc_iii_sensors[$sensor_id]['low_limit'] = $entry['cmcIIIVarValueInt'];
|
||||
break;
|
||||
@@ -66,27 +69,32 @@ foreach ($cmc_iii_var_table as $index => $entry) {
|
||||
$cmc_iii_sensors[$sensor_id]['value'] = $entry['cmcIIIVarValueStr'];
|
||||
}
|
||||
|
||||
$unit = $entry['cmcIIIVarUnit'];
|
||||
$type = 'state';
|
||||
if (Str::endsWith($unit, 'A')) {
|
||||
$type = 'current';
|
||||
} elseif (Str::endsWith($unit, 'degree C') or Str::endsWith($unit, 'degree F')) {
|
||||
$type = 'temperature';
|
||||
} elseif (Str::endsWith($unit, 'l/min')) {
|
||||
$type = 'waterflow';
|
||||
} elseif (Str::endsWith($unit, 'V')) {
|
||||
$type = 'voltage';
|
||||
} elseif (Str::endsWith($unit, 'W')) {
|
||||
$type = 'power';
|
||||
}
|
||||
|
||||
$cmc_iii_sensors[$sensor_id]['type'] = $type;
|
||||
|
||||
if ($entry['cmcIIIVarScale'][0] == '-') {
|
||||
$cmc_iii_sensors[$sensor_id]['divisor'] = substr($entry['cmcIIIVarScale'], 1);
|
||||
} elseif ($entry['cmcIIIVarScale'][0] == '+') {
|
||||
$cmc_iii_sensors[$sensor_id]['multiplier'] = substr($entry['cmcIIIVarScale'], 1);
|
||||
}
|
||||
|
||||
$unit = $entry['cmcIIIVarUnit'];
|
||||
$type = 'state';
|
||||
if ($unit == 'mA') {
|
||||
//In some cases we get a mA value. However, the cmcIIIVarScale is simply 1.
|
||||
//Therefore, we must hardcode the divisor here to calculate the value into A.
|
||||
$type = 'current';
|
||||
$cmc_iii_sensors[$sensor_id]['divisor'] = 1000;
|
||||
} elseif ($unit == 'A') {
|
||||
$type = 'current';
|
||||
} elseif ($unit == 'degree C' or $unit == 'degree F') {
|
||||
$type = 'temperature';
|
||||
} elseif ($unit == 'l/min') {
|
||||
$type = 'waterflow';
|
||||
} elseif ($unit == 'V') {
|
||||
$type = 'voltage';
|
||||
} elseif ($unit == 'W') {
|
||||
$type = 'power';
|
||||
}
|
||||
|
||||
$cmc_iii_sensors[$sensor_id]['type'] = $type;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -136,18 +144,38 @@ foreach ($cmc_iii_sensors as $sensor_id => $sensor_data) {
|
||||
}
|
||||
|
||||
if (isset($sensor_data['divisor'])) {
|
||||
$sensor_data['low_limit'] = ($sensor_data['low_limit'] / $sensor_data['divisor']);
|
||||
$sensor_data['warn_limit'] = ($sensor_data['warn_limit'] / $sensor_data['divisor']);
|
||||
$sensor_data['high_limit'] = ($sensor_data['high_limit'] / $sensor_data['divisor']);
|
||||
if (isset($sensor_data['low_limit'])) {
|
||||
$sensor_data['low_limit'] = ($sensor_data['low_limit'] / $sensor_data['divisor']);
|
||||
}
|
||||
if (isset($sensor_data['low_warn_limit'])) {
|
||||
$sensor_data['low_warn_limit'] = ($sensor_data['low_warn_limit'] / $sensor_data['divisor']);
|
||||
}
|
||||
if (isset($sensor_data['warn_limit'])) {
|
||||
$sensor_data['warn_limit'] = ($sensor_data['warn_limit'] / $sensor_data['divisor']);
|
||||
}
|
||||
if (isset($sensor_data['high_limit'])) {
|
||||
$sensor_data['high_limit'] = ($sensor_data['high_limit'] / $sensor_data['divisor']);
|
||||
}
|
||||
|
||||
$sensor_data['value'] = ($sensor_data['value'] / $sensor_data['divisor']);
|
||||
} elseif (isset($sensor_data['multiplier'])) {
|
||||
$sensor_data['low_limit'] = ($sensor_data['low_limit'] * $sensor_data['multiplier']);
|
||||
$sensor_data['warn_limit'] = ($sensor_data['warn_limit'] * $sensor_data['multiplier']);
|
||||
$sensor_data['high_limit'] = ($sensor_data['high_limit'] * $sensor_data['multiplier']);
|
||||
if (isset($sensor_data['low_limit'])) {
|
||||
$sensor_data['low_limit'] = ($sensor_data['low_limit'] * $sensor_data['multiplier']);
|
||||
}
|
||||
if (isset($sensor_data['low_warn_limit'])) {
|
||||
$sensor_data['low_warn_limit'] = ($sensor_data['low_warn_limit'] * $sensor_data['multiplier']);
|
||||
}
|
||||
if (isset($sensor_data['warn_limit'])) {
|
||||
$sensor_data['warn_limit'] = ($sensor_data['warn_limit'] * $sensor_data['multiplier']);
|
||||
}
|
||||
if (isset($sensor_data['high_limit'])) {
|
||||
$sensor_data['high_limit'] = ($sensor_data['high_limit'] * $sensor_data['multiplier']);
|
||||
}
|
||||
|
||||
$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'], null, $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'], $sensor_data['multiplier'], $sensor_data['low_limit'], $sensor_data['low_warn_limit'], $sensor_data['warn_limit'], $sensor_data['high_limit'], $sensor_data['value']);
|
||||
|
||||
if (isset($sensor_data['logic'])) {
|
||||
create_sensor_to_state_index($device, $sensor_data['name'], $sensor_id);
|
||||
|
Reference in New Issue
Block a user