# sun2000_modbus
[](https://github.com/olivergregorius/sun2000_modbus/actions/workflows/build.yml)
[](https://pypi.org/project/sun2000_modbus/)
[](https://github.com/olivergregorius/sun2000_modbus/blob/HEAD/LICENSE)
[](https://pypi.org/project/sun2000_modbus/)
## Introduction
This library is intended for reading Huawei Sun2000 inverter metrics from registers via Modbus TCP. Access to the Modbus interface is established by connecting
to the device's internal Wifi access point. For information about how to connect to this internal AP consult the official documentation of the device.
## Requirements
- Python >= 3.9
## Disclaimer
By using the content in this repository, you acknowledge that you do so at your own risk. I am not liable for any damages or issues that may arise from use of
this library.
## Usage
sun2000_modbus provides easy and comfortable access to your inverter's Modbus TCP interface. The following example gives a short introduction about how to read
a register:
```python
from sun2000_modbus import inverter
from sun2000_modbus import registers
inverter = inverter.Sun2000(host='192.168.8.1')
inverter.connect()
if inverter.isConnected():
input_power = inverter.read_formatted(registers.InverterEquipmentRegister.InputPower)
print(input_power)
```
The above code snippet prints out the current input power value, e.g. `8.342 kW`.
### Connection configuration
During instantiation of a Sun2000 object the following parameters are accepted:
| Parameter | Description |
|-----------|-------------------------------------------------------------------------------------------------------------------------------------|
| host | IP address |
| port | Port, usually 502, changed to 6607 on newer firmware versions. |
| timeout | Connection timeout |
| wait | Time to wait after connection before a register read can be performed. Increases stability. |
| slave | Number of inverter unit to be read, used in cascading scenarios. Defaults to 0, but some devices need it to be set to other values. |
### Read metrics
Several methods are provided to return the read register values in different formats:
| Method | Description |
|----------------|-------------------------------------------------------------------------------------------------|
| read_raw_value | Returns the raw value converted to its readable form |
| read | Returns the postprocessed value, e.g. a float value is calculated according to its defined gain |
| read_formatted | Returns the postprocessed value suffixed with its unit, if defined |
Looking at the [above example](#usage) the different methods would return the following values for the input power metric:
| Method | Returned value |
|----------------|----------------|
| read_raw_value | 8342 |
| read | 8.342 |
| read_formatted | 8.342 kW |
Furthermore, a method `read_range` exists accepting the address of the register to start reading and either a quantity of registers or the address of the last
register to be read. The result is returned as byte-string for further processing.
### Write settings
For writing a register the `write` method can be used, taking the register address and the value as arguments.
## Registers
The following registers are provided by the Sun2000's Modbus interface and can be read accordingly. Documentation can be found
[here](https://javierin.com/wp-content/uploads/sites/2/2021/09/Solar-Inverter-Modbus-Interface-Definitions.pdf).
### InverterEquipmentRegister
| Name | Type | Gain | Unit | Access Type |
|-----------------------------------------|------------------------|------|------|-------------|
| Model | String | | | RO |
| SN | String | | | RO |
| PN | String | | | RO |
| FirmwareVerion | String | | | RO |
| SoftwareVerion | String | | | RO |
| ProtocolVerion | String | | | RO |
| ModelID | Number | 1 | | RO |
| NumberOfPVStrings | Number | 1 | | RO |
| NumberOfMPPTrackers | Number | 1 | | RO |
| RatedPower | Number | 1 | W | RO |
| MaximumActivePower | Number | 1 | W | RO |
| MaximumApparentPower | Number | 1000 | kVA | RO |
| MaximumReactivePowerFedToTheGrid | Number | 1000 | kvar | RO |
| MaximumReactivePowerAbsorbedFromTheGrid | Number | 1000 | kvar | RO |
| State1 | Binary String/Bitfield | | | RO |
| State2 | Binary String/Bitfield | | | RO |
| State3 | Binary String/Bitfield | | | RO |
| Alarm1 | Binary String/Bitfield | | | RO |
| Alarm2 | Binary String/Bitfield | | | RO |
| Alarm3 | Binary String/Bitfield | | | RO |
| PV1Voltage | Number | 10 | V | RO |
| PV1Current | Number | 100 | A | RO |
| PV2Voltage | Number | 10 | V | RO |
| PV2Current | Number | 100 | A | RO |
| PV3Voltage | Number | 10 | V | RO |
| PV3Current | Number | 100 | A | RO |
| PV4Voltage | Number | 10 | V | RO |
| PV4Current | Number | 100 | A | RO |
| PV5Voltage | Number | 10 | V | RO |
| PV5Current | Number | 100 | A | RO |
| PV6Voltage | Number | 10 | V | RO |
| PV6Current | Number | 100 | A | RO |
| PV7Voltage | Number | 10 | V | RO |
| PV7Current | Number | 100 | A | RO |
| PV8Voltage | Number | 10 | V | RO |
| PV8Current | Number | 100 | A | RO |
| PV9Voltage | Number | 10 | V | RO |
| PV9Current | Number | 100 | A | RO |
| PV10Voltage | Number | 10 | V | RO |
| PV10Current | Number | 100 | A | RO |
| PV11Voltage | Number | 10 | V | RO |
| PV11Current | Number | 100 | A | RO |
| PV12Voltage | Number | 10 | V | RO |
| PV12Current | Number | 100 | A | RO |
| PV13Voltage | Number | 10 | V | RO |
| PV13Current | Number | 100 | A | RO |
| PV14Voltage | Number | 10 | V | RO |
| PV14Current | Number | 100 | A | RO |
| PV15Voltage | Number | 10 | V | RO |
| PV15Current | Number | 100 | A | RO |
| PV16Voltage | Number | 10 | V | RO |
| PV16Current | Number | 100 | A | RO |
| PV17Voltage | Number | 10 | V | RO |
| PV17Current | Number | 100 | A | RO |
| PV18Voltage | Number | 10 | V | RO |
| PV18Current | Number | 100 | A | RO |
| PV19Voltage | Number | 10 | V | RO |
| PV19Current | Number | 100 | A | RO |
| PV20Voltage | Number | 10 | V | RO |
| PV20Current | Number | 100 | A | RO |
| PV21Voltage | Number | 10 | V | RO |
| PV21Current | Number | 100 | A | RO |
| PV22Voltage | Number | 10 | V | RO |
| PV22Current | Number | 100 | A | RO |
| PV23Voltage | Number | 10 | V | RO |
| PV23Current | Number | 100 | A | RO |
| PV24Voltage | Number | 10 | V | RO |
| PV24Current | Number | 100 | A | RO |
| InputPower | Number | 1 | W | RO |
| LineVoltageBetweenPhasesAAndB | Number | 10 | V | RO |
| LineVoltageBetweenPhasesBAndC | Number | 10 | V | RO |
| LineVoltageBetweenPhasesCAndA | Number | 10 | V | RO |
| PhaseAVoltage | Number | 10 | V | RO |
| PhaseBVoltage | Number | 10 | V | RO |
| PhaseCVoltage | Number | 10 | V | RO |
| PhaseACurrent | Number | 1000 | A | RO |
| PhaseBCurrent | Number | 1000 | A | RO |
| PhaseCCurrent | Number | 1000 | A | RO |
| PeakActivePowerOfCurrentDay | Number | 1 | W | RO |
| ActivePower | Number | 1 | W | RO |
| ReactivePower | Number | 1000 | kvar | RO |
| PowerFactor | Number | 1000 | | RO |
| GridFrequency | Number | 100 | Hz | RO |
| Efficiency | Number | 100 | % | RO |
| InternalTemperature | Number | 10 | °C | RO |
| InsulationResistance | Number | 1000 | MOhm | RO |
| DeviceStatus | Number | 1 | | RO |
| FaultCode | Number | 1 | | RO |
| StartupTime | Number | 1 | | RO |
| ShutdownTime | Number | 1 | | RO |
| AccumulatedEnergyYield | Number | 100 | kWh | RO |
| DailyEnergyYield | Number | 100 | kWh | RO |
| ActiveAdjustmentMode | Number | 1 | | RO |
| ActiveAdjustmentValue | Number | 1 | | RO |
| ActiveAdjustmentCommand | Number | 1 | | RO |
| ReactiveAdjustmentMode | Number | 1 | | RO |
| ReactiveAdjustmentValue | Number | 1 | | RO |
| ReactiveAdjustmentCommand | Number | 1 | | RO |
| PowerMeterCollectionActivePower | Number | 1 | W | RO |
| TotalNumberOfOptimizers | Number | 1 | | RO |
| NumberOfOnlineOptimizers | Number | 1 | | RO |
| FeatureData | Number | 1 | | RO |
| SystemTime | Number | 1 | | RW |
| QUCharacteristicCurveMode | Number | 1 | | RW |
| QUDispatchTriggerPower | Number | 1 | % | RW |
| FixedActivePowerDeratedInKW | Number | 10 | kW | RW |
| ReactivePowerCompensationInPF | Number | 1000 | | RW |
| ReactivePowerCompensationQS | Number | 1000 | | RW |
| ActivePowerPercentageDerating | Number | 10 | % | RW |
| FixedActivePowerDeratedInW | Number | 1 | W | RW |
| ReactivePowerCompensationAtNight | Number | 1000 | kvar | RW |
| CosPhiPPnCharacteristicCurve | Bytestring | | | RW |
| QUCharacteristicCurve | Bytestring | | | RW |
| PFUCharacteristicCurve | Bytestring | | | RW |
| ReactivePowerAdjustmentTime | Number | 1 | s | RW |
| QUPowerPercentageToExitScheduling | Number | 1 | % | RW |
| Startup | Number | 1 | | WO |
| Shutdown | Number | 1 | | WO |
| GridCode | Number | 1 | | RW |
| ReactivePowerChangeGradient | Number | 1000 | %/s | RW |
| ActivePowerChangeGradient | Number | 1000 | %/s | RW |
| ScheduleInstructionValidDuration | Number | 1 | s | RW |
| TimeZone | Number | 1 | min | RW |
### BatteryEquipmentRegister
| Name | Type | Gain | Unit | Access Type |
|----------------------------------------|------------|------|---------|-------------|
| RunningStatus | Number | 1 | | RO |
| WorkingModeSettings | Number | 1 | | RW |
| BusVoltage | Number | 10 | V | RO |
| BusCurrent | Number | 10 | A | RO |
| ChargeDischargePower | Number | 1 | W | RO |
| MaximumChargePower | Number | 1 | W | RO |
| MaximumDischargePower | Number | 1 | W | RO |
| RatedCapacity | Number | 1 | Wh | RO |
| SOC | Number | 10 | % | RO |
| BackupPowerSOC | Number | 10 | % | RW |
| TotalCharge | Number | 100 | kWh | RO |
| TotalDischarge | Number | 100 | kWh | RO |
| CurrentDayChargeCapacity | Number | 100 | kWh | RO |
| CurrentDayDischargeCapacity | Number | 100 | kWh | RO |
| TimeOfUseElectricityPricePeriods | Bytestring | | | RW |
| MaximumChargingPower | Number | 1 | W | RW |
| MaximumDischargingPower | Number | 1 | W | RW |
| ChargingCutoffCapacity | Number | 10 | % | RW |
| DischargeCutoffCapacity | Number | 10 | % | RW |
| ForcedChargingAndDischargingPeriod | Number | 1 | minutes | RW |
| ChargeFromGridFunction | Number | 1 | | RW |
| GridChargeCutoffSOC | Number | 10 | % | RW |
| ForcibleChargeDischarge | Number | 1 | | WO |
| FixedChargingAndDischargingPeriods | Bytestring | | | RW |
| PowerOfChargeFromGrid | Number | 0.1 | W | RW |
| MaximumPowerOfChargeFromGrid | Number | 0.1 | W | RW |
| ForcibleChargeDischargeSettingMode | Number | 1 | | RW |
| ForcibleChargePower | Number | 0.1 | W | RW |
| ForcibleDischargePower | Number | 0.1 | W | RW |
| TimeOfUseChargingAndDischargingPeriods | Bytestring | | | RW |
| ExcessPVEnergyUseInTOU | Number | 1 | | RW |
| ActivePowerControlMode | Number | 1 | | RW |
| MaximumFeedGridPowerInKW | Number | 1000 | kW | RW |
| MaximumFeedGridPowerInPercentage | Number | 10 | % | RW |
| MaximumChargeFromGridPower | Number | 0.1 | W | RW |
| SwitchToOffGrid | Number | 1 | | RW |
| VoltageInIndependentOperation | Number | 1 | | RW |
| Unit1ProductModel | Number | 1 | | RW |
| Unit1SN | String | | | RO |
| Unit1No | Number | 1 | | RW |
| Unit1SoftwareVersion | String | | | RO |
| Unit1DCDCVersion | String | | | RO |
| Unit1BMSVersion | String | | | RO |
| Unit1RunningStatus | Number | 1 | | RO |
| Unit1WorkingMode | Number | 1 | | RO |
| Unit1BusVoltage | Number | 10 | V | RO |
| Unit1BusCurrent | Number | 10 | A | RO |
| Unit1BatterySOC | Number | 10 | % | RO |
| Unit1ChargeAndDischargePower | Number | 1 | W | RO |
| Unit1RemainingChargeDischargeTime | Number | 1 | minutes | RO |
| Unit1RatedChargePower | Number | 1 | W | RO |
| Unit1RatedDischargePower | Number | 1 | W | RO |
| Unit1CurrentDayChargeCapacity | Number | 100 | kWh | RO |
| Unit1CurrentDayDischargeCapacity | Number | 100 | kWh | RO |
| Unit1TotalCharge | Number | 100 | kWh | RO |
| Unit1TotalDischarge | Number | 100 | kWh | RO |
| Unit1BatteryTemperature | Number | 10 | °C | RO |
| Unit1FaultID | Number | 1 | | RO |
| Unit2ProductModel | Number | 1 | | RW |
| Unit2SN | String | | | RO |
| Unit2No | Number | 1 | | RW |
| Unit2SoftwareVersion | String | | | RO |
| Unit2RunningStatus | Number | 1 | | RO |
| Unit2BusVoltage | Number | 10 | V | RO |
| Unit2BusCurrent | Number | 10 | A | RO |
| Unit2BatterySOC | Number | 10 | % | RO |
| Unit2ChargeAndDischargePower | Number | 1 | W | RO |
| Unit2CurrentDayChargeCapacity | Number | 100 | kWh | RO |
| Unit2CurrentDayDischargeCapacity | Number | 100 | kWh | RO |
| Unit2TotalCharge | Number | 100 | kWh | RO |
| Unit2TotalDischarge | Number | 100 | kWh | RO |
| Unit2BatteryTemperature | Number | 10 | °C | RO |
| Unit1BatteryPack1SN | String | | | RO |
| Unit1BatteryPack1No | Number | 1 | | RW |
| Unit1BatteryPack1FirmwareVersion | String | | | RO |
| Unit1BatteryPack1WorkingStatus | Number | 1 | | RO |
| Unit1BatteryPack1Voltage | Number | 10 | V | RO |
| Unit1BatteryPack1Current | Number | 10 | A | RO |
| Unit1BatteryPack1SOC | Number | 10 | % | RO |
| Unit1BatteryPack1ChargeDischargePower | Number | 1 | W | RO |
| Unit1BatteryPack1TotalCharge | Number | 100 | kWh | RO |
| Unit1BatteryPack1TotalDischarge | Number | 100 | kWh | RO |
| Unit1BatteryPack1MinimumTemperature | Number | 10 | °C | RO |
| Unit1BatteryPack1MaximumTemperature | Number | 10 | °C | RO |
| Unit1BatteryPack2SN | String | | | RO |
| Unit1BatteryPack2No | Number | 1 | | RW |
| Unit1BatteryPack2FirmwareVersion | String | | | RO |
| Unit1BatteryPack2WorkingStatus | Number | 1 | | RO |
| Unit1BatteryPack2Voltage | Number | 10 | V | RO |
| Unit1BatteryPack2Current | Number | 10 | A | RO |
| Unit1BatteryPack2SOC | Number | 10 | % | RO |
| Unit1BatteryPack2ChargeDischargePower | Number | 1 | W | RO |
| Unit1BatteryPack2TotalCharge | Number | 100 | kWh | RO |
| Unit1BatteryPack2TotalDischarge | Number | 100 | kWh | RO |
| Unit1BatteryPack2MinimumTemperature | Number | 10 | °C | RO |
| Unit1BatteryPack2MaximumTemperature | Number | 10 | °C | RO |
| Unit1BatteryPack3SN | String | | | RO |
| Unit1BatteryPack3No | Number | 1 | | RW |
| Unit1BatteryPack3FirmwareVersion | String | | | RO |
| Unit1BatteryPack3WorkingStatus | Number | 1 | | RO |
| Unit1BatteryPack3Voltage | Number | 10 | V | RO |
| Unit1BatteryPack3Current | Number | 10 | A | RO |
| Unit1BatteryPack3SOC | Number | 10 | % | RO |
| Unit1BatteryPack3ChargeDischargePower | Number | 1 | W | RO |
| Unit1BatteryPack3TotalCharge | Number | 100 | kWh | RO |
| Unit1BatteryPack3TotalDischarge | Number | 100 | kWh | RO |
| Unit1BatteryPack3MinimumTemperature | Number | 10 | °C | RO |
| Unit1BatteryPack3MaximumTemperature | Number | 10 | °C | RO |
| Unit2BatteryPack1SN | String | | | RO |
| Unit2BatteryPack1No | Number | 1 | | RW |
| Unit2BatteryPack1FirmwareVersion | String | | | RO |
| Unit2BatteryPack1WorkingStatus | Number | 1 | | RO |
| Unit2BatteryPack1Voltage | Number | 10 | V | RO |
| Unit2BatteryPack1Current | Number | 10 | A | RO |
| Unit2BatteryPack1SOC | Number | 10 | % | RO |
| Unit2BatteryPack1ChargeDischargePower | Number | 1 | W | RO |
| Unit2BatteryPack1TotalCharge | Number | 100 | kWh | RO |
| Unit2BatteryPack1TotalDischarge | Number | 100 | kWh | RO |
| Unit2BatteryPack1MinimumTemperature | Number | 10 | °C | RO |
| Unit2BatteryPack1MaximumTemperature | Number | 10 | °C | RO |
| Unit2BatteryPack2SN | String | | | RO |
| Unit2BatteryPack2No | Number | 1 | | RW |
| Unit2BatteryPack2FirmwareVersion | String | | | RO |
| Unit2BatteryPack2WorkingStatus | Number | 1 | | RO |
| Unit2BatteryPack2Voltage | Number | 10 | V | RO |
| Unit2BatteryPack2Current | Number | 10 | A | RO |
| Unit2BatteryPack2SOC | Number | 10 | % | RO |
| Unit2BatteryPack2ChargeDischargePower | Number | 1 | W | RO |
| Unit2BatteryPack2TotalCharge | Number | 100 | kWh | RO |
| Unit2BatteryPack2TotalDischarge | Number | 100 | kWh | RO |
| Unit2BatteryPack2MinimumTemperature | Number | 10 | °C | RO |
| Unit2BatteryPack2MaximumTemperature | Number | 10 | °C | RO |
| Unit2BatteryPack3SN | String | | | RO |
| Unit2BatteryPack3No | Number | 1 | | RW |
| Unit2BatteryPack3FirmwareVersion | String | | | RO |
| Unit2BatteryPack3WorkingStatus | Number | 1 | | RO |
| Unit2BatteryPack3Voltage | Number | 10 | V | RO |
| Unit2BatteryPack3Current | Number | 10 | A | RO |
| Unit2BatteryPack3SOC | Number | 10 | % | RO |
| Unit2BatteryPack3ChargeDischargePower | Number | 1 | W | RO |
| Unit2BatteryPack3TotalCharge | Number | 100 | kWh | RO |
| Unit2BatteryPack3TotalDischarge | Number | 100 | kWh | RO |
| Unit2BatteryPack3MinimumTemperature | Number | 10 | °C | RO |
| Unit2BatteryPack3MaximumTemperature | Number | 10 | °C | RO |
### MeterEquipmentRegister
| Name | Type | Gain | Unit | Access Type |
|---------------------------|--------|------|------|-------------|
| MeterStatus | Number | 1 | | RO |
| APhaseVoltage | Number | 10 | V | RO |
| BPhaseVoltage | Number | 10 | V | RO |
| CPhaseVoltage | Number | 10 | V | RO |
| APhaseCurrent | Number | 100 | A | RO |
| BPhaseCurrent | Number | 100 | A | RO |
| CPhaseCurrent | Number | 100 | A | RO |
| ActivePower | Number | 1 | W | RO |
| ReactivePower | Number | 1 | var | RO |
| PowerFactor | Number | 1000 | | RO |
| GridFrequency | Number | 100 | Hz | RO |
| PositiveActiveElectricity | Number | 100 | kWh | RO |
| ReverseActivePower | Number | 100 | kWh | RO |
| AccumulatedReactivePower | Number | 100 | kvar | RO |
| MeterType | Number | 1 | | RO |
| ABLineVoltage | Number | 10 | V | RO |
| BCLineVoltage | Number | 10 | V | RO |
| CALineVoltage | Number | 10 | V | RO |
| APhaseActivePower | Number | 1 | W | RO |
| BPhaseActivePower | Number | 1 | W | RO |
| CPhaseActivePower | Number | 1 | W | RO |
| MeterModelDetectionResult | Number | 1 | | RO |
Raw data
{
"_id": null,
"home_page": null,
"name": "sun2000_modbus",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "sun2000, modbus, photovoltaic",
"author": null,
"author_email": "Oliver Gregorius <oliver@gregorius.dev>",
"download_url": "https://files.pythonhosted.org/packages/84/cf/bd51198079a5d623cb84b61176b2a2c18e5acb8f2c7802eacc612e1ab4a3/sun2000_modbus-2.5.0.tar.gz",
"platform": null,
"description": "# sun2000_modbus\n\n[](https://github.com/olivergregorius/sun2000_modbus/actions/workflows/build.yml)\n[](https://pypi.org/project/sun2000_modbus/)\n[](https://github.com/olivergregorius/sun2000_modbus/blob/HEAD/LICENSE)\n[](https://pypi.org/project/sun2000_modbus/)\n\n## Introduction\n\nThis library is intended for reading Huawei Sun2000 inverter metrics from registers via Modbus TCP. Access to the Modbus interface is established by connecting\nto the device's internal Wifi access point. For information about how to connect to this internal AP consult the official documentation of the device.\n\n## Requirements\n\n- Python >= 3.9\n\n## Disclaimer\n\nBy using the content in this repository, you acknowledge that you do so at your own risk. I am not liable for any damages or issues that may arise from use of\nthis library.\n\n## Usage\n\nsun2000_modbus provides easy and comfortable access to your inverter's Modbus TCP interface. The following example gives a short introduction about how to read\na register:\n\n```python\nfrom sun2000_modbus import inverter\nfrom sun2000_modbus import registers\n\ninverter = inverter.Sun2000(host='192.168.8.1')\ninverter.connect()\nif inverter.isConnected():\n input_power = inverter.read_formatted(registers.InverterEquipmentRegister.InputPower)\n print(input_power)\n```\n\nThe above code snippet prints out the current input power value, e.g. `8.342 kW`.\n\n### Connection configuration\n\nDuring instantiation of a Sun2000 object the following parameters are accepted:\n\n| Parameter | Description |\n|-----------|-------------------------------------------------------------------------------------------------------------------------------------|\n| host | IP address |\n| port | Port, usually 502, changed to 6607 on newer firmware versions. |\n| timeout | Connection timeout |\n| wait | Time to wait after connection before a register read can be performed. Increases stability. |\n| slave | Number of inverter unit to be read, used in cascading scenarios. Defaults to 0, but some devices need it to be set to other values. |\n\n### Read metrics\n\nSeveral methods are provided to return the read register values in different formats:\n\n| Method | Description |\n|----------------|-------------------------------------------------------------------------------------------------|\n| read_raw_value | Returns the raw value converted to its readable form |\n| read | Returns the postprocessed value, e.g. a float value is calculated according to its defined gain |\n| read_formatted | Returns the postprocessed value suffixed with its unit, if defined |\n\nLooking at the [above example](#usage) the different methods would return the following values for the input power metric:\n\n| Method | Returned value |\n|----------------|----------------|\n| read_raw_value | 8342 |\n| read | 8.342 |\n| read_formatted | 8.342 kW |\n\nFurthermore, a method `read_range` exists accepting the address of the register to start reading and either a quantity of registers or the address of the last\nregister to be read. The result is returned as byte-string for further processing.\n\n### Write settings\n\nFor writing a register the `write` method can be used, taking the register address and the value as arguments.\n\n## Registers\n\nThe following registers are provided by the Sun2000's Modbus interface and can be read accordingly. Documentation can be found\n[here](https://javierin.com/wp-content/uploads/sites/2/2021/09/Solar-Inverter-Modbus-Interface-Definitions.pdf).\n\n### InverterEquipmentRegister\n\n| Name | Type | Gain | Unit | Access Type |\n|-----------------------------------------|------------------------|------|------|-------------|\n| Model | String | | | RO |\n| SN | String | | | RO |\n| PN | String | | | RO |\n| FirmwareVerion | String | | | RO |\n| SoftwareVerion | String | | | RO |\n| ProtocolVerion | String | | | RO |\n| ModelID | Number | 1 | | RO |\n| NumberOfPVStrings | Number | 1 | | RO |\n| NumberOfMPPTrackers | Number | 1 | | RO |\n| RatedPower | Number | 1 | W | RO |\n| MaximumActivePower | Number | 1 | W | RO |\n| MaximumApparentPower | Number | 1000 | kVA | RO |\n| MaximumReactivePowerFedToTheGrid | Number | 1000 | kvar | RO |\n| MaximumReactivePowerAbsorbedFromTheGrid | Number | 1000 | kvar | RO |\n| State1 | Binary String/Bitfield | | | RO |\n| State2 | Binary String/Bitfield | | | RO |\n| State3 | Binary String/Bitfield | | | RO |\n| Alarm1 | Binary String/Bitfield | | | RO |\n| Alarm2 | Binary String/Bitfield | | | RO |\n| Alarm3 | Binary String/Bitfield | | | RO |\n| PV1Voltage | Number | 10 | V | RO |\n| PV1Current | Number | 100 | A | RO |\n| PV2Voltage | Number | 10 | V | RO |\n| PV2Current | Number | 100 | A | RO |\n| PV3Voltage | Number | 10 | V | RO |\n| PV3Current | Number | 100 | A | RO |\n| PV4Voltage | Number | 10 | V | RO |\n| PV4Current | Number | 100 | A | RO |\n| PV5Voltage | Number | 10 | V | RO |\n| PV5Current | Number | 100 | A | RO |\n| PV6Voltage | Number | 10 | V | RO |\n| PV6Current | Number | 100 | A | RO |\n| PV7Voltage | Number | 10 | V | RO |\n| PV7Current | Number | 100 | A | RO |\n| PV8Voltage | Number | 10 | V | RO |\n| PV8Current | Number | 100 | A | RO |\n| PV9Voltage | Number | 10 | V | RO |\n| PV9Current | Number | 100 | A | RO |\n| PV10Voltage | Number | 10 | V | RO |\n| PV10Current | Number | 100 | A | RO |\n| PV11Voltage | Number | 10 | V | RO |\n| PV11Current | Number | 100 | A | RO |\n| PV12Voltage | Number | 10 | V | RO |\n| PV12Current | Number | 100 | A | RO |\n| PV13Voltage | Number | 10 | V | RO |\n| PV13Current | Number | 100 | A | RO |\n| PV14Voltage | Number | 10 | V | RO |\n| PV14Current | Number | 100 | A | RO |\n| PV15Voltage | Number | 10 | V | RO |\n| PV15Current | Number | 100 | A | RO |\n| PV16Voltage | Number | 10 | V | RO |\n| PV16Current | Number | 100 | A | RO |\n| PV17Voltage | Number | 10 | V | RO |\n| PV17Current | Number | 100 | A | RO |\n| PV18Voltage | Number | 10 | V | RO |\n| PV18Current | Number | 100 | A | RO |\n| PV19Voltage | Number | 10 | V | RO |\n| PV19Current | Number | 100 | A | RO |\n| PV20Voltage | Number | 10 | V | RO |\n| PV20Current | Number | 100 | A | RO |\n| PV21Voltage | Number | 10 | V | RO |\n| PV21Current | Number | 100 | A | RO |\n| PV22Voltage | Number | 10 | V | RO |\n| PV22Current | Number | 100 | A | RO |\n| PV23Voltage | Number | 10 | V | RO |\n| PV23Current | Number | 100 | A | RO |\n| PV24Voltage | Number | 10 | V | RO |\n| PV24Current | Number | 100 | A | RO |\n| InputPower | Number | 1 | W | RO |\n| LineVoltageBetweenPhasesAAndB | Number | 10 | V | RO |\n| LineVoltageBetweenPhasesBAndC | Number | 10 | V | RO |\n| LineVoltageBetweenPhasesCAndA | Number | 10 | V | RO |\n| PhaseAVoltage | Number | 10 | V | RO |\n| PhaseBVoltage | Number | 10 | V | RO |\n| PhaseCVoltage | Number | 10 | V | RO |\n| PhaseACurrent | Number | 1000 | A | RO |\n| PhaseBCurrent | Number | 1000 | A | RO |\n| PhaseCCurrent | Number | 1000 | A | RO |\n| PeakActivePowerOfCurrentDay | Number | 1 | W | RO |\n| ActivePower | Number | 1 | W | RO |\n| ReactivePower | Number | 1000 | kvar | RO |\n| PowerFactor | Number | 1000 | | RO |\n| GridFrequency | Number | 100 | Hz | RO |\n| Efficiency | Number | 100 | % | RO |\n| InternalTemperature | Number | 10 | \u00b0C | RO |\n| InsulationResistance | Number | 1000 | MOhm | RO |\n| DeviceStatus | Number | 1 | | RO |\n| FaultCode | Number | 1 | | RO |\n| StartupTime | Number | 1 | | RO |\n| ShutdownTime | Number | 1 | | RO |\n| AccumulatedEnergyYield | Number | 100 | kWh | RO |\n| DailyEnergyYield | Number | 100 | kWh | RO |\n| ActiveAdjustmentMode | Number | 1 | | RO |\n| ActiveAdjustmentValue | Number | 1 | | RO |\n| ActiveAdjustmentCommand | Number | 1 | | RO |\n| ReactiveAdjustmentMode | Number | 1 | | RO |\n| ReactiveAdjustmentValue | Number | 1 | | RO |\n| ReactiveAdjustmentCommand | Number | 1 | | RO |\n| PowerMeterCollectionActivePower | Number | 1 | W | RO |\n| TotalNumberOfOptimizers | Number | 1 | | RO |\n| NumberOfOnlineOptimizers | Number | 1 | | RO |\n| FeatureData | Number | 1 | | RO |\n| SystemTime | Number | 1 | | RW |\n| QUCharacteristicCurveMode | Number | 1 | | RW |\n| QUDispatchTriggerPower | Number | 1 | % | RW |\n| FixedActivePowerDeratedInKW | Number | 10 | kW | RW |\n| ReactivePowerCompensationInPF | Number | 1000 | | RW |\n| ReactivePowerCompensationQS | Number | 1000 | | RW |\n| ActivePowerPercentageDerating | Number | 10 | % | RW |\n| FixedActivePowerDeratedInW | Number | 1 | W | RW |\n| ReactivePowerCompensationAtNight | Number | 1000 | kvar | RW |\n| CosPhiPPnCharacteristicCurve | Bytestring | | | RW |\n| QUCharacteristicCurve | Bytestring | | | RW |\n| PFUCharacteristicCurve | Bytestring | | | RW |\n| ReactivePowerAdjustmentTime | Number | 1 | s | RW |\n| QUPowerPercentageToExitScheduling | Number | 1 | % | RW |\n| Startup | Number | 1 | | WO |\n| Shutdown | Number | 1 | | WO |\n| GridCode | Number | 1 | | RW |\n| ReactivePowerChangeGradient | Number | 1000 | %/s | RW |\n| ActivePowerChangeGradient | Number | 1000 | %/s | RW |\n| ScheduleInstructionValidDuration | Number | 1 | s | RW |\n| TimeZone | Number | 1 | min | RW |\n\n### BatteryEquipmentRegister\n\n| Name | Type | Gain | Unit | Access Type |\n|----------------------------------------|------------|------|---------|-------------|\n| RunningStatus | Number | 1 | | RO |\n| WorkingModeSettings | Number | 1 | | RW |\n| BusVoltage | Number | 10 | V | RO |\n| BusCurrent | Number | 10 | A | RO |\n| ChargeDischargePower | Number | 1 | W | RO |\n| MaximumChargePower | Number | 1 | W | RO |\n| MaximumDischargePower | Number | 1 | W | RO |\n| RatedCapacity | Number | 1 | Wh | RO |\n| SOC | Number | 10 | % | RO |\n| BackupPowerSOC | Number | 10 | % | RW |\n| TotalCharge | Number | 100 | kWh | RO |\n| TotalDischarge | Number | 100 | kWh | RO |\n| CurrentDayChargeCapacity | Number | 100 | kWh | RO |\n| CurrentDayDischargeCapacity | Number | 100 | kWh | RO |\n| TimeOfUseElectricityPricePeriods | Bytestring | | | RW |\n| MaximumChargingPower | Number | 1 | W | RW |\n| MaximumDischargingPower | Number | 1 | W | RW |\n| ChargingCutoffCapacity | Number | 10 | % | RW |\n| DischargeCutoffCapacity | Number | 10 | % | RW |\n| ForcedChargingAndDischargingPeriod | Number | 1 | minutes | RW |\n| ChargeFromGridFunction | Number | 1 | | RW |\n| GridChargeCutoffSOC | Number | 10 | % | RW |\n| ForcibleChargeDischarge | Number | 1 | | WO |\n| FixedChargingAndDischargingPeriods | Bytestring | | | RW |\n| PowerOfChargeFromGrid | Number | 0.1 | W | RW |\n| MaximumPowerOfChargeFromGrid | Number | 0.1 | W | RW |\n| ForcibleChargeDischargeSettingMode | Number | 1 | | RW |\n| ForcibleChargePower | Number | 0.1 | W | RW |\n| ForcibleDischargePower | Number | 0.1 | W | RW |\n| TimeOfUseChargingAndDischargingPeriods | Bytestring | | | RW |\n| ExcessPVEnergyUseInTOU | Number | 1 | | RW |\n| ActivePowerControlMode | Number | 1 | | RW |\n| MaximumFeedGridPowerInKW | Number | 1000 | kW | RW |\n| MaximumFeedGridPowerInPercentage | Number | 10 | % | RW |\n| MaximumChargeFromGridPower | Number | 0.1 | W | RW |\n| SwitchToOffGrid | Number | 1 | | RW |\n| VoltageInIndependentOperation | Number | 1 | | RW |\n| Unit1ProductModel | Number | 1 | | RW |\n| Unit1SN | String | | | RO |\n| Unit1No | Number | 1 | | RW |\n| Unit1SoftwareVersion | String | | | RO |\n| Unit1DCDCVersion | String | | | RO |\n| Unit1BMSVersion | String | | | RO |\n| Unit1RunningStatus | Number | 1 | | RO |\n| Unit1WorkingMode | Number | 1 | | RO |\n| Unit1BusVoltage | Number | 10 | V | RO |\n| Unit1BusCurrent | Number | 10 | A | RO |\n| Unit1BatterySOC | Number | 10 | % | RO |\n| Unit1ChargeAndDischargePower | Number | 1 | W | RO |\n| Unit1RemainingChargeDischargeTime | Number | 1 | minutes | RO |\n| Unit1RatedChargePower | Number | 1 | W | RO |\n| Unit1RatedDischargePower | Number | 1 | W | RO |\n| Unit1CurrentDayChargeCapacity | Number | 100 | kWh | RO |\n| Unit1CurrentDayDischargeCapacity | Number | 100 | kWh | RO |\n| Unit1TotalCharge | Number | 100 | kWh | RO |\n| Unit1TotalDischarge | Number | 100 | kWh | RO |\n| Unit1BatteryTemperature | Number | 10 | \u00b0C | RO |\n| Unit1FaultID | Number | 1 | | RO |\n| Unit2ProductModel | Number | 1 | | RW |\n| Unit2SN | String | | | RO |\n| Unit2No | Number | 1 | | RW |\n| Unit2SoftwareVersion | String | | | RO |\n| Unit2RunningStatus | Number | 1 | | RO |\n| Unit2BusVoltage | Number | 10 | V | RO |\n| Unit2BusCurrent | Number | 10 | A | RO |\n| Unit2BatterySOC | Number | 10 | % | RO |\n| Unit2ChargeAndDischargePower | Number | 1 | W | RO |\n| Unit2CurrentDayChargeCapacity | Number | 100 | kWh | RO |\n| Unit2CurrentDayDischargeCapacity | Number | 100 | kWh | RO |\n| Unit2TotalCharge | Number | 100 | kWh | RO |\n| Unit2TotalDischarge | Number | 100 | kWh | RO |\n| Unit2BatteryTemperature | Number | 10 | \u00b0C | RO |\n| Unit1BatteryPack1SN | String | | | RO |\n| Unit1BatteryPack1No | Number | 1 | | RW |\n| Unit1BatteryPack1FirmwareVersion | String | | | RO |\n| Unit1BatteryPack1WorkingStatus | Number | 1 | | RO |\n| Unit1BatteryPack1Voltage | Number | 10 | V | RO |\n| Unit1BatteryPack1Current | Number | 10 | A | RO |\n| Unit1BatteryPack1SOC | Number | 10 | % | RO |\n| Unit1BatteryPack1ChargeDischargePower | Number | 1 | W | RO |\n| Unit1BatteryPack1TotalCharge | Number | 100 | kWh | RO |\n| Unit1BatteryPack1TotalDischarge | Number | 100 | kWh | RO |\n| Unit1BatteryPack1MinimumTemperature | Number | 10 | \u00b0C | RO |\n| Unit1BatteryPack1MaximumTemperature | Number | 10 | \u00b0C | RO |\n| Unit1BatteryPack2SN | String | | | RO |\n| Unit1BatteryPack2No | Number | 1 | | RW |\n| Unit1BatteryPack2FirmwareVersion | String | | | RO |\n| Unit1BatteryPack2WorkingStatus | Number | 1 | | RO |\n| Unit1BatteryPack2Voltage | Number | 10 | V | RO |\n| Unit1BatteryPack2Current | Number | 10 | A | RO |\n| Unit1BatteryPack2SOC | Number | 10 | % | RO |\n| Unit1BatteryPack2ChargeDischargePower | Number | 1 | W | RO |\n| Unit1BatteryPack2TotalCharge | Number | 100 | kWh | RO |\n| Unit1BatteryPack2TotalDischarge | Number | 100 | kWh | RO |\n| Unit1BatteryPack2MinimumTemperature | Number | 10 | \u00b0C | RO |\n| Unit1BatteryPack2MaximumTemperature | Number | 10 | \u00b0C | RO |\n| Unit1BatteryPack3SN | String | | | RO |\n| Unit1BatteryPack3No | Number | 1 | | RW |\n| Unit1BatteryPack3FirmwareVersion | String | | | RO |\n| Unit1BatteryPack3WorkingStatus | Number | 1 | | RO |\n| Unit1BatteryPack3Voltage | Number | 10 | V | RO |\n| Unit1BatteryPack3Current | Number | 10 | A | RO |\n| Unit1BatteryPack3SOC | Number | 10 | % | RO |\n| Unit1BatteryPack3ChargeDischargePower | Number | 1 | W | RO |\n| Unit1BatteryPack3TotalCharge | Number | 100 | kWh | RO |\n| Unit1BatteryPack3TotalDischarge | Number | 100 | kWh | RO |\n| Unit1BatteryPack3MinimumTemperature | Number | 10 | \u00b0C | RO |\n| Unit1BatteryPack3MaximumTemperature | Number | 10 | \u00b0C | RO |\n| Unit2BatteryPack1SN | String | | | RO |\n| Unit2BatteryPack1No | Number | 1 | | RW |\n| Unit2BatteryPack1FirmwareVersion | String | | | RO |\n| Unit2BatteryPack1WorkingStatus | Number | 1 | | RO |\n| Unit2BatteryPack1Voltage | Number | 10 | V | RO |\n| Unit2BatteryPack1Current | Number | 10 | A | RO |\n| Unit2BatteryPack1SOC | Number | 10 | % | RO |\n| Unit2BatteryPack1ChargeDischargePower | Number | 1 | W | RO |\n| Unit2BatteryPack1TotalCharge | Number | 100 | kWh | RO |\n| Unit2BatteryPack1TotalDischarge | Number | 100 | kWh | RO |\n| Unit2BatteryPack1MinimumTemperature | Number | 10 | \u00b0C | RO |\n| Unit2BatteryPack1MaximumTemperature | Number | 10 | \u00b0C | RO |\n| Unit2BatteryPack2SN | String | | | RO |\n| Unit2BatteryPack2No | Number | 1 | | RW |\n| Unit2BatteryPack2FirmwareVersion | String | | | RO |\n| Unit2BatteryPack2WorkingStatus | Number | 1 | | RO |\n| Unit2BatteryPack2Voltage | Number | 10 | V | RO |\n| Unit2BatteryPack2Current | Number | 10 | A | RO |\n| Unit2BatteryPack2SOC | Number | 10 | % | RO |\n| Unit2BatteryPack2ChargeDischargePower | Number | 1 | W | RO |\n| Unit2BatteryPack2TotalCharge | Number | 100 | kWh | RO |\n| Unit2BatteryPack2TotalDischarge | Number | 100 | kWh | RO |\n| Unit2BatteryPack2MinimumTemperature | Number | 10 | \u00b0C | RO |\n| Unit2BatteryPack2MaximumTemperature | Number | 10 | \u00b0C | RO |\n| Unit2BatteryPack3SN | String | | | RO |\n| Unit2BatteryPack3No | Number | 1 | | RW |\n| Unit2BatteryPack3FirmwareVersion | String | | | RO |\n| Unit2BatteryPack3WorkingStatus | Number | 1 | | RO |\n| Unit2BatteryPack3Voltage | Number | 10 | V | RO |\n| Unit2BatteryPack3Current | Number | 10 | A | RO |\n| Unit2BatteryPack3SOC | Number | 10 | % | RO |\n| Unit2BatteryPack3ChargeDischargePower | Number | 1 | W | RO |\n| Unit2BatteryPack3TotalCharge | Number | 100 | kWh | RO |\n| Unit2BatteryPack3TotalDischarge | Number | 100 | kWh | RO |\n| Unit2BatteryPack3MinimumTemperature | Number | 10 | \u00b0C | RO |\n| Unit2BatteryPack3MaximumTemperature | Number | 10 | \u00b0C | RO |\n\n### MeterEquipmentRegister\n\n| Name | Type | Gain | Unit | Access Type |\n|---------------------------|--------|------|------|-------------|\n| MeterStatus | Number | 1 | | RO |\n| APhaseVoltage | Number | 10 | V | RO |\n| BPhaseVoltage | Number | 10 | V | RO |\n| CPhaseVoltage | Number | 10 | V | RO |\n| APhaseCurrent | Number | 100 | A | RO |\n| BPhaseCurrent | Number | 100 | A | RO |\n| CPhaseCurrent | Number | 100 | A | RO |\n| ActivePower | Number | 1 | W | RO |\n| ReactivePower | Number | 1 | var | RO |\n| PowerFactor | Number | 1000 | | RO |\n| GridFrequency | Number | 100 | Hz | RO |\n| PositiveActiveElectricity | Number | 100 | kWh | RO |\n| ReverseActivePower | Number | 100 | kWh | RO |\n| AccumulatedReactivePower | Number | 100 | kvar | RO |\n| MeterType | Number | 1 | | RO |\n| ABLineVoltage | Number | 10 | V | RO |\n| BCLineVoltage | Number | 10 | V | RO |\n| CALineVoltage | Number | 10 | V | RO |\n| APhaseActivePower | Number | 1 | W | RO |\n| BPhaseActivePower | Number | 1 | W | RO |\n| CPhaseActivePower | Number | 1 | W | RO |\n| MeterModelDetectionResult | Number | 1 | | RO |\n",
"bugtrack_url": null,
"license": null,
"summary": "Library for reading Huawei Sun2000 inverter metrics via Modbus TCP",
"version": "2.5.0",
"project_urls": {
"Source": "https://github.com/olivergregorius/sun2000_modbus"
},
"split_keywords": [
"sun2000",
" modbus",
" photovoltaic"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2b2e251fd98df662d61b87e8c2a37bba430b705b587656485871069d1608237e",
"md5": "70d37f9f27361060b3d4020d002498cc",
"sha256": "97c49c5d4e1cf1a5a3ba4d82dbc76d73b93cd56f5d228b0fd9a74a500f9319a3"
},
"downloads": -1,
"filename": "sun2000_modbus-2.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "70d37f9f27361060b3d4020d002498cc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 13548,
"upload_time": "2025-04-27T20:42:51",
"upload_time_iso_8601": "2025-04-27T20:42:51.018903Z",
"url": "https://files.pythonhosted.org/packages/2b/2e/251fd98df662d61b87e8c2a37bba430b705b587656485871069d1608237e/sun2000_modbus-2.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "84cfbd51198079a5d623cb84b61176b2a2c18e5acb8f2c7802eacc612e1ab4a3",
"md5": "498158288ee1796f99f07f7c7e04aae4",
"sha256": "3b103f22e336ac2a99f2af4ae78ef5e2d44cb955df4e74423f531eaacc5eec35"
},
"downloads": -1,
"filename": "sun2000_modbus-2.5.0.tar.gz",
"has_sig": false,
"md5_digest": "498158288ee1796f99f07f7c7e04aae4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 19505,
"upload_time": "2025-04-27T20:42:52",
"upload_time_iso_8601": "2025-04-27T20:42:52.720121Z",
"url": "https://files.pythonhosted.org/packages/84/cf/bd51198079a5d623cb84b61176b2a2c18e5acb8f2c7802eacc612e1ab4a3/sun2000_modbus-2.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-04-27 20:42:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "olivergregorius",
"github_project": "sun2000_modbus",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "pymodbus",
"specs": [
[
">=",
"3.7.4"
]
]
}
],
"lcname": "sun2000_modbus"
}