mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Added Eltek WebPower support (#9174)
* New os Eltek WebPower - files + test files * OS eltek-webpower - minor fix to mib query. * OS eltek-webpower - sensor and state data improvements. * OS Eltek Webpower - Created battery symmetry test and battery bank delta voltage support. * OS Eltek Webpower - symmetry code fix. * OS Eltek Webpower - symmetry code fix. * OS Eltek Webpower - symmetry code fix. * new os eltek - rectifier state fix * Updated json test data * Update eltek-webpower.json * Update eltek-webpower.yaml * Update eltek-webpower.yaml
This commit is contained in:
committed by
Neil Lathwood
parent
ac7997d9ec
commit
cf2e79344d
256
includes/definitions/discovery/eltek-webpower.yaml
Normal file
256
includes/definitions/discovery/eltek-webpower.yaml
Normal file
@@ -0,0 +1,256 @@
|
||||
mib: SNMPv2-MIB:ELTEK-DISTRIBUTED-MIB
|
||||
modules:
|
||||
sensors:
|
||||
runtime:
|
||||
data:
|
||||
-
|
||||
oid: batteryCapacityData
|
||||
value: batteryTimeToDisconnect
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.20.1.
|
||||
index: 'batteryTimeToDisconnect.{{ $index }}'
|
||||
descr: Battery time to disconnect
|
||||
state:
|
||||
data:
|
||||
-
|
||||
oid: dcSystem
|
||||
value: systemOperationalStatus
|
||||
num_oid: .1.3.6.1.4.1.12148.9.2.2.
|
||||
descr: System operational status
|
||||
state_name: systemOperationalStatus.{{ $index }}
|
||||
states:
|
||||
- { value: 0, generic: 0, graph: 0, descr: Float - voltage regulated }
|
||||
- { value: 1, generic: 0, graph: 0, descr: Float - temp. comp. regulated }
|
||||
- { value: 2, generic: 1, graph: 0, descr: Boost }
|
||||
- { value: 3, generic: 2, graph: 0, descr: Battery test }
|
||||
-
|
||||
oid: dcPlant
|
||||
value: systemNominalVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.2.1.4.
|
||||
descr: The nominal voltage rating
|
||||
state_name: systemNominalVoltage.{{ $index }}
|
||||
states:
|
||||
- { value: 0, generic: 3, graph: 0, descr: 48V }
|
||||
- { value: 1, generic: 3, graph: 0, descr: 24V }
|
||||
- { value: 2, generic: 3, graph: 0, descr: N/A }
|
||||
- { value: 3, generic: 3, graph: 0, descr: N/A }
|
||||
- { value: 4, generic: 3, graph: 0, descr: 60V }
|
||||
-
|
||||
oid: battery
|
||||
value: batteryBreakerStatus
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.5.
|
||||
descr: Battery breaker status
|
||||
state_name: batteryBreakerStatus.{{ $index }}
|
||||
states:
|
||||
- { value: 0, generic: 0, graph: 0, descr: normal }
|
||||
- { value: 1, generic: 2, graph: 0, descr: Alarm }
|
||||
-
|
||||
oid: rectifier
|
||||
value: rectifierRectifiersActive
|
||||
num_oid: .1.3.6.1.4.1.12148.9.5.2.
|
||||
state_name: rectifierRectifiersActive
|
||||
descr: Rectifiers active
|
||||
states:
|
||||
- { value: 1, generic: 3, graph: 0, descr: '1' }
|
||||
- { value: 2, generic: 3, graph: 0, descr: '2' }
|
||||
- { value: 3, generic: 3, graph: 0, descr: '3' }
|
||||
- { value: 4, generic: 3, graph: 0, descr: '4' }
|
||||
- { value: 5, generic: 3, graph: 0, descr: '5' }
|
||||
- { value: 6, generic: 3, graph: 0, descr: '6' }
|
||||
- { value: 7, generic: 3, graph: 0, descr: '7' }
|
||||
- { value: 8, generic: 3, graph: 0, descr: '8' }
|
||||
- { value: 9, generic: 3, graph: 0, descr: '9' }
|
||||
- { value: 10, generic: 3, graph: 0, descr: '10' }
|
||||
- { value: 11, generic: 3, graph: 0, descr: '11' }
|
||||
- { value: 12, generic: 3, graph: 0, descr: '12' }
|
||||
- { value: 13, generic: 3, graph: 0, descr: '13' }
|
||||
- { value: 14, generic: 3, graph: 0, descr: '14' }
|
||||
- { value: 15, generic: 3, graph: 0, descr: '15' }
|
||||
- { value: 16, generic: 3, graph: 0, descr: '16' }
|
||||
- { value: 17, generic: 3, graph: 0, descr: '17' }
|
||||
- { value: 18, generic: 3, graph: 0, descr: '18' }
|
||||
- { value: 19, generic: 3, graph: 0, descr: '19' }
|
||||
- { value: 20, generic: 3, graph: 0, descr: '20' }
|
||||
-
|
||||
oid: rectifier
|
||||
value: rectifierInstalledRectifiers
|
||||
num_oid: .1.3.6.1.4.1.12148.9.5.1.
|
||||
state_name: rectifierInstalledRectifiers
|
||||
descr: Rectifiers installed
|
||||
states:
|
||||
- { value: 1, generic: 3, graph: 0, descr: '1' }
|
||||
- { value: 2, generic: 3, graph: 0, descr: '2' }
|
||||
- { value: 3, generic: 3, graph: 0, descr: '3' }
|
||||
- { value: 4, generic: 3, graph: 0, descr: '4' }
|
||||
- { value: 5, generic: 3, graph: 0, descr: '5' }
|
||||
- { value: 6, generic: 3, graph: 0, descr: '6' }
|
||||
- { value: 7, generic: 3, graph: 0, descr: '7' }
|
||||
- { value: 8, generic: 3, graph: 0, descr: '8' }
|
||||
- { value: 9, generic: 3, graph: 0, descr: '9' }
|
||||
- { value: 10, generic: 3, graph: 0, descr: '10' }
|
||||
- { value: 11, generic: 3, graph: 0, descr: '11' }
|
||||
- { value: 12, generic: 3, graph: 0, descr: '12' }
|
||||
- { value: 13, generic: 3, graph: 0, descr: '13' }
|
||||
- { value: 14, generic: 3, graph: 0, descr: '14' }
|
||||
- { value: 15, generic: 3, graph: 0, descr: '15' }
|
||||
- { value: 16, generic: 3, graph: 0, descr: '16' }
|
||||
- { value: 17, generic: 3, graph: 0, descr: '17' }
|
||||
- { value: 18, generic: 3, graph: 0, descr: '18' }
|
||||
- { value: 19, generic: 3, graph: 0, descr: '19' }
|
||||
- { value: 20, generic: 3, graph: 0, descr: '20' }
|
||||
-
|
||||
oid: rectifierStatusEntry
|
||||
value: rectifierStatusStatus
|
||||
num_oid: .1.3.6.1.4.1.12148.9.5.5.2.1.2.
|
||||
descr: Rectifier {{ $index }} status
|
||||
state_name: rectifierStatusStatus.{{ $index }}
|
||||
skip_value_lt: 1
|
||||
states:
|
||||
- { value: 0, generic: 0, graph: 0, descr: not present }
|
||||
- { value: 1, generic: 0, graph: 0, descr: normal }
|
||||
- { value: 2, generic: 2, graph: 0, descr: alarm }
|
||||
- { value: 3, generic: 1, graph: 0, descr: not used }
|
||||
- { value: 4, generic: 3, graph: 0, descr: disabled }
|
||||
voltage:
|
||||
data:
|
||||
-
|
||||
oid: acDistribution
|
||||
value: acVoltage1
|
||||
num_oid: .1.3.6.1.4.1.12148.9.6.1.
|
||||
index: 'acVoltage1.{{ $index }}'
|
||||
descr: AC L1 input
|
||||
-
|
||||
oid: acDistribution
|
||||
value: acVoltage2
|
||||
num_oid: .1.3.6.1.4.1.12148.9.6.2.
|
||||
index: 'acVoltage2.{{ $index }}'
|
||||
descr: AC L2 input
|
||||
-
|
||||
oid: acDistribution
|
||||
value: acVoltage3
|
||||
num_oid: .1.3.6.1.4.1.12148.9.6.3.
|
||||
index: 'acVoltage3.{{ $index }}'
|
||||
descr: AC L3 input
|
||||
-
|
||||
oid: rectifierStatusEntry
|
||||
value: rectifierStatusOutputVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.5.5.2.1.4.
|
||||
index: 'rectifierStatusOutputVoltage.{{ $index }}'
|
||||
descr: Rectifier{{ $index }} out
|
||||
divisor: 100
|
||||
skip_value_lt: 1
|
||||
-
|
||||
oid: batteryVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.2.
|
||||
index: 'batteryVoltage.{{ $index }}'
|
||||
descr: Battery bank
|
||||
divisor: 100
|
||||
-
|
||||
oid: batteryBanksSymmetry1deltaVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.19.3.1.4.
|
||||
index: 'batteryBanksSymmetry1deltaVoltage.{{ $index }}'
|
||||
descr: ΔV Battery banks symmetry 1
|
||||
divisor: 100
|
||||
skip_value_lt: 1
|
||||
-
|
||||
oid: batteryBanksSymmetry2deltaVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.19.3.1.7.
|
||||
index: 'batteryBanksSymmetry2deltaVoltage.{{ $index }}'
|
||||
descr: ΔV Battery banks symmetry 2
|
||||
divisor: 100
|
||||
skip_value_lt: 1
|
||||
-
|
||||
oid: batteryBanksSymmetry3deltaVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.19.3.1.10.
|
||||
index: 'batteryBanksSymmetry3deltaVoltage.{{ $index }}'
|
||||
descr: ΔV Battery banks symmetry 3
|
||||
divisor: 100
|
||||
skip_value_lt: 1
|
||||
-
|
||||
oid: batteryBanksSymmetry4deltaVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.19.3.1.13.
|
||||
index: 'batteryBanksSymmetry4deltaVoltage.{{ $index }}'
|
||||
descr: ΔV Battery banks symmetry 4
|
||||
divisor: 100
|
||||
skip_value_lt: 1
|
||||
-
|
||||
oid: batteryBanksSymmetry5deltaVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.19.3.1.16.
|
||||
index: 'batteryBanksSymmetry5deltaVoltage.{{ $index }}'
|
||||
descr: ΔV Battery banks symmetry 5
|
||||
divisor: 100
|
||||
skip_value_lt: 1
|
||||
-
|
||||
oid: batteryBanksSymmetry6deltaVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.19.3.1.19.
|
||||
index: 'batteryBanksSymmetry6deltaVoltage.{{ $index }}'
|
||||
descr: ΔV Battery banks symmetry 6
|
||||
divisor: 100
|
||||
skip_value_lt: 1
|
||||
-
|
||||
oid: batteryBanksSymmetry7deltaVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.19.3.1.22.
|
||||
index: 'batteryBanksSymmetry7deltaVoltage.{{ $index }}'
|
||||
descr: ΔV Battery banks symmetry 7
|
||||
divisor: 100
|
||||
skip_value_lt: 1
|
||||
-
|
||||
oid: batteryBanksSymmetry8deltaVoltage
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.19.3.1.25.
|
||||
index: 'batteryBanksSymmetry8deltaVoltage.{{ $index }}'
|
||||
descr: ΔV Battery banks symmetry 8
|
||||
divisor: 100
|
||||
skip_value_lt: 1
|
||||
temperature:
|
||||
data:
|
||||
-
|
||||
oid: rectifierStatusEntry
|
||||
value: rectifierStatusTemp
|
||||
num_oid: .1.3.6.1.4.1.12148.9.5.5.2.1.5.
|
||||
index: 'rectifierStatusTemp.{{ $index }}'
|
||||
descr: Rectifier {{ $index }}
|
||||
divisor: 1
|
||||
skip_value_lt: 1
|
||||
load:
|
||||
data:
|
||||
-
|
||||
oid: rectifier
|
||||
value: rectifierUtilization
|
||||
num_oid: .1.3.6.1.4.1.12148.9.5.4.
|
||||
index: 'rectifierUtilization.{{ $index }}'
|
||||
descr: Rectifier current utilization
|
||||
current:
|
||||
data:
|
||||
-
|
||||
oid: loadDistribution
|
||||
value: loadDistributionCurrent
|
||||
num_oid: .1.3.6.1.4.1.12148.9.4.1.
|
||||
index: 'loadDistributionCurrent.{{ $index }}'
|
||||
descr: Distribution total out
|
||||
divisor: 1
|
||||
-
|
||||
oid: rectifierStatusEntry
|
||||
value: rectifierStatusOutputCurrent
|
||||
num_oid: .1.3.6.1.4.1.12148.9.5.5.2.1.3.
|
||||
index: 'rectifierStatusOutputCurrent.{{ $index }}'
|
||||
descr: Rectifier {{ $index }} out
|
||||
divisor: 10
|
||||
skip_value_lt: 1
|
||||
-
|
||||
oid: battery
|
||||
value: batteryCurrent
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.3.
|
||||
index: 'batteryCurrent.{{ $index }}'
|
||||
descr: Battery (charge/drain)
|
||||
divisor: 1
|
||||
-
|
||||
oid: batteryCapacityData
|
||||
value: batteryCapacityLeft
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.20.2.
|
||||
index: 'batteryCapacityLeft.{{ $index }}'
|
||||
descr: Battery remaining capacity (Ah)
|
||||
-
|
||||
oid: batteryCapacityData
|
||||
value: batteryCapacityUsed
|
||||
num_oid: .1.3.6.1.4.1.12148.9.3.20.3.
|
||||
index: 'batteryCapacityUsed.{{ $index }}'
|
||||
descr: Battery capacity used (Ah)
|
12
includes/definitions/eltek-webpower.yaml
Normal file
12
includes/definitions/eltek-webpower.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
os: eltek-webpower
|
||||
text: 'Eltek WebPower'
|
||||
type: power
|
||||
icon: eltek
|
||||
nobulk: true
|
||||
over:
|
||||
- { graph: device_current, text: Load }
|
||||
- { graph: device_voltage, text: Voltage }
|
||||
mib_dir:
|
||||
- eltek
|
||||
discovery:
|
||||
- sysObjectID: .1.3.6.1.4.1.12148.9
|
108
includes/discovery/sensors/state/eltek-webpower.inc.php
Normal file
108
includes/discovery/sensors/state/eltek-webpower.inc.php
Normal file
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
/**
|
||||
* eltek-webpower.inc.php
|
||||
*
|
||||
* -Description-
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package LibreNMS
|
||||
* @link http://librenms.org
|
||||
* @copyright 2018 Mikael Sipilainen
|
||||
* @author Mikael Sipilainen <mikael.sipilainen@gmail.com>
|
||||
*/
|
||||
|
||||
// Battery banks symmetry status discovery
|
||||
$symmetry_oid = array('.1.3.6.1.4.1.12148.9.3.19.3.1.3.0',
|
||||
'.1.3.6.1.4.1.12148.9.3.19.3.1.6.0',
|
||||
'.1.3.6.1.4.1.12148.9.3.19.3.1.9.0',
|
||||
'.1.3.6.1.4.1.12148.9.3.19.3.1.12.0',
|
||||
'.1.3.6.1.4.1.12148.9.3.19.3.1.15.0',
|
||||
'.1.3.6.1.4.1.12148.9.3.19.3.1.18.0',
|
||||
'.1.3.6.1.4.1.12148.9.3.19.3.1.21.0',
|
||||
'.1.3.6.1.4.1.12148.9.3.19.3.1.24.0'
|
||||
);
|
||||
$oid = snmp_get_multi($device, 'batteryBanksSymmetry1enable.0 batteryBanksSymmetry2enable.0 batteryBanksSymmetry3enable.0 batteryBanksSymmetry4enable.0 batteryBanksSymmetry5enable.0 batteryBanksSymmetry6enable.0 batteryBanksSymmetry7enable.0 batteryBanksSymmetry8enable.0 batteryBanksSymmetry1status.0 batteryBanksSymmetry2status.0 batteryBanksSymmetry3status.0 batteryBanksSymmetry4status.0 batteryBanksSymmetry5status.0 batteryBanksSymmetry6status.0 batteryBanksSymmetry7status.0 batteryBanksSymmetry8status.0', '-OQUs', 'ELTEK-DISTRIBUTED-MIB');
|
||||
$count = array(1, 2, 3, 4, 5, 6, 7, 8);
|
||||
foreach ($count as &$countValue) {
|
||||
if ($oid[0]['batteryBanksSymmetry'.$countValue.'enable'] == 'enable') {
|
||||
if ($oid[0]['batteryBanksSymmetry'.$countValue.'status'] == 'ok') {
|
||||
$state_numeric = 0;
|
||||
}
|
||||
if ($oid[0]['batteryBanksSymmetry'.$countValue.'status'] == 'minorAlarm') {
|
||||
$state_numeric = 1;
|
||||
}
|
||||
if ($oid[0]['batteryBanksSymmetry'.$countValue.'status'] == 'majorAlarm') {
|
||||
$state_numeric = 2;
|
||||
}
|
||||
if ($oid[0]['batteryBanksSymmetry'.$countValue.'status'] == 'disabled') {
|
||||
$state_numeric = 3;
|
||||
}
|
||||
if ($oid[0]['batteryBanksSymmetry'.$countValue.'status'] == 'error') {
|
||||
$state_numeric = 4;
|
||||
}
|
||||
|
||||
$state_name = 'batteryBanksSymmetry'.$countValue.'status.0';
|
||||
$state_index_id = create_state_index($state_name);
|
||||
if ($state_index_id !== null) {
|
||||
$states = array(
|
||||
array($state_index_id,'ok',0,0,0) ,
|
||||
array($state_index_id,'minorAlarm',0,1,1) ,
|
||||
array($state_index_id,'majorAlarm',0,2,2) ,
|
||||
array($state_index_id,'disabled',0,3,3) ,
|
||||
array($state_index_id,'error',0,4,2)
|
||||
);
|
||||
foreach ($states as $value) {
|
||||
$insert = array(
|
||||
'state_index_id' => $value[0],
|
||||
'state_descr' => $value[1],
|
||||
'state_draw_graph' => $value[2],
|
||||
'state_value' => $value[3],
|
||||
'state_generic_value' => $value[4]
|
||||
);
|
||||
dbInsert($insert, 'state_translations');
|
||||
}
|
||||
}
|
||||
$index = 0;
|
||||
$limit = 10;
|
||||
$warnlimit = null;
|
||||
$lowlimit = null;
|
||||
$lowwarnlimit = null;
|
||||
$divisor = 1;
|
||||
$num_oid = $symmetry_oid[$countValue-1];
|
||||
$state = $state_numeric / $divisor;
|
||||
$descr = 'Battery banks symmetry '.$countValue;
|
||||
discover_sensor(
|
||||
$valid['sensor'],
|
||||
'state',
|
||||
$device,
|
||||
$num_oid,
|
||||
$index,
|
||||
$state_name,
|
||||
$descr,
|
||||
$divisor,
|
||||
'1',
|
||||
$lowlimit,
|
||||
$lowwarnlimit,
|
||||
$warnlimit,
|
||||
$limit,
|
||||
$state
|
||||
);
|
||||
create_sensor_to_state_index(
|
||||
$device,
|
||||
$state_name,
|
||||
$index
|
||||
);
|
||||
}
|
||||
}
|
40
includes/polling/os/eltek-webpower.inc.php
Normal file
40
includes/polling/os/eltek-webpower.inc.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
/**
|
||||
* eltek-webpower.inc.php
|
||||
*
|
||||
* -Description-
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package LibreNMS
|
||||
* @link http://librenms.org
|
||||
* @copyright 2018 Mikael Sipilainen
|
||||
* @author Mikael Sipilainen <mikael.sipilainen@gmail.com>
|
||||
*/
|
||||
|
||||
// ELTEK - A Delta Group Company - https://eltek.com/
|
||||
// Flatpack series DC Power system with SmartPack controller
|
||||
// (SmartPack2 V2.x, SmartPack S V2.x and Compack V2.x.
|
||||
// Also seems to work correctly with SmartPack_1 v.5.2 and SW v.3.10)
|
||||
|
||||
// ELTEK-DISTRIBUTED-MIB (version9) needs files SNMPv2-SMI SNMPv2-TC
|
||||
|
||||
$output = preg_split("/[\s,]+/", $device['sysDescr']);
|
||||
$version = $output[1];
|
||||
|
||||
$oid = snmp_get_multi($device, 'systemSiteInfoControllerType.0 rectifierStatusType.1 batteryName.0 systemSiteInfoSystemSeriaNum.0', '-OQUs', 'ELTEK-DISTRIBUTED-MIB');
|
||||
$features = 'Rectifier type: '.$oid[1]['rectifierStatusType'];
|
||||
$features .= ', Battery name: '.$oid[0]['batteryName'];
|
||||
$hardware = $oid[0]['systemSiteInfoControllerType'];
|
||||
$serial = $oid[0]['systemSiteInfoSystemSeriaNum'];
|
Reference in New Issue
Block a user