Created
August 9, 2022 09:48
-
-
Save janispritzkau/277f94f28421e60308c9f99a736621fa to your computer and use it in GitHub Desktop.
Modbus Registers for Sungrow SH10RT Hybrid Inverter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| input_registers: | |
| - name: protocol_number | |
| data_type: uint32 | |
| address: 4950 | |
| - name: protocol_version | |
| data_type: uint32 | |
| address: 4952 | |
| - name: arm_software_version | |
| data_type: string | |
| address: 4954 | |
| length: 15 | |
| - name: dsp_software_version | |
| data_type: string | |
| address: 4969 | |
| length: 15 | |
| - name: serial_number | |
| data_type: string | |
| address: 4990 | |
| length: 10 | |
| - name: device_type_code | |
| data_type: uint16 | |
| address: 5000 | |
| - name: nominal_output_power | |
| data_type: uint16 | |
| address: 5001 | |
| unit: watt | |
| factor: 100 | |
| - name: output_type | |
| data_type: uint16 | |
| address: 5002 | |
| enum_values: | |
| - { value: 0, name: single_phase } | |
| - { value: 1, name: 3p4l } | |
| - { value: 2, name: 3p3l } | |
| - name: daily_output_energy | |
| data_type: uint16 | |
| address: 5003 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: total_output_energy | |
| data_type: uint32 | |
| address: 5004 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: inside_temperature | |
| data_type: int16 | |
| address: 5008 | |
| unit: celsius | |
| factor: 0.1 | |
| - name: total_apparent_power | |
| data_type: uint32 | |
| address: 5009 | |
| - name: mppt_1_voltage | |
| data_type: uint16 | |
| address: 5011 | |
| unit: volt | |
| factor: 0.1 | |
| - name: mppt_1_current | |
| data_type: uint16 | |
| address: 5012 | |
| unit: ampere | |
| factor: 0.1 | |
| - name: mppt_2_voltage | |
| data_type: uint16 | |
| address: 5013 | |
| unit: volt | |
| factor: 0.1 | |
| - name: mppt_2_current | |
| data_type: uint16 | |
| address: 5014 | |
| unit: ampere | |
| factor: 0.1 | |
| - name: total_dc_power | |
| data_type: uint32 | |
| address: 5017 | |
| unit: watt | |
| - name: phase_a_voltage | |
| data_type: uint16 | |
| address: 5019 | |
| unit: volt | |
| factor: 0.1 | |
| - name: phase_b_voltage | |
| data_type: uint16 | |
| address: 5020 | |
| unit: volt | |
| factor: 0.1 | |
| - name: phase_c_voltage | |
| data_type: uint16 | |
| address: 5021 | |
| unit: volt | |
| factor: 0.1 | |
| - name: total_active_power | |
| data_type: uint32 | |
| address: 5031 | |
| unit: watt | |
| - name: reactive_power | |
| data_type: int32 | |
| address: 5033 | |
| unit: volt_ampere_reactive | |
| - name: power_factor | |
| data_type: int16 | |
| address: 5035 | |
| factor: 0.001 | |
| - name: grid_frequency | |
| data_type: uint16 | |
| address: 5036 | |
| unit: hertz | |
| factor: 0.1 | |
| - name: export_limit_min | |
| data_type: uint16 | |
| address: 5622 | |
| unit: watt | |
| factor: 10 | |
| - name: export_limit_max | |
| data_type: uint16 | |
| address: 5623 | |
| unit: watt | |
| factor: 10 | |
| - name: bdc_rated_power | |
| data_type: uint16 | |
| address: 5628 | |
| unit: watt | |
| factor: 100 | |
| - name: max_charging_current_bms | |
| data_type: uint16 | |
| address: 5635 | |
| unit: ampere | |
| - name: max_discharging_current_bms | |
| data_type: uint16 | |
| address: 5636 | |
| unit: ampere | |
| - name: pv_power_of_today | |
| data_type: uint16_array | |
| address: 6100 | |
| length: 96 | |
| unit: watt | |
| - name: daily_pv_energy_yields | |
| data_type: uint16_array | |
| address: 6196 | |
| length: 31 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: monthly_pv_energy_yields | |
| data_type: uint16_array | |
| address: 6227 | |
| length: 12 | |
| unit: kilowatt_hour | |
| - name: yearly_pv_energy_yields | |
| data_type: uint32_array | |
| address: 6250 | |
| length: 40 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: direct_power_consumption_of_today_from_pv | |
| data_type: uint16_array | |
| address: 6290 | |
| length: 96 | |
| unit: watt | |
| - name: daily_direct_energy_consumption_from_pv | |
| data_type: uint16_array | |
| address: 6386 | |
| length: 31 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: monthly_direct_energy_consumption_from_pv | |
| data_type: uint16_array | |
| address: 6417 | |
| length: 12 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: yearly_direct_energy_consumption_from_pv | |
| data_type: uint32_array | |
| address: 6429 | |
| length: 40 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: export_power_from_pv_of_today | |
| data_type: uint16_array | |
| address: 6469 | |
| length: 96 | |
| unit: watt | |
| - name: daily_export_energy_from_pv | |
| data_type: uint16_array | |
| address: 6565 | |
| length: 31 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: monthly_export_energy_from_pv | |
| data_type: uint16_array | |
| address: 6596 | |
| length: 12 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: yearly_export_energy_from_pv | |
| data_type: uint32_array | |
| address: 6608 | |
| length: 40 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: battery_charge_power_of_today | |
| data_type: uint16_array | |
| address: 6648 | |
| length: 96 | |
| unit: watt | |
| - name: daily_battery_charge_energy_from_pv | |
| data_type: uint16_array | |
| address: 6744 | |
| length: 31 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: monthly_battery_charge_energy_from_pv | |
| data_type: uint16_array | |
| address: 6775 | |
| length: 12 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: yearly_battery_charge_energy_from_pv | |
| data_type: uint32_array | |
| address: 6787 | |
| length: 40 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: system_state | |
| data_type: uint16 | |
| address: 13000 | |
| enum_values: | |
| - { value: 0x0002, name: stop } | |
| - { value: 0x0008, name: standby } | |
| - { value: 0x0010, name: initial_standby } | |
| - { value: 0x0020, name: startup } | |
| - { value: 0x0040, name: running } | |
| - { value: 0x0100, name: fault } | |
| - { value: 0x0400, name: running_in_maintain_mode } | |
| - { value: 0x0800, name: running_in_forced_mode } | |
| - { value: 0x1000, name: running_in_off_grid_mode } | |
| - { value: 0x2501, name: restarting } | |
| - { value: 0x4000, name: running_in_external_ems_mode } | |
| - name: running_state | |
| data_type: uint16 | |
| address: 13001 | |
| bit_mask: | |
| pv_generating_power: 0x0001 | |
| battery_charging: 0x0002 | |
| battery_discharging: 0x0004 | |
| positive_load: 0x0008 | |
| feed_in_to_grid: 0x0010 | |
| importing_from_grid: 0x0020 | |
| negative_load: 0x0080 | |
| - name: daily_pv_generation | |
| data_type: uint16 | |
| address: 13002 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: total_pv_generation | |
| data_type: uint32 | |
| address: 13003 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: daily_export_power_from_pv | |
| data_type: uint16 | |
| address: 13005 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: total_export_power_from_pv | |
| data_type: uint32 | |
| address: 13006 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: load_power | |
| data_type: int32 | |
| address: 13008 | |
| unit: watt | |
| - name: export_power | |
| data_type: int32 | |
| address: 13010 | |
| unit: watt | |
| - name: daily_charge_energy_from_pv | |
| data_type: uint16 | |
| address: 13012 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: total_charge_energy_from_pv | |
| data_type: uint32 | |
| address: 13013 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: co2_reduction | |
| data_type: uint32 | |
| address: 13015 | |
| unit: kilogram | |
| factor: 0.1 | |
| - name: daily_direct_energy_consumption | |
| data_type: uint16 | |
| address: 13017 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: total_direct_energy_consumption | |
| data_type: uint32 | |
| address: 13018 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: battery_voltage | |
| data_type: uint16 | |
| address: 13020 | |
| unit: volt | |
| factor: 0.1 | |
| - name: battery_current | |
| data_type: uint16 | |
| address: 13021 | |
| unit: ampere | |
| factor: 0.1 | |
| - name: battery_power | |
| data_type: uint16 | |
| address: 13022 | |
| unit: watt | |
| - name: battery_level | |
| data_type: uint16 | |
| address: 13023 | |
| unit: percent | |
| factor: 0.1 | |
| - name: battery_state_of_health | |
| data_type: uint16 | |
| address: 13024 | |
| unit: percent | |
| factor: 0.1 | |
| - name: battery_temperature | |
| data_type: int16 | |
| address: 13025 | |
| unit: celsius | |
| factor: 0.1 | |
| - name: daily_battery_discharge_energy | |
| data_type: uint16 | |
| address: 13026 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: total_battery_discharge_energy | |
| data_type: uint32 | |
| address: 13027 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: self_consumption_of_today | |
| data_type: uint16 | |
| address: 13029 | |
| unit: percent | |
| factor: 0.1 | |
| - name: grid_state | |
| data_type: uint16 | |
| address: 13030 | |
| enum_values: | |
| - { value: 0xaa, name: off_grid } | |
| - { value: 0x55, name: on_grid } | |
| - name: phase_a_current | |
| data_type: int16 | |
| address: 13031 | |
| unit: ampere | |
| factor: 0.1 | |
| - name: phase_b_current | |
| data_type: int16 | |
| address: 13032 | |
| unit: ampere | |
| factor: 0.1 | |
| - name: phase_c_current | |
| data_type: int16 | |
| address: 13033 | |
| unit: ampere | |
| factor: 0.1 | |
| - name: total_active_power | |
| data_type: int32 | |
| address: 13034 | |
| unit: watt | |
| - name: daily_import_energy | |
| data_type: uint16 | |
| address: 13036 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: total_import_energy | |
| data_type: uint32 | |
| address: 13037 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: battery_capacity | |
| data_type: uint16 | |
| address: 13039 | |
| note: 0.1 kWh / 1 Ah as unit depending on battery type | |
| - name: daily_charge_energy | |
| data_type: uint16 | |
| address: 13040 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: total_charge_energy | |
| data_type: uint32 | |
| address: 13041 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: drm_state | |
| data_type: uint16 | |
| address: 13043 | |
| - name: daily_export_energy | |
| data_type: uint16 | |
| address: 13045 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: total_export_energy | |
| data_type: uint32 | |
| address: 13046 | |
| unit: kilowatt_hour | |
| factor: 0.1 | |
| - name: inverter_alarm | |
| data_type: uint32 | |
| address: 13050 | |
| - name: grid_side_fault | |
| data_type: uint32 | |
| address: 13052 | |
| - name: system_fault_1 | |
| data_type: uint32 | |
| address: 13054 | |
| - name: system_fault_2 | |
| data_type: uint32 | |
| address: 13056 | |
| - name: dc_side_fault | |
| data_type: uint32 | |
| address: 13058 | |
| - name: permanent_fault | |
| data_type: uint32 | |
| address: 13060 | |
| - name: bdc_side_fault | |
| data_type: uint32 | |
| address: 13062 | |
| - name: bdc_side_permanent_fault | |
| data_type: uint32 | |
| address: 13064 | |
| - name: battery_fault | |
| data_type: uint32 | |
| address: 13066 | |
| - name: battery_alarm | |
| data_type: uint32 | |
| address: 13068 | |
| - name: bms_alarm | |
| data_type: uint32 | |
| address: 13070 | |
| - name: bms_protection | |
| data_type: uint32 | |
| address: 13072 | |
| - name: bms_fault_1 | |
| data_type: uint32 | |
| address: 13074 | |
| - name: bms_fault_2 | |
| data_type: uint32 | |
| address: 13076 | |
| - name: bms_alarm_2 | |
| data_type: uint32 | |
| address: 13078 | |
| holding_registers: | |
| - name: system_clock_year | |
| data_type: uint16 | |
| address: 5000 | |
| - name: system_clock_month | |
| data_type: uint16 | |
| address: 5001 | |
| - name: system_clock_day | |
| data_type: uint16 | |
| address: 5002 | |
| - name: system_clock_hour | |
| data_type: uint16 | |
| address: 5003 | |
| - name: system_clock_minute | |
| data_type: uint16 | |
| address: 5004 | |
| - name: system_clock_second | |
| data_type: uint16 | |
| address: 5005 | |
| - name: start_stop | |
| data_type: uint16 | |
| address: 13000 | |
| enum_values: | |
| - { value: 0xcf, name: start } | |
| - { value: 0xce, name: stop } | |
| - name: battery_maintanance | |
| data_type: uint16 | |
| address: 13001 | |
| enum_values: | |
| - { value: 0xaa, name: maintanance } | |
| - name: load_1_adjustment_mode | |
| data_type: uint16 | |
| address: 13002 | |
| enum_values: | |
| - { value: 0, name: timing_mode } | |
| - { value: 1, name: on_off_mode } | |
| - { value: 2, name: power_optimized_mode } | |
| - { value: 3, name: disable } | |
| - name: load_1_timing_period_1_start_hour | |
| data_type: uint16 | |
| address: 13003 | |
| - name: load_1_timing_period_1_start_minute | |
| data_type: uint16 | |
| address: 13004 | |
| - name: load_1_timing_period_1_end_hour | |
| data_type: uint16 | |
| address: 13005 | |
| - name: load_1_timing_period_1_end_minute | |
| data_type: uint16 | |
| address: 13006 | |
| - name: load_1_timing_period_2_start_hour | |
| data_type: uint16 | |
| address: 13007 | |
| - name: load_1_timing_period_2_start_minute | |
| data_type: uint16 | |
| address: 13008 | |
| - name: load_1_timing_period_2_end_hour | |
| data_type: uint16 | |
| address: 13009 | |
| - name: load_1_timing_period_2_end_minute | |
| data_type: uint16 | |
| address: 13010 | |
| - name: load_1_on_off_mode | |
| data_type: uint16 | |
| address: 13011 | |
| enum_values: | |
| - { value: 0xaa, name: enable } | |
| - { value: 0x55, name: disable } | |
| - name: load_1_power_optimized_mode_start_hour | |
| data_type: uint16 | |
| address: 13012 | |
| - name: load_1_power_optimized_mode_start_minute | |
| data_type: uint16 | |
| address: 13013 | |
| - name: load_1_power_optimized_mode_end_hour | |
| data_type: uint16 | |
| address: 13014 | |
| - name: load_1_power_optimized_mode_end_minute | |
| data_type: uint16 | |
| address: 13015 | |
| - name: optimized_power_of_load_1 | |
| data_type: uint16 | |
| address: 13016 | |
| unit: watt | |
| - name: ems_mode_selection | |
| data_type: uint16 | |
| address: 13050 | |
| enum_values: | |
| - { value: 0, name: self_consumption_mode } | |
| - { value: 2, name: forced_mode } | |
| - { value: 3, name: external_ems_mode } | |
| - { value: 4, name: vpp } | |
| - name: charge_discharge_command | |
| data_type: uint16 | |
| address: 13051 | |
| enum_values: | |
| - { value: 0xaa, name: charge } | |
| - { value: 0xbb, name: discharge } | |
| - { value: 0xcc, name: stop } | |
| - name: charge_discharge_power | |
| data_type: uint16 | |
| address: 13052 | |
| unit: watt | |
| - name: battery_type | |
| data_type: uint16 | |
| address: 13055 | |
| - name: battery_nominal_voltage | |
| data_type: uint16 | |
| address: 13056 | |
| unit: volt | |
| factor: 0.1 | |
| - name: battery_capacity | |
| data_type: uint16 | |
| address: 13057 | |
| unit: ampere_hour | |
| - name: max_soc | |
| data_type: uint16 | |
| address: 13058 | |
| unit: percent | |
| factor: 0.1 | |
| - name: min_soc | |
| data_type: uint16 | |
| address: 13059 | |
| unit: percent | |
| factor: 0.1 | |
| - name: battery_overvoltage_threshold | |
| data_type: uint16 | |
| address: 13060 | |
| unit: volt | |
| factor: 0.1 | |
| - name: battery_undervoltage_threshold | |
| data_type: uint16 | |
| address: 13061 | |
| unit: volt | |
| factor: 0.1 | |
| - name: battery_over_temperature_threshold | |
| data_type: int16 | |
| address: 13062 | |
| unit: celsius | |
| factor: 0.1 | |
| - name: battery_under_temperature_threshold | |
| data_type: int16 | |
| address: 13063 | |
| unit: celsius | |
| factor: 0.1 | |
| - name: terminated_current_of_constant_voltage_charging | |
| data_type: uint16 | |
| address: 13065 | |
| factor: 0.001 | |
| - name: max_discharge_current | |
| data_type: uint16 | |
| address: 13066 | |
| factor: 0.001 | |
| - name: max_charge_current | |
| data_type: uint16 | |
| address: 13067 | |
| factor: 0.001 | |
| - name: constant_charge_voltage | |
| data_type: uint16 | |
| address: 13068 | |
| unit: volt | |
| factor: 0.01 | |
| - name: terminated_voltage_of_discharging | |
| data_type: uint16 | |
| address: 13069 | |
| unit: volt | |
| factor: 0.001 | |
| - name: emergency_charge_current | |
| data_type: uint16 | |
| address: 13070 | |
| factor: 0.001 | |
| - name: time_for_fully_charge | |
| data_type: uint16 | |
| address: 13071 | |
| unit: second | |
| - name: terminated_current_for_fully_charge | |
| data_type: uint16 | |
| address: 13072 | |
| factor: 0.001 | |
| - name: time_for_constant_voltage_charge | |
| data_type: uint16 | |
| address: 13073 | |
| unit: second | |
| - name: export_power_limitation | |
| data_type: uint16 | |
| address: 13074 | |
| unit: watt | |
| - name: off_grid_option | |
| data_type: uint16 | |
| address: 13075 | |
| enum_values: | |
| - { value: 0xaa, name: enable } | |
| - { value: 0x55, name: disable } | |
| - name: external_ems_heartbeat | |
| data_type: uint16 | |
| address: 13080 | |
| unit: second | |
| - name: external_signal_of_italy | |
| data_type: uint16 | |
| address: 13083 | |
| - name: start_charging_power | |
| data_type: uint16 | |
| address: 13084 | |
| unit: watt | |
| - name: start_discharging_power | |
| data_type: uint16 | |
| address: 13085 | |
| unit: watt | |
| - name: meter_comm_detection | |
| data_type: uint16 | |
| address: 13086 | |
| enum_values: | |
| - { value: 0xaa, name: enable } | |
| - { value: 0x55, name: disable } | |
| - name: export_power_limitation | |
| data_type: uint16 | |
| address: 13087 | |
| enum_values: | |
| - { value: 0xaa, name: enable } | |
| - { value: 0x55, name: disable } | |
| - name: reserved_soc_for_backup | |
| data_type: uint16 | |
| address: 13100 | |
| unit: percent |
Author
@SpecialAgentX Sure, feel free to use it for any purpose. I guess I'd license it under the MIT license or something more permissive.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi Janis,
thanks a lot for compiling and sharing the SH10RT Modbus register list. I’m
building an open-source library around the inverter and would love to reuse your
sungrow_sh10rt_modbus.yaml so the community doesn’t have to rebuild the catalog
from scratch. Would you be okay if I include it in my GitLab project (with full
credit back to your Gist)? I’ll add a clear attribution and link to this Gist in
the docs.
If you prefer, you could also drop your preferred license as a YAML comment in the
file—then everyone can reuse it with the right attribution straight away.
Let me know if that’s fine with you—or if you’d like a specific credit. Thanks
again!