
# Morningstar TriStar MPPT by SNMP

## Overview

This template is designed for the effortless deployment of Morningstar TriStar MPPT monitoring by Zabbix via SNMP and doesn't require any external scripts.

## Requirements

Zabbix version: 7.0 and higher.

## Tested versions

This template has been tested on:
- Morningstar TriStar MPPT

## Configuration

> Zabbix should be configured according to the instructions in the [Templates out of the box](https://www.zabbix.com/documentation/7.0/manual/config/templates_out_of_the_box) section.

## Setup

Refer to the vendor documentation.

### Macros used

|Name|Description|Default|
|----|-----------|-------|
|{$BATTERY.TEMP.MIN.WARN}|
Battery low temperature warning value
|`0`|
|{$BATTERY.TEMP.MAX.WARN}|
Battery high temperature warning value
|`45`|
|{$BATTERY.TEMP.MIN.CRIT}|
Battery low temperature critical value
|`-20`|
|{$BATTERY.TEMP.MAX.CRIT}|
Battery high temperature critical value
|`60`|
|{$VOLTAGE.MIN.WARN}|||
|{$VOLTAGE.MAX.WARN}|||
|{$VOLTAGE.MIN.CRIT}|||
|{$VOLTAGE.MAX.CRIT}|||
|{$CHARGE.STATE.WARN}|
disconnect
|`2`|
|{$CHARGE.STATE.CRIT}|
fault
|`4`|
|{$LOAD.STATE.WARN:"lvdWarning"}|
lvdWarning
|`2`|
|{$LOAD.STATE.WARN:"disconnect"}|
disconnect
|`5`|
|{$LOAD.STATE.WARN:"override"}|
override
|`7`|
|{$LOAD.STATE.CRIT:"lvd"}|
lvd
|`3`|
|{$LOAD.STATE.CRIT:"fault"}|
fault
|`4`|

### Items

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Status: Uptime (network)|
The time (in hundredths of a second) since the network management portion of the system was last re-initialized.
|SNMP agent|status.net.uptime
**Preprocessing**

- 
Custom multiplier: `0.01`

|
|Status: Uptime (hardware)|
The amount of time since this host was last initialized. Note that this is different from sysUpTime in the SNMPv2-MIB [RFC1907] because sysUpTime is the uptime of the network management portion of the system.
|SNMP agent|status.hw.uptime
**Preprocessing**

- 
Check for not supported value: `any error`

⛔️Custom on fail: Set value to: `0`

- 
Custom multiplier: `0.01`

|
|Array: Voltage|
MIB: TRISTAR-MPPT

Description:Array Voltage

Scaling Factor:0.0054931640625

Units:V

Range:[-10, 180]

Modbus address:0x001b
|SNMP agent|array.voltage[arrayVoltage.0]
**Preprocessing**

- 
Custom multiplier: `0.005493164063`

- 
Regular expression: `^(\d+)(\.\d{1,2})? \1\2`

|
|Array: Array Current|
MIB: TRISTAR-MPPT

Description:Array Current

Scaling Factor:0.00244140625

Units:A

Range:[-10, 80]

Modbus address:0x001d
|SNMP agent|array.current[arrayCurrent.0]
**Preprocessing**

- 
Custom multiplier: `0.00244140625`

- 
Regular expression: `^(\d+)(\.\d{1,2})? \1\2`

|
|Array: Sweep Vmp|
MIB: TRISTAR-MPPT

Description:Vmp (last sweep)

Scaling Factor:0.0054931640625

Units:V

Range:[-10, 180.0]

Modbus address:0x003d
|SNMP agent|array.sweep_vmp[arrayVmpLastSweep.0]
**Preprocessing**

- 
Custom multiplier: `0.005493164063`

- 
Regular expression: `^(\d+)(\.\d{1,2})? \1\2`

|
|Array: Sweep Voc|
MIB: TRISTAR-MPPT

Description:Voc (last sweep)

Scaling Factor:0.0054931640625

Units:V

Range:[-10, 180.0]

Modbus address:0x003e
|SNMP agent|array.sweep_voc[arrayVocLastSweep.0]
**Preprocessing**

- 
Custom multiplier: `0.005493164063`

- 
Regular expression: `^(\d+)(\.\d{1,2})? \1\2`

|
|Array: Sweep Pmax|
MIB: TRISTAR-MPPT

Description:Pmax (last sweep)

Scaling Factor:0.10986328125

Units:W

Range:[-10, 5000]

Modbus address:0x003c
|SNMP agent|array.sweep_pmax[arrayPmaxLastSweep.0]
**Preprocessing**

- 
Custom multiplier: `0.1098632813`

- 
Regular expression: `^(\d+)(\.\d{1,2})? \1\2`

|
|Battery: Charge State|
MIB: TRISTAR-MPPT

Description:Charge State

Modbus address:0x0032

0: Start

1: NightCheck

2: Disconnect

3: Night

4: Fault

5: Mppt

6: Absorption

7: Float

8: Equalize

9: Slave
|SNMP agent|charge.state[chargeState.0]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|
|Battery: Battery Voltage discovery|
MIB: TRISTAR-MPPT
|SNMP agent|battery.voltage.discovery[batteryVoltage.0]
**Preprocessing**

- 
Custom multiplier: `0.005493164063`

|
|Battery: Target Voltage|
MIB: TRISTAR-MPPT

Description:Target Voltage

Scaling Factor:0.0054931640625

Units:V

Range:[-10, 180.0]

Modbus address:0x0033
|SNMP agent|target.voltage[targetRegulationVoltage.0]
**Preprocessing**

- 
Custom multiplier: `0.005493164063`

- 
Regular expression: `^(\d+)(\.\d{1,2})? \1\2`

|
|Battery: Charge Current|
MIB: TRISTAR-MPPT

Description:Battery Current

Scaling Factor:0.00244140625

Units:A

Range:[-10, 80]

Modbus address:0x001c
|SNMP agent|charge.current[batteryCurrent.0]
**Preprocessing**

- 
Custom multiplier: `0.00244140625`

- 
Regular expression: `^(\d+)(\.\d{1,2})? \1\2`

|
|Battery: Output Power|
MIB: TRISTAR-MPPT

Description:Output Power

Scaling Factor:0.10986328125

Units:W

Range:[-10, 5000]

Modbus address:0x003a
|SNMP agent|charge.output_power[ outputPower.0]
**Preprocessing**

- 
Custom multiplier: `0.1098632813`

- 
Regular expression: `^(\d+)(\.\d{1,2})? \1\2`

|
|Temperature: Battery|
MIB: TRISTAR-MPPT

Description:Batt. Temp

Scaling Factor:1.0

Units:C

Range:[-40, 80]

Modbus address:0x0025
|SNMP agent|temp.battery[batteryTemperature.0]|
|Temperature: Heatsink|
MIB: TRISTAR-MPPT

Description:HS Temp

Scaling Factor:1.0

Units:C

Range:[-40, 80]

Modbus address:0x0023
|SNMP agent|temp.heatsink[heatsinkTemperature.0]|
|Counter: Charge Amp-hours|
MIB: TRISTAR-MPPT

Description:Ah Charge Resettable

Scaling Factor:0.1

Units:Ah

Range:[0.0, 5000]

Modbus addresses:H=0x0034 L=0x0035
|SNMP agent|counter.charge_amp_hours[ahChargeResetable.0]
**Preprocessing**

- 
Custom multiplier: `0.1`

|
|Counter: Charge KW-hours|
MIB: TRISTAR-MPPT

Description:kWh Charge Resettable

Scaling Factor:0.1

Units:kWh

Range:[0.0, 65535.0]

Modbus address:0x0038
|SNMP agent|counter.charge_kw_hours[kwhChargeResetable.0]|
|Status: Faults|
MIB: TRISTAR-MPPT

Description:Faults

Modbus address:0x002c
|SNMP agent|status.faults[faults.0]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

- 
JavaScript: `The text is too long. Please see the template.`

|
|Status: Alarms|
MIB: TRISTAR-MPPT

Description:Faults

Modbus address:0x002c
|SNMP agent|status.alarms[alarms.0]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

- 
JavaScript: `The text is too long. Please see the template.`

|

### Triggers

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----------|--------|--------------------------------|
|Morningstar TriStar MPPT: Status: Device has been restarted|
Uptime is less than 10 minutes.
|`(last(/Morningstar TriStar MPPT by SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar MPPT by SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar MPPT by SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar MPPT by SNMP/status.net.uptime)<10m)`|Info|**Manual close**: Yes|
|Morningstar TriStar MPPT: Status: Failed to fetch data|
Zabbix has not received data for items for the last 5 minutes.
|`nodata(/Morningstar TriStar MPPT by SNMP/status.net.uptime,5m)=1`|Warning|**Manual close**: Yes|
|Morningstar TriStar MPPT: Battery: Device charge in warning state||`last(/Morningstar TriStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}`|Warning|**Depends on**:

- Morningstar TriStar MPPT: Battery: Device charge in critical state
|
|Morningstar TriStar MPPT: Battery: Device charge in critical state||`last(/Morningstar TriStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}`|High||
|Morningstar TriStar MPPT: Temperature: Low battery temperature||`max(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}`|Warning|**Depends on**:

- Morningstar TriStar MPPT: Temperature: Critically low battery temperature
|
|Morningstar TriStar MPPT: Temperature: Critically low battery temperature||`max(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}`|High||
|Morningstar TriStar MPPT: Temperature: High battery temperature||`min(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}`|Warning|**Depends on**:

- Morningstar TriStar MPPT: Temperature: Critically high battery temperature
|
|Morningstar TriStar MPPT: Temperature: Critically high battery temperature||`min(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}`|High||
|Morningstar TriStar MPPT: Status: Device has "overcurrent" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","overcurrent")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "fetShort" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","fetShort")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "softwareFault" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","softwareFault")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "batteryHvd" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","batteryHvd")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "arrayHvd" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","arrayHvd")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "dipSwitchChange" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "customSettingsEdit" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "rtsShorted" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "rtsDisconnected" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "eepromRetryLimit" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","eepromRetryLimit")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "slaveControlTimeout" faults flag||`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","slaveControlTimeout")=2`|High||
|Morningstar TriStar MPPT: Status: Device has "rtsShorted" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "rtsDisconnected" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "heatsinkTempSensorOpen" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "heatsinkTempSensorShorted" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "highTemperatureCurrentLimit" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","highTemperatureCurrentLimit")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "currentLimit" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "currentOffset" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "batterySense" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "batterySenseDisconnected" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "uncalibrated" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "rtsMiswire" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "highVoltageDisconnect" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "systemMiswire" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "mosfetSOpen" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "p12VoltageReferenceOff" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "highArrayVCurrentLimit" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","highArrayVCurrentLimit")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "maxAdcValueReached" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","maxAdcValueReached")=2`|Warning||
|Morningstar TriStar MPPT: Status: Device has "controllerWasReset" alarm flag||`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","controllerWasReset")=2`|Warning||

