Skip to content

Instantly share code, notes, and snippets.

@nickma82
Last active April 9, 2024 12:23
Show Gist options
  • Save nickma82/f2efdb9cd37f1d3aab28 to your computer and use it in GitHub Desktop.
Save nickma82/f2efdb9cd37f1d3aab28 to your computer and use it in GitHub Desktop.
voltronic infini inverter snmp OIDs reverse engineering
## Voltronic power infini inverter snmp protocol analysis
## Protocol Support SNMP-V1, SNMP-V2c
## Supported MIB RFC1213, RFC1628, Voltronic MIB
#
# @WARNING: some of the commands are *not working* with snmpget but only with snmpwalk!
# if triggered with snmpget they are returning '0'. This seems to be an implementation issue in the device
# @note: always terminating with an .0 which is not listed below
#
# @usage: example to obtain the generator power
# snmpwalk -v2c -cprivate <targetIP> .1.3.6.1.4.1.21111.1.2.6.3.1.3
# inverter version
iso.3.6.1.2.1.33.1.1.2.0 = STRING: "PV3K"
iso.3.6.1.2.1.33.1.1.3.0 = STRING: "00003.10"
iso.3.6.1.2.1.33.1.1.4.0 = STRING: "1.0"
# [DOMAIN] inverter version/serial data
iso.3.6.1.4.1.21111.1.2.1.*
# [DOMAIN] paramter settings
iso.3.6.1.4.1.21111.1.2.9.*
iso.3.6.1.4.1.21111.1.2.14.*
# [DOMAIN] power parameter
iso.3.6.1.4.1.21111.1.1.2.*
iso.3.6.1.4.1.21111.1.2.2.*
# get protocol version
# @retval 0,1,2,3,9,10,13,14,99,80
.1.3.6.1.4.1.21111.1.1.1.2 (but returned 16)
# set date
SimpleDateFormat d = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date myDate = new Date();
".1.3.6.1.4.1.21111.1.1.9.1", d.format(myDate)
# dateTime
iso.3.6.1.4.1.21111.1.1.9.1.0
# work mode (note: always returns 0, try with snmpwalk again)
.1.3.6.1.4.1.21111.1.1.5.1
if ("2".equals(workMode)) {
this.workInfo.setWorkMode("Standby mode");
this.isBatMod = false;
} else if ("4".equals(workMode)) {
this.workInfo.setWorkMode("Bypass mode");
this.isBatMod = false;
} else if ("3".equals(workMode)) {
this.workInfo.setWorkMode("Line mode");
this.isBatMod = false;
} else if ("5".equals(workMode)) {
this.isBatMod = true;
this.workInfo.setWorkMode("Battery mode");
} else if ("8".equals(workMode)) {
this.workInfo.setWorkMode("Battery test mode");
} else if ("9".equals(workMode)) {
this.workInfo.setWorkMode("Fault mode");
} else if ("10".equals(workMode)) {
this.workInfo.setWorkMode("ECO mode");
} else if ("11".equals(workMode)) {
this.workInfo.setWorkMode("Converter mode");
}
# backup time, remaining battery time
# @retval "999999999" ... not supported
.1.3.6.1.4.1.21111.1.1.3.3
# temperatur (*0.1)
.1.3.6.1.4.1.21111.1.1.3.13
# inputV (*0.1)
.1.3.6.1.4.1.21111.1.2.4.8.1.2.0
# ouputV (*0.1)
.1.3.6.1.4.1.21111.1.1.2.2
# get frequency (*0.1)
.1.3.6.1.4.1.21111.1.1.2.3
# pv input power (*0.1 Watts) (not working with snmpget)
iso.3.6.1.4.1.21111.1.2.6.3.1.3.0
# battery charging current (*0.1)
iso.3.6.1.4.1.21111.1.1.3.9.0
# POSSIBLE battery voltages
iso.3.6.1.4.1.21111.1.1.3.5.0 = INTEGER: 554
iso.3.6.1.4.1.21111.1.2.3.5.0 = INTEGER: 554 +
iso.3.6.1.4.1.21111.1.2.9.26.0 = INTEGER: 550
# POSSIBLE battery percent
iso.3.6.1.4.1.21111.1.1.3.4.0
iso.3.6.1.4.1.21111.1.2.3.4.0
# battery capacity (*0.1)
.1.3.6.1.4.1.21111.1.1.3.4
@sgelener
Copy link

Hello, some of the oids works however some doesn't. How did you reverse engineer them I am trying SNMP walk however some values doesn't come up like .1.3.6.1.4.1.21111.1.1.2.2. Can you help?

@nickma82
Copy link
Author

nickma82 commented Feb 28, 2024

Unfortunately I can't remember that anymore
I ended up connecting with USB and implementing the readout into NetworkUpsTools (NUT) OSS. https://github.com/nickma82/nut/tree/voltronic-inverter

files changed: networkupstools/nut@master...nickma82:nut:voltronic-inverter

Readout was possible approximately every ~30sek. But it worked.

@sgelener
Copy link

sgelener commented Mar 1, 2024

Thank you for your assistance, Nick. It appears that the device may have been sourced from a single point and rebranded under different names. I managed to locate the Voltronic MIB; however, it seems that most of the data does not yield accurate results for version 1.0. While you may not require or utilize this information, I wanted to share the MIB with you just in case. You can access it via the following link: Powershield SNMPv4 MIB Files

@oetiker
Copy link

oetiker commented Apr 4, 2024

Our Winner Pro answers both on (21111) https://www.circitor.fr/Mibs/Html/N/NextUPSSystems.php and on (43943) content seems largly the same ...

@nickma82
Copy link
Author

nickma82 commented Apr 9, 2024

@sgelener the rebranding I've noticed as well...
Some of the names I found with google-lense (as a tag):

  • Voltronic Power InfiniSolar
  • MixSolar Hybrid Inverter
  • Infinisolar Neovoltaik
  • Mecer Infinisolar
  • Crown Micro

@oetiker nice finding :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment