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:
Denny Friebe 2021-02-11 00:34:49 +01:00 committed by GitHub
parent 38de49ca30
commit db5d9b768f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 76 additions and 48 deletions

View File

@ -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);

View File

@ -1347,7 +1347,7 @@
"sensor_multiplier": 1,
"sensor_current": 1.4,
"sensor_limit": 1.6,
"sensor_limit_warn": 0,
"sensor_limit_warn": null,
"sensor_limit_low": 0,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
@ -1371,7 +1371,7 @@
"sensor_multiplier": 1,
"sensor_current": 1.5,
"sensor_limit": 0.6,
"sensor_limit_warn": 0,
"sensor_limit_warn": null,
"sensor_limit_low": 0,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
@ -1391,11 +1391,11 @@
"sensor_type": "System CAN1 Current",
"sensor_descr": "CAN1 Current",
"group": null,
"sensor_divisor": 1,
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 0,
"sensor_limit": 900,
"sensor_limit_warn": 700,
"sensor_limit": 0.9,
"sensor_limit_warn": 0.7,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
@ -1415,11 +1415,11 @@
"sensor_type": "System CAN2 Current",
"sensor_descr": "CAN2 Current",
"group": null,
"sensor_divisor": 1,
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 0,
"sensor_limit": 900,
"sensor_limit_warn": 700,
"sensor_limit": 0.9,
"sensor_limit_warn": 0.7,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
@ -1613,7 +1613,7 @@
"sensor_limit": 80,
"sensor_limit_warn": 70,
"sensor_limit_low": -30,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": -25,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,
@ -1637,7 +1637,7 @@
"sensor_limit": 45,
"sensor_limit_warn": 40,
"sensor_limit_low": 0,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": 4,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,
@ -1661,7 +1661,7 @@
"sensor_limit": 40,
"sensor_limit_warn": 35,
"sensor_limit_low": 0,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": 5,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,
@ -1685,7 +1685,7 @@
"sensor_limit": 28,
"sensor_limit_warn": 26,
"sensor_limit_low": 19,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": 21,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,
@ -1709,7 +1709,7 @@
"sensor_limit": 3.63,
"sensor_limit_warn": 3.56,
"sensor_limit_low": 2.97,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": 3.04,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,
@ -1733,7 +1733,7 @@
"sensor_limit": 5.5,
"sensor_limit_warn": 5.4,
"sensor_limit_low": 4.5,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": 4.6,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,

View File

@ -1129,11 +1129,11 @@
"sensor_type": "System CAN1 Current",
"sensor_descr": "CAN1 Current",
"group": null,
"sensor_divisor": 1,
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 0,
"sensor_limit": 900,
"sensor_limit_warn": 700,
"sensor_limit": 0.9,
"sensor_limit_warn": 0.7,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
@ -1153,11 +1153,11 @@
"sensor_type": "System CAN2 Current",
"sensor_descr": "CAN2 Current",
"group": null,
"sensor_divisor": 1,
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 0,
"sensor_limit": 900,
"sensor_limit_warn": 700,
"sensor_limit": 0.9,
"sensor_limit_warn": 0.7,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
@ -1279,7 +1279,7 @@
"sensor_limit": 80,
"sensor_limit_warn": 70,
"sensor_limit_low": -30,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": -25,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,
@ -1303,7 +1303,7 @@
"sensor_limit": 45,
"sensor_limit_warn": 40,
"sensor_limit_low": 0,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": 4,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,
@ -1327,7 +1327,7 @@
"sensor_limit": 28,
"sensor_limit_warn": 26,
"sensor_limit_low": 19,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": 21,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,
@ -1351,7 +1351,7 @@
"sensor_limit": 3.63,
"sensor_limit_warn": 3.56,
"sensor_limit_low": 2.97,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": 3.04,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,
@ -1375,7 +1375,7 @@
"sensor_limit": 5.5,
"sensor_limit_warn": 5.4,
"sensor_limit_low": 4.5,
"sensor_limit_low_warn": null,
"sensor_limit_low_warn": 4.6,
"sensor_alert": 1,
"sensor_custom": "No",
"entPhysicalIndex": null,