### LLD rule Battery voltage discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Battery voltage discovery|
Discovery for battery voltage triggers
|Dependent item|battery.voltage.discovery
**Preprocessing**

- 
JavaScript: `The text is too long. Please see the template.`

|

### Item prototypes for Battery voltage discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Battery: Voltage{#SINGLETON}|
MIB: TRISTAR-MPPT

Description:Battery voltage

Scaling Factor:0.0054931640625

Units:V

Range:[-10, 180.0]

Modbus address:0x0018
|SNMP agent|battery.voltage[batteryVoltage.0{#SINGLETON}]
**Preprocessing**

- 
Custom multiplier: `0.005493164063`

- 
Regular expression: `^(\d+)(\.\d{1,2})? \1\2`

|

### Trigger prototypes for Battery voltage discovery

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----------|--------|--------------------------------|
|Morningstar TriStar MPPT: Battery: Low battery voltage||`max(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}`|Warning|**Depends on**:

- Morningstar TriStar MPPT: Battery: Critically low battery voltage
|
|Morningstar TriStar MPPT: Battery: Critically low battery voltage||`max(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}`|High||
|Morningstar TriStar MPPT: Battery: High battery voltage||`min(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}`|Warning|**Depends on**:

- Morningstar TriStar MPPT: Battery: Critically high battery voltage
|
|Morningstar TriStar MPPT: Battery: Critically high battery voltage||`min(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}`|High||

## Feedback

Please report any issues with the template at [`https://support.zabbix.com`](https://support.zabbix.com)

You can also provide feedback, discuss the template, or ask for help at [`ZABBIX forums`](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback)

