diff --git a/html/images/os/samlex.png b/html/images/os/samlex.png
new file mode 100644
index 0000000000..00ff859a3b
Binary files /dev/null and b/html/images/os/samlex.png differ
diff --git a/includes/definitions/discovery/samlex.yaml b/includes/definitions/discovery/samlex.yaml
new file mode 100644
index 0000000000..92ac3246be
--- /dev/null
+++ b/includes/definitions/discovery/samlex.yaml
@@ -0,0 +1,211 @@
+mib: SAMLEXAMERICA-MIB
+modules:
+ os:
+ hardware: SAMLEXAMERICA-MIB::model.0
+ version: SAMLEXAMERICA-MIB::version.0
+ sensors:
+ temperature:
+ data:
+ -
+ oid: tempDD
+ num_oid: .1.3.6.1.4.1.49075.1.3.3.8.{{ $index }}
+ index: tempDD.{{ $index }}
+ descr: DC-to-DC
+ -
+ oid: tempDA
+ num_oid: .1.3.6.1.4.1.49075.1.3.3.9.{{ $index }}
+ index: tempDA.{{ $index }}
+ descr: DC-to-AC
+ state:
+ data:
+ -
+ oid: fan
+ num_oid: '.1.3.6.1.4.1.49075.1.3.3.1.{{ $index }}'
+ descr: Fan
+ index: 'fan.{{ $index }}'
+ state_name: fanStatus
+ states:
+ - { descr: off, graph: 0, value: 0, generic: 0 }
+ - { descr: on, graph: 0, value: 1, generic: 0 }
+ -
+ oid: inverterMode
+ num_oid: '.1.3.6.1.4.1.49075.1.3.3.2.{{ $index }}'
+ descr: Inverter Mode
+ index: 'inverterMode.{{ $index }}'
+ state_name: inverterMode
+ states:
+ - { descr: offline, graph: 0, value: 0, generic: 0 }
+ - { descr: online, graph: 0, value: 1, generic: 0 }
+ -
+ oid: transferType
+ num_oid: '.1.3.6.1.4.1.49075.1.3.3.3.{{ $index }}'
+ descr: Transfer Type
+ index: 'transferType.{{ $index }}'
+ state_name: transferTypes
+ states:
+ - { descr: synchronized, graph: 0, value: 0, generic: 0 }
+ - { descr: unsynchronized, graph: 0, value: 1, generic: 0 }
+ -
+ oid: byPassRelay
+ num_oid: '.1.3.6.1.4.1.49075.1.3.3.4.{{ $index }}'
+ descr: Bypass Relay
+ index: 'byPassRelay.{{ $index }}'
+ state_name: transferTypes
+ states:
+ - { descr: grid, graph: 0, value: 0, generic: 0 }
+ - { descr: inverter, graph: 0, value: 1, generic: 0 }
+ -
+ oid: gridAC
+ num_oid: '.1.3.6.1.4.1.49075.1.3.3.5.{{ $index }}'
+ descr: Grid AC
+ index: 'gridAC.{{ $index }}'
+ state_name: gridACStatus
+ states:
+ - { descr: non-existent, graph: 0, value: 0, generic: 3 }
+ - { descr: detect, graph: 0, value: 1, generic: 1 }
+ - { descr: present, graph: 0, value: 2, generic: 1 }
+ - { descr: sync, graph: 0, value: 3, generic: 0 }
+ - { descr: wont-sync, graph: 0, value: 4, generic: 2 }
+ -
+ oid: warningFanFault
+ num_oid: '.1.3.6.1.4.1.49075.1.3.6.1.{{ $index }}'
+ descr: Fan Fault
+ index: 'warningFanFault.{{ $index }}'
+ state_name: warningFanFaultStatus
+ states:
+ - { descr: normal, graph: 0, value: 0, generic: 0 }
+ - { descr: warning, graph: 0, value: 1, generic: 1 }
+ -
+ oid: warningOverVoltageAlarm
+ num_oid: '.1.3.6.1.4.1.49075.1.3.6.2.{{ $index }}'
+ descr: Over Voltage Alarm
+ index: 'warningOverVoltageAlarm.{{ $index }}'
+ state_name: warningOverVoltageAlarmStatus
+ states:
+ - { descr: normal, graph: 0, value: 0, generic: 0 }
+ - { descr: warning, graph: 0, value: 1, generic: 1 }
+ -
+ oid: warningUnderVoltageAlarm
+ num_oid: '.1.3.6.1.4.1.49075.1.3.6.3.{{ $index }}'
+ descr: Under Voltage Alarm
+ index: 'warningUnderVoltageAlarm.{{ $index }}'
+ state_name: warningUnderVoltageAlarmStatus
+ states:
+ - { descr: normal, graph: 0, value: 0, generic: 0 }
+ - { descr: warning, graph: 0, value: 1, generic: 1 }
+ -
+ oid: warningOverload
+ num_oid: '.1.3.6.1.4.1.49075.1.3.6.4.{{ $index }}'
+ descr: Overload
+ index: 'warningOverload.{{ $index }}'
+ state_name: warningOverloadStatus
+ states:
+ - { descr: normal, graph: 0, value: 0, generic: 0 }
+ - { descr: warning, graph: 0, value: 1, generic: 1 }
+ -
+ oid: warningOverTemperature
+ num_oid: '.1.3.6.1.4.1.49075.1.3.6.5.{{ $index }}'
+ descr: Temperature
+ index: 'warningOverTemperature.{{ $index }}'
+ state_name: warningOverTemperatureStatus
+ states:
+ - { descr: normal, graph: 0, value: 0, generic: 0 }
+ - { descr: warning, graph: 0, value: 1, generic: 1 }
+ -
+ oid: warningShortCircuit
+ num_oid: '.1.3.6.1.4.1.49075.1.3.6.6.{{ $index }}'
+ descr: Short Circuit
+ index: 'warningShortCircuit.{{ $index }}'
+ state_name: warningShortCircuitStatus
+ states:
+ - { descr: normal, graph: 0, value: 0, generic: 0 }
+ - { descr: warning, graph: 0, value: 1, generic: 1 }
+ -
+ oid: warningOverVoltageProtection
+ num_oid: '.1.3.6.1.4.1.49075.1.3.6.7.{{ $index }}'
+ descr: Overvoltage Protection
+ index: 'warningOverVoltageProtection.{{ $index }}'
+ state_name: warningOverVoltageProtectionStatus
+ states:
+ - { descr: normal, graph: 0, value: 0, generic: 0 }
+ - { descr: warning, graph: 0, value: 1, generic: 1 }
+ -
+ oid: warningUnderVoltageProtection
+ num_oid: '.1.3.6.1.4.1.49075.1.3.6.8.{{ $index }}'
+ descr: Undervoltage Protection
+ index: 'warningUnderVoltageProtection.{{ $index }}'
+ state_name: warningUnderVoltageProtectionStatus
+ states:
+ - { descr: normal, graph: 0, value: 0, generic: 0 }
+ - { descr: warning, graph: 0, value: 1, generic: 1 }
+
+ power:
+ data:
+ -
+ oid: power
+ num_oid: '.1.3.6.1.4.1.49075.1.3.1.4.{{ $index }}'
+ descr: 'Inverter Power'
+ index: 'power.{{ $index }}'
+ divisor: 10
+ frequency:
+ data:
+ -
+ oid: cfgFrequency
+ num_oid: '.1.3.6.1.4.1.49075.1.3.1.5.{{ $index }}'
+ descr: 'Inverter Frequency Config'
+ index: 'power.{{ $index }}'
+ divisor: 10
+ -
+ oid: frequency
+ num_oid: '.1.3.6.1.4.1.49075.1.3.1.6.{{ $index }}'
+ descr: 'Inverter Output Frequency'
+ index: 'frequency.{{ $index }}'
+ divisor: 10
+ -
+ oid: gridfrequency
+ num_oid: '.1.3.6.1.4.1.49075.1.3.1.10.{{ $index }}'
+ descr: 'Grid Frequency'
+ index: 'gridfrequency.{{ $index }}'
+ divisor: 10
+
+ current:
+ data:
+ -
+ oid: iout
+ num_oid: '.1.3.6.1.4.1.49075.1.3.1.3.{{ $index }}'
+ descr: 'Inverter Current'
+ index: 'iout.{{ $index }}'
+ divisor: 10
+ -
+ oid: gridiout
+ num_oid: '.1.3.6.1.4.1.49075.1.3.1.8.{{ $index }}'
+ descr: 'Grid Current'
+ index: 'vin.{{ $index }}'
+ divisor: 10
+
+ voltage:
+ data:
+ -
+ oid: cfgVout
+ num_oid: '.1.3.6.1.4.1.49075.1.3.1.1.{{ $index }}'
+ descr: 'Inverter Vout Config'
+ index: 'cfgVout.{{ $index }}'
+ divisor: 10
+ -
+ oid: vout
+ num_oid: '.1.3.6.1.4.1.49075.1.3.1.2.{{ $index }}'
+ descr: 'Inverter Output Volts'
+ index: 'vout.{{ $index }}'
+ divisor: 10
+ -
+ oid: vin
+ num_oid: '.1.3.6.1.4.1.49075.1.3.2.1.{{ $index }}'
+ descr: 'DC Input Volts'
+ index: 'vin.{{ $index }}'
+ divisor: 10
+ -
+ oid: gridvout
+ num_oid: '.1.3.6.1.4.1.49075.1.3.1.7.{{ $index }}'
+ descr: 'Grid Input Volts'
+ index: 'gridvout.{{ $index }}'
+ divisor: 10
diff --git a/includes/definitions/samlex.yaml b/includes/definitions/samlex.yaml
new file mode 100755
index 0000000000..78bb4cbf6f
--- /dev/null
+++ b/includes/definitions/samlex.yaml
@@ -0,0 +1,13 @@
+os: samlex
+text: Samlex Inverter
+type: power
+icon: samlex
+mib_dir: samlex
+snmp_bulk: false
+over:
+ - { graph: device_current, text: Current }
+ - { graph: device_voltage, text: Voltage }
+ - { graph: device_power, text: Power }
+discovery:
+ -
+ sysObjectID: .1.3.6.1.4.1.49075
diff --git a/mibs/samlex/SAMLEXAMERICA-MIB b/mibs/samlex/SAMLEXAMERICA-MIB
new file mode 100644
index 0000000000..fd3f647664
--- /dev/null
+++ b/mibs/samlex/SAMLEXAMERICA-MIB
@@ -0,0 +1,537 @@
+-- SNMP SMIV2 MIB
+--
+
+SAMLEXAMERICA-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+ MODULE-IDENTITY,enterprises,
+ IpAddress ,Integer32 FROM SNMPv2-SMI
+ -- Gauge, TimeTicks FROM RFC1155-SMI
+ DisplayString FROM SNMPv2-TC
+ OBJECT-TYPE FROM RFC-1212
+ NOTIFICATION-TYPE FROM SNMPv2-SMI
+ -- TRAP-TYPE FROM RFC-1215
+ TEXTUAL-CONVENTION FROM SNMPv2-TC
+ MODULE-COMPLIANCE, OBJECT-GROUP ,
+ NOTIFICATION-GROUP FROM SNMPv2-CONF;
+
+samlexamericaInfo MODULE-IDENTITY
+ LAST-UPDATED "201612240000Z"
+ ORGANIZATION "SAMLEX AMERICA"
+ CONTACT-INFO
+ "www.samlexamerica.com"
+ DESCRIPTION
+ "Samlex America Inc"
+
+ REVISION "201612240000Z"
+ DESCRIPTION
+ "SMIv2."
+ ::= { samlexamerica 1 }
+
+samlexamerica OBJECT IDENTIFIER ::= { enterprises 49075 }
+
+trapNotifications OBJECT IDENTIFIER ::= { samlexamericaInfo 0 }
+product OBJECT IDENTIFIER ::= { samlexamericaInfo 1 }
+setup OBJECT IDENTIFIER ::= { samlexamericaInfo 2 }
+telecom OBJECT IDENTIFIER ::= { samlexamericaInfo 3 }
+
+output OBJECT IDENTIFIER ::= { telecom 1 }
+input OBJECT IDENTIFIER ::= { telecom 2 }
+status OBJECT IDENTIFIER ::= { telecom 3 }
+ui OBJECT IDENTIFIER ::= { telecom 4 }
+warningconfig OBJECT IDENTIFIER ::= { telecom 5 }
+warning OBJECT IDENTIFIER ::= { telecom 6 }
+
+
+model OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Product Name"
+ ::= { product 1 }
+
+version OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Version string. e.g. 1.0"
+ ::= { product 2 }
+
+date OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Date of version"
+ ::= { product 3 }
+
+cfgVout OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Config Vout, eg. 1200 = 120.0V"
+ ::= { output 1 }
+
+vout OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Inverter Output Voltage RMS eg. 1200 = 120.0V"
+ ::= { output 2 }
+
+iout OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Inverter Output Current RMS eg. 48 = 4.8A"
+ ::= { output 3 }
+
+
+power OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Inverter Output Real Power eg. 9002 = 900.2W"
+ ::= { output 4 }
+
+cfgFrequency OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Config Output Frequency eg. 500 = 50.0Hz"
+ ::= { output 5 }
+
+frequency OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Inverter Output Frequency eg. 500 = 50.0Hz"
+ ::= { output 6 }
+
+gridvout OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Grid AC Output Voltage RMS eg. 1200 = 120.0V"
+ ::= { output 7 }
+
+gridiout OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Grid AC Output Current RMS eg. 48 = 4.8A"
+ ::= { output 8 }
+
+
+gridpower OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Grid AC Output Real Power eg. 9002 = 900.2W"
+ ::= { output 9 }
+
+gridfrequency OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Grid AC Output Frequency eg. 500 = 50.0Hz"
+ ::= { output 10 }
+
+
+vin OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "DC Voltage In eg. 245 = 24.5V"
+ ::= { input 1 }
+
+ovp OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Over Voltage Protection eg. 245 = 24.5V"
+ ::= { input 2 }
+
+ovpRecovery OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Over Voltage Protection Recovery eg. 245 = 24.5V"
+ ::= { input 3 }
+
+uvp OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Under Voltage Protection eg. 245 = 24.5V"
+ ::= { input 4 }
+
+uvpRecovery OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Under Voltage Protection Recovery eg. 245 = 24.5V"
+ ::= { input 5 }
+
+ovAlarm OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Over Voltage Alarm eg. 245 = 24.5V"
+ ::= { input 6 }
+
+uvAlarm OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Under Voltage Alarm eg. 245 = 24.5V"
+ ::= { input 7 }
+
+fan OBJECT-TYPE
+ SYNTAX INTEGER { off(0), on(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "0 = off, 1 = on"
+ ::= { status 1 }
+
+inverterMode OBJECT-TYPE
+ SYNTAX INTEGER { off-Line(0), on-Line(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "0 = Off-Line, 1 = On-Line"
+ ::= { status 2 }
+
+transferType OBJECT-TYPE
+ SYNTAX INTEGER { synchronized(0), unsynchronized(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "0 = Synchronized, 1 = UnSynchronized"
+ ::= { status 3 }
+
+byPassRelay OBJECT-TYPE
+ SYNTAX INTEGER { grid(0), inverter(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "0 = Grid, 1 = Inverter"
+ ::= { status 4 }
+
+gridAC OBJECT-TYPE
+ SYNTAX INTEGER { not-exists(0), detect(1), present(2), sync(3), wont-sync(4) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "not-exists(0), detect(1), present(2), sync(3), wont-sync(4)"
+ ::= { status 5 }
+
+olProtection OBJECT-TYPE
+ SYNTAX INTEGER (0..255)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Overload Protection Percentage eg. 110 = 110%"
+ ::= { status 6 }
+
+syncFreq OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Overload Protection Percentage eg. 50 = 5.0Hz"
+ ::= { status 7 }
+
+tempDD OBJECT-TYPE
+ SYNTAX INTEGER (-128..127)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "DC to DC temperature eg. 25 = 25 C"
+ ::= { status 8 }
+
+tempDA OBJECT-TYPE
+ SYNTAX INTEGER (-128..127)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "DC to AC temperature eg. 25 = 25 C"
+ ::= { status 9 }
+
+lcdContrast OBJECT-TYPE
+ SYNTAX INTEGER (0..255)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "LCD Contrast eg. 50 = 50%"
+ ::= { ui 1 }
+
+lcdAutoOff OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "LCD Auto Off eg. 0 = Disabled, 120 = 120 seconds"
+ ::= { ui 2 }
+
+rs232Speed OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "RS-232 Speed eg. 19200 = 19200bps"
+ ::= { ui 3 }
+
+usbVCOMSpeed OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "USB VCOM Speed eg. 19200 = 19200bps"
+ ::= { ui 4 }
+
+wcTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF WcEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Warning Config Table"
+ ::= { warningconfig 1 }
+
+wcEntry OBJECT-TYPE
+ SYNTAX WcEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Single warning config entry containing info."
+ INDEX { wcIndex }
+ ::= { wcTable 1 }
+
+WcEntry ::=
+ SEQUENCE {
+ wcIndex
+ INTEGER,
+ wcFanFaultEnabled
+ INTEGER,
+ wcOVAEnabled
+ INTEGER,
+ wcUVAEnabled
+ INTEGER,
+ wcOverLoadEnabled
+ INTEGER,
+ wcOverTemperatureEnabled
+ INTEGER,
+ wcShortCircuitEnabled
+ INTEGER
+ }
+
+wcIndex OBJECT-TYPE
+ SYNTAX INTEGER { buzzer(0), drycontact(1) }
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Index of warning config"
+ ::= { wcEntry 1 }
+
+wcFanFaultEnabled OBJECT-TYPE
+ SYNTAX INTEGER { off(0), on(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Fan Fault Enabled"
+ ::= { wcEntry 2 }
+
+wcOVAEnabled OBJECT-TYPE
+ SYNTAX INTEGER { off(0), on(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Over Alarm Enabled"
+ ::= { wcEntry 3 }
+
+wcUVAEnabled OBJECT-TYPE
+ SYNTAX INTEGER { off(0), on(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Under Voltage Alarm Enabled"
+ ::= { wcEntry 4 }
+
+wcOverLoadEnabled OBJECT-TYPE
+ SYNTAX INTEGER { off(0), on(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Overload Enabled"
+ ::= { wcEntry 5 }
+
+wcOverTemperatureEnabled OBJECT-TYPE
+ SYNTAX INTEGER { off(0), on(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Over Temperature Enabled"
+ ::= { wcEntry 6 }
+
+wcShortCircuitEnabled OBJECT-TYPE
+ SYNTAX INTEGER { off(0), on(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Short Circuit Enabled"
+ ::= { wcEntry 7 }
+
+warningFanFault OBJECT-TYPE
+ SYNTAX INTEGER { normal(0), warning(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Fan Fault Warning"
+ ::= { warning 1 }
+
+warningOverVoltageAlarm OBJECT-TYPE
+ SYNTAX INTEGER { normal(0), warning(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Over Voltage Alarm Warning"
+ ::= { warning 2 }
+
+warningUnderVoltageAlarm OBJECT-TYPE
+ SYNTAX INTEGER { normal(0), warning(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Under Voltage Alarm Warning"
+ ::= { warning 3 }
+
+warningOverload OBJECT-TYPE
+ SYNTAX INTEGER { normal(0), warning(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Overload Warning"
+ ::= { warning 4 }
+
+warningOverTemperature OBJECT-TYPE
+ SYNTAX INTEGER { normal(0), warning(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Over Temperature Warning"
+ ::= { warning 5 }
+
+warningShortCircuit OBJECT-TYPE
+ SYNTAX INTEGER { normal(0), warning(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Short Circuit Warning"
+ ::= { warning 6 }
+
+warningOverVoltageProtection OBJECT-TYPE
+ SYNTAX INTEGER { normal(0), warning(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Over Voltage Protection Warning"
+ ::= { warning 7 }
+
+warningUnderVoltageProtection OBJECT-TYPE
+ SYNTAX INTEGER { normal(0), warning(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Under Voltage Protection Warning"
+ ::= { warning 8 }
+
+
+trapTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF TrapEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Trap table"
+ ::= { setup 1 }
+
+trapEntry OBJECT-TYPE
+ SYNTAX TrapEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Single trap entry containing trap receiver info."
+ INDEX { trapReceiverNumber }
+ ::= { trapTable 1 }
+
+TrapEntry ::=
+ SEQUENCE {
+ trapReceiverNumber
+ Integer32,
+ trapEnabled
+ Integer32,
+ trapReceiverIPAddress
+ IpAddress,
+ trapCommunity
+ DisplayString
+ }
+
+trapReceiverNumber OBJECT-TYPE
+ SYNTAX Integer32(0.. 4)
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Index of trap receiver"
+ ::= { trapEntry 1 }
+
+trapEnabled OBJECT-TYPE
+ SYNTAX INTEGER { no(0),yes(1) }
+ MAX-ACCESS read-write
+ STATUS current
+ DESCRIPTION
+ "Indicates if this trap entry is enabled or not."
+ ::= { trapEntry 2 }
+
+trapReceiverIPAddress OBJECT-TYPE
+ SYNTAX IpAddress
+ MAX-ACCESS read-write
+ STATUS current
+ DESCRIPTION
+ "Trap receiver IP address"
+ ::= { trapEntry 3 }
+
+trapCommunity OBJECT-TYPE
+ SYNTAX DisplayString (SIZE (0..7))
+ MAX-ACCESS read-write
+ STATUS current
+ DESCRIPTION
+ "Trap community to be used by agent to send trap"
+ ::= { trapEntry 4 }
+
+snmpTrap NOTIFICATION-TYPE
+ OBJECTS { warningFanFault, warningOverVoltageAlarm, warningUnderVoltageAlarm, warningOverload, warningOverTemperature, warningShortCircuit, warningOverVoltageProtection, warningUnderVoltageProtection }
+ STATUS current
+ DESCRIPTION
+ "SMIV2 Trap notification information for the SNMP Manager."
+ ::= {trapNotifications 1}
+
+END
diff --git a/tests/data/samlex_psr-1200-48.json b/tests/data/samlex_psr-1200-48.json
new file mode 100644
index 0000000000..0308d882b2
--- /dev/null
+++ b/tests/data/samlex_psr-1200-48.json
@@ -0,0 +1,846 @@
+{
+ "os": {
+ "discovery": {
+ "devices": [
+ {
+ "sysName": null,
+ "sysObjectID": ".1.3.6.1.4.1.49075",
+ "sysDescr": "systemname",
+ "sysContact": "",
+ "version": "1.0.2704",
+ "hardware": "PSR-1200-48",
+ "features": null,
+ "location": "",
+ "os": "samlex",
+ "type": "power",
+ "serial": null,
+ "icon": "samlex.png"
+ }
+ ]
+ },
+ "poller": "matches discovery"
+ },
+ "sensors": {
+ "discovery": {
+ "sensors": [
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "current",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.1.3.0",
+ "sensor_index": "iout.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "Inverter Current",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 1.9,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "current",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.1.8.0",
+ "sensor_index": "vin.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "Grid Current",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "frequency",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.1.6.0",
+ "sensor_index": "frequency.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "Inverter Output Frequency",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 59.9,
+ "sensor_limit": 62.895,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": 56.905,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "frequency",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.1.10.0",
+ "sensor_index": "gridfrequency.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "Grid Frequency",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": 0,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": 0,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "frequency",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.1.5.0",
+ "sensor_index": "power.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "Inverter Frequency Config",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 60,
+ "sensor_limit": 63,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": 57,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "power",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.1.4.0",
+ "sensor_index": "power.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "Inverter Power",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 211.4,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.3.1.0",
+ "sensor_index": "fan.0",
+ "sensor_type": "fanStatus",
+ "sensor_descr": "Fan",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 1,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "fanStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.3.5.0",
+ "sensor_index": "gridAC.0",
+ "sensor_type": "gridACStatus",
+ "sensor_descr": "Grid AC",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "gridACStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.3.2.0",
+ "sensor_index": "inverterMode.0",
+ "sensor_type": "inverterMode",
+ "sensor_descr": "Inverter Mode",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "inverterMode"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.3.4.0",
+ "sensor_index": "byPassRelay.0",
+ "sensor_type": "transferTypes",
+ "sensor_descr": "Bypass Relay",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 1,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "transferTypes"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.3.3.0",
+ "sensor_index": "transferType.0",
+ "sensor_type": "transferTypes",
+ "sensor_descr": "Transfer Type",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "transferTypes"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.6.1.0",
+ "sensor_index": "warningFanFault.0",
+ "sensor_type": "warningFanFaultStatus",
+ "sensor_descr": "Fan Fault",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "warningFanFaultStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.6.4.0",
+ "sensor_index": "warningOverload.0",
+ "sensor_type": "warningOverloadStatus",
+ "sensor_descr": "Overload",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "warningOverloadStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.6.5.0",
+ "sensor_index": "warningOverTemperature.0",
+ "sensor_type": "warningOverTemperatureStatus",
+ "sensor_descr": "Temperature",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "warningOverTemperatureStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.6.2.0",
+ "sensor_index": "warningOverVoltageAlarm.0",
+ "sensor_type": "warningOverVoltageAlarmStatus",
+ "sensor_descr": "Over Voltage Alarm",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "warningOverVoltageAlarmStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.6.7.0",
+ "sensor_index": "warningOverVoltageProtection.0",
+ "sensor_type": "warningOverVoltageProtectionStatus",
+ "sensor_descr": "Overvoltage Protection",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "warningOverVoltageProtectionStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.6.6.0",
+ "sensor_index": "warningShortCircuit.0",
+ "sensor_type": "warningShortCircuitStatus",
+ "sensor_descr": "Short Circuit",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "warningShortCircuitStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.6.3.0",
+ "sensor_index": "warningUnderVoltageAlarm.0",
+ "sensor_type": "warningUnderVoltageAlarmStatus",
+ "sensor_descr": "Under Voltage Alarm",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "warningUnderVoltageAlarmStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "state",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.6.8.0",
+ "sensor_index": "warningUnderVoltageProtection.0",
+ "sensor_type": "warningUnderVoltageProtectionStatus",
+ "sensor_descr": "Undervoltage Protection",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": null,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": null,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": "warningUnderVoltageProtectionStatus"
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "temperature",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.3.9.0",
+ "sensor_index": "tempDA.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "DC-to-AC",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 45,
+ "sensor_limit": 65,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": 35,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "temperature",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.3.8.0",
+ "sensor_index": "tempDD.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "DC-to-DC",
+ "group": null,
+ "sensor_divisor": 1,
+ "sensor_multiplier": 1,
+ "sensor_current": 34,
+ "sensor_limit": 54,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": 24,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "voltage",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.1.1.0",
+ "sensor_index": "cfgVout.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "Inverter Vout Config",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 120,
+ "sensor_limit": 138,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": 102,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "voltage",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.1.7.0",
+ "sensor_index": "gridvout.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "Grid Input Volts",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 0,
+ "sensor_limit": 0,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": 0,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "voltage",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.2.1.0",
+ "sensor_index": "vin.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "DC Input Volts",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 54.4,
+ "sensor_limit": 62.56,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": 46.24,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ },
+ {
+ "sensor_deleted": 0,
+ "sensor_class": "voltage",
+ "poller_type": "snmp",
+ "sensor_oid": ".1.3.6.1.4.1.49075.1.3.1.2.0",
+ "sensor_index": "vout.0",
+ "sensor_type": "samlex",
+ "sensor_descr": "Inverter Output Volts",
+ "group": null,
+ "sensor_divisor": 10,
+ "sensor_multiplier": 1,
+ "sensor_current": 118.6,
+ "sensor_limit": 136.39,
+ "sensor_limit_warn": null,
+ "sensor_limit_low": 100.81,
+ "sensor_limit_low_warn": null,
+ "sensor_alert": 1,
+ "sensor_custom": "No",
+ "entPhysicalIndex": null,
+ "entPhysicalIndex_measured": null,
+ "sensor_prev": null,
+ "user_func": null,
+ "rrd_type": "GAUGE",
+ "state_name": null
+ }
+ ],
+ "state_indexes": [
+ {
+ "state_name": "fanStatus",
+ "state_descr": "off",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "fanStatus",
+ "state_descr": "on",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "gridACStatus",
+ "state_descr": "non-existent",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 3
+ },
+ {
+ "state_name": "gridACStatus",
+ "state_descr": "detect",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 1
+ },
+ {
+ "state_name": "gridACStatus",
+ "state_descr": "present",
+ "state_draw_graph": 0,
+ "state_value": 2,
+ "state_generic_value": 1
+ },
+ {
+ "state_name": "gridACStatus",
+ "state_descr": "sync",
+ "state_draw_graph": 0,
+ "state_value": 3,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "gridACStatus",
+ "state_descr": "wont-sync",
+ "state_draw_graph": 0,
+ "state_value": 4,
+ "state_generic_value": 2
+ },
+ {
+ "state_name": "inverterMode",
+ "state_descr": "offline",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "inverterMode",
+ "state_descr": "online",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "transferTypes",
+ "state_descr": "grid",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "transferTypes",
+ "state_descr": "inverter",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "warningFanFaultStatus",
+ "state_descr": "normal",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "warningFanFaultStatus",
+ "state_descr": "warning",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 1
+ },
+ {
+ "state_name": "warningOverloadStatus",
+ "state_descr": "normal",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "warningOverloadStatus",
+ "state_descr": "warning",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 1
+ },
+ {
+ "state_name": "warningOverTemperatureStatus",
+ "state_descr": "normal",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "warningOverTemperatureStatus",
+ "state_descr": "warning",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 1
+ },
+ {
+ "state_name": "warningOverVoltageAlarmStatus",
+ "state_descr": "normal",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "warningOverVoltageAlarmStatus",
+ "state_descr": "warning",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 1
+ },
+ {
+ "state_name": "warningOverVoltageProtectionStatus",
+ "state_descr": "normal",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "warningOverVoltageProtectionStatus",
+ "state_descr": "warning",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 1
+ },
+ {
+ "state_name": "warningShortCircuitStatus",
+ "state_descr": "normal",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "warningShortCircuitStatus",
+ "state_descr": "warning",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 1
+ },
+ {
+ "state_name": "warningUnderVoltageAlarmStatus",
+ "state_descr": "normal",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "warningUnderVoltageAlarmStatus",
+ "state_descr": "warning",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 1
+ },
+ {
+ "state_name": "warningUnderVoltageProtectionStatus",
+ "state_descr": "normal",
+ "state_draw_graph": 0,
+ "state_value": 0,
+ "state_generic_value": 0
+ },
+ {
+ "state_name": "warningUnderVoltageProtectionStatus",
+ "state_descr": "warning",
+ "state_draw_graph": 0,
+ "state_value": 1,
+ "state_generic_value": 1
+ }
+ ]
+ },
+ "poller": "matches discovery"
+ }
+}
diff --git a/tests/snmpsim/samlex_psr-1200-48.snmprec b/tests/snmpsim/samlex_psr-1200-48.snmprec
new file mode 100644
index 0000000000..1b4c731daa
--- /dev/null
+++ b/tests/snmpsim/samlex_psr-1200-48.snmprec
@@ -0,0 +1,31 @@
+1.3.6.1.2.1.1.1.0|4|systemname
+1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.49075
+1.3.6.1.2.1.1.4.0|4|
+1.3.6.1.2.1.1.6.0|4|
+1.3.6.1.4.1.49075.1.1.1.0|4|PSR-1200-48
+1.3.6.1.4.1.49075.1.1.2.0|4|1.0.2704
+1.3.6.1.4.1.49075.1.3.1.1.0|2|1200
+1.3.6.1.4.1.49075.1.3.1.2.0|2|1186
+1.3.6.1.4.1.49075.1.3.1.3.0|2|19
+1.3.6.1.4.1.49075.1.3.1.4.0|2|2114
+1.3.6.1.4.1.49075.1.3.1.5.0|2|600
+1.3.6.1.4.1.49075.1.3.1.6.0|2|599
+1.3.6.1.4.1.49075.1.3.1.7.0|2|0
+1.3.6.1.4.1.49075.1.3.1.8.0|2|0
+1.3.6.1.4.1.49075.1.3.1.10.0|2|0
+1.3.6.1.4.1.49075.1.3.2.1.0|2|544
+1.3.6.1.4.1.49075.1.3.3.1.0|2|1
+1.3.6.1.4.1.49075.1.3.3.2.0|2|0
+1.3.6.1.4.1.49075.1.3.3.3.0|2|0
+1.3.6.1.4.1.49075.1.3.3.4.0|2|1
+1.3.6.1.4.1.49075.1.3.3.5.0|2|0
+1.3.6.1.4.1.49075.1.3.3.8.0|2|34
+1.3.6.1.4.1.49075.1.3.3.9.0|2|45
+1.3.6.1.4.1.49075.1.3.6.1.0|2|0
+1.3.6.1.4.1.49075.1.3.6.2.0|2|0
+1.3.6.1.4.1.49075.1.3.6.3.0|2|0
+1.3.6.1.4.1.49075.1.3.6.4.0|2|0
+1.3.6.1.4.1.49075.1.3.6.5.0|2|0
+1.3.6.1.4.1.49075.1.3.6.6.0|2|0
+1.3.6.1.4.1.49075.1.3.6.7.0|2|0
+1.3.6.1.4.1.49075.1.3.6.8.0|2|0