Skip to content

Instantly share code, notes, and snippets.

@dnoegel
Last active May 25, 2025 23:46
Show Gist options
  • Save dnoegel/543c72ef722365a3934bbad0bb43e222 to your computer and use it in GitHub Desktop.
Save dnoegel/543c72ef722365a3934bbad0bb43e222 to your computer and use it in GitHub Desktop.
Modbus Register für Sungrow Wechselrichter zum Import in Iobroker
_address name description unit type len factor offset formula role room cw isScale
4999 Device type code Geräte Typ-Code int8be 1 1 0 value false false
5000 Nominal Output Power Installierte Leistung Kw uint16be 1 0.1 0 value false false
5002 Daily Output Energy Eigene Energienutzung heute (PV & Akku) Kwh uint16be 1 0.1 0 value false false
5003 Total Output Energy Eigene Energienutzung gesamt (PV & Akku) Kwh uint32sw 2 0.1 0 value false false
5007 Inside Temperature Temperatur im Wechselrichter °C int16be 1 0.1 0 value false false
5010 MPPT 1 Voltage MPPT1 Spannung V uint16be 1 0.1 0 value false false
5011 MPPT 1 Current MPPT1 Strom A uint16be 1 0.1 0 value false false
5012 MPPT 2 Voltage MPPT2 Spannung V uint16be 1 0.1 0 value false false
5013 MPPT 2 Current MPPT2 Strom A uint16be 1 0.1 0 value false false
5016 Total DC Power PV-Leistung aktuell W uint32sw 2 1 0 value false false
5018 Spannung Ph A Spannung Phase A V uint16be 1 0.1 0 value false false
5019 Spannung Ph B Spannung Phase C V uint16be 1 0.1 0 value false false
5020 Spannung Ph C Spannung Phase C V uint16be 1 0.1 0 value false false
5032 Reactive Power Blindleistung VA® int32sw 2 0 value false false
5034 Power Factor Leistungsfaktor int16be 1 0.001 0 value false false
5035 Grid Frequency Netzfrequenz Hz uint16be 1 0.1 0 value false false
6226 Monthly PV energy yields January Monatlicher PV Energieertrag Januar Kwh uint16be 1 0.1 0 value false false
6227 Monthly PV energy yields February Monatlicher PV Energieertrag Februar Kwh uint16be 1 0.1 0 value false false
6228 Monthly PV energy yields March Monatlicher PV Energieertrag März Kwh uint16be 1 0.1 0 value false false
6229 Monthly PV energy yields April Monatlicher PV Energieertrag April Kwh uint16be 1 0.1 0 value false false
6230 Monthly PV energy yields May Monatlicher PV Energieertrag Mai Kwh uint16be 1 0.1 0 value false false
6231 Monthly PV energy yields June Monatlicher PV Energieertrag Juni Kwh uint16be 1 0.1 0 value false false
6232 Monthly PV energy yields July Monatlicher PV Energieertrag Juli Kwh uint16be 1 0.1 0 value false false
6233 Monthly PV energy yields August Monatlicher PV Energieertrag August Kwh uint16be 1 0.1 0 value false false
6234 Monthly PV energy yields September Monatlicher PV Energieertrag September Kwh uint16be 1 0.1 0 value false false
6235 Monthly PV energy yields October Monatlicher PV Energieertrag Oktober Kwh uint16be 1 0.1 0 value false false
6236 Monthly PV energy yields November Monatlicher PV Energieertrag November Kwh uint16be 1 0.1 0 value false false
6237 Monthly PV energy yields December Monatlicher PV Energieertrag Dezember Kwh uint16be 1 0.1 0 value false false
6416 Monthly direct energy consumption from PVJanuary Monatlicher Energieverbrauch von PV-Anlage im Januar Kwh uint16be 1 0.1 0 value false false
6417 Monthly direct energy consumption from PV February Monatlicher Energieverbrauch von PV-Anlage im Februar Kwh uint16be 1 0.1 0 value false false
6418 Monthly direct energy consumption from PV March Monatlicher Energieverbrauch von PV-Anlage im März Kwh uint16be 1 0.1 0 value false false
6419 Monthly direct energy consumption from PV April Monatlicher Energieverbrauch von PV-Anlage im April Kwh uint16be 1 0.1 0 value false false
6420 Monthly direct energy consumption from PV May Monatlicher Energieverbrauch von PV-Anlage im Mai Kwh uint16be 1 0.1 0 value false false
6421 Monthly direct energy consumption from PV June Monatlicher Energieverbrauch von PV-Anlage im Juni Kwh uint16be 1 0.1 0 value false false
6422 Monthly direct energy consumption from PV July Monatlicher Energieverbrauch von PV-Anlage im Juli Kwh uint16be 1 0.1 0 value false false
6423 Monthly direct energy consumption from PV August Monatlicher Energieverbrauch von PV-Anlage im August Kwh uint16be 1 0.1 0 value false false
6424 Monthly direct energy consumption from PV Septemper Monatlicher Energieverbrauch von PV-Anlage im September Kwh uint16be 1 0.1 0 value false false
6425 Monthly direct energy consumption from PV October Monatlicher Energieverbrauch von PV-Anlage im Oktober Kwh uint16be 1 0.1 0 value false false
6426 Monthly direct energy consumption from PV November Monatlicher Energieverbrauch von PV-Anlage im November Kwh uint16be 1 0.1 0 value false false
6427 Monthly direct energy consumption from PV december Monatlicher Energieverbrauch von PV-Anlage im Dezember Kwh uint16be 1 0.1 0 value false false
6595 Monthly export energy from PV January Monatlicher Energieexport aus PV-Anlage Januar Kwh uint16be 1 0.1 0 value false false
6596 Monthly export energy from PV February Monatlicher Energieexport aus PV-Anlage Februar Kwh uint16be 1 0.1 0 value false false
6597 Monthly export energy from PV March Monatlicher Energieexport aus PV-Anlage März Kwh uint16be 1 0.1 0 value false false
6598 Monthly export energy from PV April Monatlicher Energieexport aus PV-Anlage April Kwh uint16be 1 0.1 0 value false false
6599 Monthly export energy from PV May Monatlicher Energieexport aus PV-Anlage Mai Kwh uint16be 1 0.1 0 value false false
6600 Monthly export energy from PV June Monatlicher Energieexport aus PV-Anlage Juni Kwh uint16be 1 0.1 0 value false false
6601 Monthly export energy from PV July Monatlicher Energieexport aus PV-Anlage Juli Kwh uint16be 1 0.1 0 value false false
6602 Monthly export energy from PV August Monatlicher Energieexport aus PV-Anlage August Kwh uint16be 1 0.1 0 value false false
6603 Monthly export energy from PV September Monatlicher Energieexport aus PV-Anlage September Kwh uint16be 1 0.1 0 value false false
6604 Monthly export energy from PV October Monatlicher Energieexport aus PV-Anlage Oktober Kwh uint16be 1 0.1 0 value false false
6605 Monthly export energy from PV November Monatlicher Energieexport aus PV-Anlage November Kwh uint16be 1 0.1 0 value false false
6606 Monthly export energy from PV Dezember Monatlicher Energieexport aus PV-Anlage Dezember Kwh uint16be 1 0.1 0 value false false
12999 System State Systemstatus uint16be 1 1 0 value false false
13000 Running State Betriebsstatus uint16be 1 1 0 value false false
13001 Daily PV Generation PV-Stromerzeugung heute Kwh uint16be 1 0.1 0 value false false
13002 Total PV Generation PV-Stromerzeugung gesamt Kwh uint32sw 2 0.1 0 value false false
13004 Daily export energy from PV PV-Einspeise Energie heute Kwh uint16be 1 0.1 0 value false false
13005 Total export energy from PV PV-Einspeise Energie gesamt Kwh uint32sw 2 0.1 0 value false false
13007 Load power Wirkleistung gesamt W int32sw 2 1 0 value false false
13009 Export power Aktuelle Leistung am Übergabepunkt des Versorgungsnetzes W int32sw 2 1 0 value false false
13011 Daily battery charge energy from PV Energie in Speicher heute Kwh uint16be 1 0.1 0 value false false
13012 Total battery charge energy from PV Energie in Speicher gesamt Kwh uint32sw 2 0.1 0 value false false
13014 CO2-reduction CO2- Reduzierung Kg uint32sw 2 0.1 0 value false false
13016 Daily direct Energy Consumption Direkter Eigenverbrauch aus PV heute Kwh uint16be 1 0.1 0 value false false
13017 Total direct Energy Consumption Direkter Eigenverbrauch aus PV gesamt Kwh uint32sw 2 0.1 0 value false false
13019 Battery voltage Batteriespannung V uint16be 1 0.1 0 value false false
13020 Battery current Batteriestrom A uint16be 1 0.1 0 value false false
13021 Battery power Batterieladeleistung W uint16be 1 1 0 value false false
13022 Battery level Batteriekapazität % uint16be 1 0.1 0 value false false
13023 Battery state of health Gesundheit der Batterie % uint16be 1 0.1 0 value false false
13024 Battery Temperature Batterietemperatur °C int16be 1 0.1 0 value false false
13025 Daily battery discharge Energy Tägliche Entladungsenergie der Batterie Kwh uint16be 1 0.1 0 value false false
13026 Total battery discharge Energy Gesamte Entladungsenergie der Batterie Kwh uint32sw 2 0.1 1 value false false
13028 Self-consumption of today Heutiger Anteil des Eigenverbrauches % uint16be 1 0.1 0 value false false
13029 Grid state Netzstatus int16be 1 0.1 0 value false false
13030 Phase A current Strom Phase A aktuell A uint16be 1 0.1 0 value false false
13031 Phase B current Strom Phase B aktuell A uint16be 1 0.1 0 value false false
13032 Phase C current Strom Phase C aktuell A uint16be 1 0.1 0 value false false
13033 Total active power Eigenverbrauch aktuell W int32sw 2 1 0 value false false
13035 Daily Import Energy Gekaufte Energie heute Kwh uint16be 1 0.1 0 value false false
13036 Total Import Energy Gekaufte Energie gesamt Kwh uint16be 1 0.1 0 value false false
13038 Battery Capacity Batterie-Kapazität Kwh uint16be 1 0.1 0 value false false
13039 Daily Charge Energy Batterie-Ladeenergie heute Kwh uint16be 1 0.1 0 value false false
13040 Total Charge Energy Batterie-Ladeenergie gesamt Kwh uint32sw 2 0.1 0 value false false
13044 Daily export energy Energie Netzeinspeisung heute Kwh uint16be 1 0.1 0 value false false
13045 Total export energy Energie Netzeinspeisung gesamt Kwh uint32sw 2 0.1 0 value false false
13049 Inverter alarm Inverter alarm uint32sw 2 1 0 value false false
13051 Grid-side fault Netzfehler uint32sw 2 1 0 value false false
13053 System fault 1 System Fehler 1 uint32sw 2 1 0 value false false
13055 System fault 2 System Fehler 2 uint32sw 2 1 0 value false false
13057 DC-side fault Fehler DC-Seitig uint32sw 2 1 0 value false false
13059 Permanent fault Permanenter Fehler uint32sw 2 1 0 value false false
13061 BDC-side fault BDC-side fault uint32sw 2 1 0 value false false
13063 BDC-side permanent fault BDC-side permanent fault uint32sw 2 1 0 value false false
13065 Battery fault Batterie Fehler uint32sw 2 1 0 value false false
13067 Battery alarm Battery Alarm uint32sw 2 1 0 value false false
13069 BMS alarm BMS Alarm uint32sw 2 1 0 value false false
13071 BMS protection BMS protection uint32sw 2 1 0 value false false
13073 BMS fault 1 BMS fault 1 uint32sw 2 1 0 value false false
13075 BMS fault 2 BMS fault 2 uint32sw 2 1 0 value false false
13077 BMS alarm 2 BMS alarm 2 uint32sw 2 1 0 value false false
@Mantelinho
Copy link

Mantelinho commented Apr 10, 2024

I was missing a few more values to use them in the openWB wallbox. Did a lot of adress dump + search, since also the latest Sunggrow modbus specs are incomplete. Have a look at https://github.com/openWB/core/blob/master/packages/modules/devices/sungrow/sungrow/modbus.md.

Most interesting maybe (for SH inverter connected via LAN):

  • Register 5030 for AC load power at inverter (useful for effective delivered power)
  • Register 13009 for total AC load power at smart meter, negative values if power consumed from net, positive if exported
  • Register 5602, 5604, 5606 (int32sw) for load power per phase at smart meter
  • Register 5740, 5741, 5742 for voltages per phase at smart meter. Attention: 5018/19/20 contain the voltages delivered at inverter!

@c0ldtech
Copy link

I was missing a few more values to use them in the openWB wallbox. Did a lot of adress dump + search, since also the latest Sunggrow modbus specs are incomplete. Have a look at https://github.com/Mantelinho/core/blob/patch_sungrow_modbus/packages/modules/devices/sungrow/modbus.md.

Most interesting maybe (for SH inverter connected via LAN):

  • Register 5030 for AC load power at inverter (useful for effective delivered power)
  • Register 13009 for total AC load power at smart meter, negative values if power consumed from net, positive if exported
  • Register 5602, 5604, 5606 (int32sw) for load power per phase at smart meter
  • Register 5740, 5741, 5742 for voltages per phase at smart meter. Attention: 5018/19/20 contain the voltages delivered at inverter!

Quick question: Is 5030 actually different from 13007?

The other ones I already listed here, in case you still need some more.

@Mantelinho
Copy link

Mantelinho commented Apr 11, 2024

I was missing a few more values to use them in the openWB wallbox. Did a lot of adress dump + search, since also the latest Sunggrow modbus specs are incomplete. Have a look at https://github.com/openWB/core/blob/master/packages/modules/devices/sungrow/sungrow/modbus.md.
Most interesting maybe (for SH inverter connected via LAN):

  • Register 5030 for AC load power at inverter (useful for effective delivered power)
  • Register 13009 for total AC load power at smart meter, negative values if power consumed from net, positive if exported
  • Register 5602, 5604, 5606 (int32sw) for load power per phase at smart meter
  • Register 5740, 5741, 5742 for voltages per phase at smart meter. Attention: 5018/19/20 contain the voltages delivered at inverter!

Quick question: Is 5030 actually different from 13007?

The other ones I already listed here, in case you still need some more.

(edit: Sorry, I mixed this up with 13033)

13007 is the load in the local net (sum of AC consumption), in other words the sum of 13007 and 13009 equals 5030. But: if you have more than one producer (another inverter), 13007 may be negative since the SH does not consider other inverters in retrofit modus for register 13007.

So if you are looking for a 5030 alternative (e.g. if your SH is connected via WiNet), take 13033. They have the same value:
13033: SH via LAN and WiNet-S dongle
5030: SH via LAN and SG via WiNet-S dongle
Both hold the AC active power delivered by the inverter, the value you see as "Wirkleistung gesamt" in iSolarCloud Live-Data.

@StClaus63
Copy link

I think, the naming of 13023 is wrong.

It's giving the State of Charge, not the State of Health

So instead of

13023 Battery state of health Gesundheit der Batterie % uint16be 1 0.1 0
it should be

13023 Battery state of charge Batterieladezustand % uint16be 1 0.1 0

What is then the difference to 13022 which is called "Battery level | Batteriekapazität". According to my experience 13023 really describe the health status of the battery in %. My system started with a value of 100% and is now after 1,5 year at 98%.

@c0ldtech
Copy link

I think, the naming of 13023 is wrong.
It's giving the State of Charge, not the State of Health
So instead of
13023 Battery state of health Gesundheit der Batterie % uint16be 1 0.1 0
it should be
13023 Battery state of charge Batterieladezustand % uint16be 1 0.1 0

What is then the difference to 13022 which is called "Battery level | Batteriekapazität". According to my experience 13023 really describe the health status of the battery in %. My system started with a value of 100% and is now after 1,5 year at 98%.

This is correct, it’s the same for me.

@ptar
Copy link

ptar commented Jul 14, 2024

I think, the naming of 13023 is wrong.

I'm sorry, you're right: I misunderstood the output of qModMaster, which hover-displayed address 13022 for register 13023 (as long as I remember, because currently it doesn't read the values at all)

I will delete the comment above, because it was simply wrong!

@liflitz
Copy link

liflitz commented Aug 11, 2024

I have added a small 800W inverter to my Sungrow SH10RT by plugging it into a non-backup outlet in the house (without doing any settings changes to the SH10RT). When the small inverters power exceeds the house load, the house load indicated in the iSolarCloud app turns negative as it should. However, the 13007 register for total AC load power does not produce negative values but stays at zero instead. Any ideas? The format upon reading should be OK as the same one produces pos and neg values for the 13009 register.

@Maxifyus
Copy link

Please Add
Beim SH via LAN:
Register 5030 enthält die AC Wirkleistung pro WR (SH-LAN und SG-WiNet), alternativ
Register 13033 enthält die AC Wirkleistung pro WR (SH-LAN und SH-WiNet)
Register 13009 enthält die Gesamtwirkleistung am Smartmeter
Register 5602, 5604, 5606 enthalten die Wirkleistungen pro Phase am Smartmeter
Register 5740, 5741, 5742 enthalten die Spannungen pro Phase am Smartmeter

Confirmed here
https://forum.openwb.de/viewtopic.php?t=7804&start=10

@Mantelinho
Copy link

Mantelinho commented Sep 23, 2024

@BigAl66
Copy link

BigAl66 commented Feb 20, 2025

From where do I get the official registers for my inverter? I have a SH20RT. The registers above seems to fit but I miss some registers. E.g. the MPPT 3 values are placed behind the MPPT 2 registers, but they are not in the list. I wonder if I miss more...

@Poetschedepper
Copy link

Poetschedepper commented Feb 22, 2025

My Sungrow SH10RT-V112 inverter and SB096 battery changed the Modbus data type from uint16be to int16be for value

13021 | Battery power | Batterieladeleistung

with updates

  • MDSP: SAPPHIRE-H_03011.95.03
  • LCD: SAPPHIRE-H_01011.95.03
  • SBRBCU-S_22011.01.24

I did a test with Loxone Miniserver and it works for me.
This simplified my logic for direction of battery power.

Also discussed here: mkaiser/Sungrow-SHx-Inverter-Modbus-Home-Assistant#406

@hessenkletterer
Copy link

Hi. I have a Sungrow SH10RT and want to invest in an additional battery from Sungrow. I do not find any informations about stearing the battery over modbus. Which channel I do have to use if I want to tell the battery to unload or load to a certain capacity. Is there a way using Openhab as a Smarthome System to stear the battery over CAN? Thanks for you help.

@c0ldtech
Copy link

As far as I know, it is not possible to specify a target capacity per se. However, you can force charge and discharge with a specified power.

  • register 13049: EMS mode selection, default 0, 2 = force mode
  • register 13050: charge/discharge command, charge = 170, stop = 204, discharge = 187
  • register 13051: charge/discharge power in W

and you can kind of specify the target capacity by using

  • register 13057 MAX SOC in %
  • register 13058 MIN SOC in %

@ptar
Copy link

ptar commented Apr 23, 2025

Is there a way using Openhab as a Smarthome System to stear the battery over CAN?

I would definitely recommend using Home Assistant for this. With broad integration for just about everything, it outperforms most other smart home solutions.

For Sungrow, see https://github.com/mkaiser/Sungrow-SHx-Inverter-Modbus-Home-Assistant

@hessenkletterer
Copy link

As far as I know, it is not possible to specify a target capacity per se. However, you can force charge and discharge with a specified power.

  • register 13049: EMS mode selection, default 0, 2 = force mode
  • register 13050: charge/discharge command, charge = 170, stop = 204, discharge = 187
  • register 13051: charge/discharge power in W

and you can kind of specify the target capacity by using

  • register 13057 MAX SOC in %
  • register 13058 MIN SOC in %

Thanks for your informations. But my inverter does not except any writing. Where can I change this?

@0xdefec71f
Copy link

Thanks for your informations. But my inverter does not except any writing. Where can I change this?

Die Register aus diesem Repo sind nur zum Lesen. Zum Schreiben brauchst du die sog. "holding register". Ich würde übrigens iobroker als Hausautomatisierung empfehlen, hat auch eine deutsche community. Da kannst du die Register selber verwalten und von hier copy/paste in den Modbus Adapter übernehmen.

Zusätzlich kannst du übrigens noch Register aus der id 200 der Batterie lesen, z.B. den nominellen SOC. Der Wechselrichter hat die id 1.

holding register für id 1 (write and read):

_address	deviceId	name	description	unit	type	len	factor	offset	formula	role	room	poll	wp	cw	isScale
4999	1	System Clock Year	Systemzeit Jahr		uint16be	1	1	0		value		true	false	false	false
5000	1	System Clock Month	Systemzeit Monat		uint16be	1	1	0		value		true	false	false	false
5001	1	System Clock Day	Systemzeit Tag		uint16be	1	1	0		value		true	false	false	false
5002	1	System Clock Hour	Systemzeit Stunde		uint16be	1	1	0		value		true	false	false	false
5003	1	System Clock Minute	Systemzeit Minute		uint16be	1	1	0		value		true	false	false	false
12999	1	Inverter Start/Stop	Start/Stop: START=207 (0xCF), STOP=206 (0xCE)		uint16be	1	1	0		value		true	false	false	false
13000	1	Battery Maintenance	Batteriewartung: AN=170 (0xAA), AUS=other		uint16be	1	1	0		value		true	false	false	false
13001	1	Load Adjustment mode	Energie Management Modus: Timing=0, ON/OFF=1, Energieoptimiert=2		uint16be	1	1	0		value		true	false	false	false
13002	1	Load 1 timing period 1: Start hour		h	uint16be	1	1	0		value		true	false	false	false
13003	1	Load 1 timing period 1: Start minute		min	uint16be	1	1	0		value		true	false	false	false
13004	1	Load 1 timing period 1: End hour		min	uint16be	1	1	0		value		true	false	false	false
13005	1	Load 1 timing period 1: End minute		h	uint16be	1	1	0		value		true	false	false	false
13006	1	Load 1 timing period 2: Start hour		h	uint16be	1	1	0		value		true	false	false	false
13007	1	Load 1 timing period 2: Start minute		min	uint16be	1	1	0		value		true	false	false	false
13008	1	Load 1 timing period 2: End hour		h	uint16be	1	1	0		value		true	false	false	false
13009	1	Load 1 timing period 2: End minute		min	uint16be	1	1	0		value		true	false	false	false
13010	1	Load 1 ON/OFF mode	Load 1 ON/OFF mode: AN=170 (0xAA), AUS=85 (0x55)		uint16be	1	1	0		value		true	false	false	false
13011	1	Load 1 power optimized mode: Start hour		h	uint16be	1	1	0		value		true	false	false	false
13012	1	Load 1 power optimized mode: Start minute		min	uint16be	1	1	0		value		true	false	false	false
13013	1	Load 1 power optimized mode: End hour		h	uint16be	1	1	0		value		true	false	false	false
13014	1	Load 1 power optimized mode: End Minute		min	uint16be	1	1	0		value		true	false	false	false
13015	1	Optimized power of load 1	Optimized power of load 1	W	uint16be	1	1	0		value		true	false	false	false
13049	1	EMS mode selection	EMS Modus: self_consume=0, forced=2, external=3, vpp=4, microgrid=8		uint16be	1	1	0		value		true	false	false	false
13050	1	Forced charge/discharge command	Ext. Sollvorgabe: Laden=170 (0xAA), Entladen=187 (0xBB), Stop=204 (0xCC) 		uint16be	1	1	0		value		true	false	false	false
13051	1	Forced charge/discharge power	Ext. Sollvorgabe Lade-/Entladeleistung (0 bis 5000W)	W	uint16be	1	1	0		value		true	false	false	false
13057	1	Max SOC	Max SOC	%	uint16be	1	0.1	0		value		true	false	false	false
13058	1	Min SOC	Min SOC	%	uint16be	1	0.1	0		value		true	false	false	false
13065	1	Max discharge current	Max. Entlade Strom	A	int16be	1	0.001	0		value		true	false	false	false
13066	1	Max charge current	Max. Lade Strom	A	int16be	1	0.001	0		value		true	false	false	false
13073	1	Export power limit	Einspeise Limit	W	uint16be	1	1	0		value		true	false	false	false
13074	1	Export Power Backup	Backup-Ausgang: AN=170 (0xAA), AUS=85 (0x55)		uint16be	1	1	0		value		true	false	false	false
13079	1	External EMS heartbeat			uint16be	1	1	0		value		true	false	false	false
13083	1	Start Charging Power	Leistung, mit welcher ein Ladevorgang begonnen wird	W	uint16be	1	1	0		value		true	false	false	false
13084	1	Start Discharging Power	Leistung, mit welcher ein Entladevorgang begonnen wird	W	uint16be	1	1	0		value		true	false	false	false
13085	1	Meter Comm	Kommunikation mit Energie Meter des WR		uint16be	1	1	0		value		true	false	false	false
13086	1	Export Power Limitation	Einspeise Limitierung: AN=170 (0xAA), AUS=85 (0x55)		uint16be	1	1	0		value		true	false	false	false
13099	1	Backup SOC reserve	SOC Reserve für Backup	%	uint16be	1	1	0		value		true	false	false	false
30229	1	Global mpp scan	Global mpp scan AN=170 (0xAA) AUS=85 (0x55)		uint16be	1	1	0		value		true	false	false	false
33046	1	Battery max charge power	Maximale Ladeleistung der Batterie	W	uint16be	1	10	0		value		true	false	false	false
33047	1	Battery max discharge power	Maximale Entladeleistung der Batterie	W	uint16be	1	10	0		value		true	false	false	false
33148	1	Battery charging start power	Start Ladeleistung der Batterie	W	uint16be	1	10	0		value		true	false	false	false
33149	1	Battery discharging start power	Start Entladeleistung der Batterie	W	uint16be	1	10	0		value		true	false	false	false

input register id 200 (read only):

10710	200	Battery Serial	Batterie Seriennummer		string	10	1	0		value		false	false
10740	200	Battery1 Voltage	Batteriespannung	V	uint16be	1	0.1	0		value		false	false
10741	200	Battery1 Current	Batteriestrom	A	int16be	1	0.1	0		value		false	false
10742	200	Battery1 Temperature	Batterietemperatur	°C	uint16be	1	0.1	0		value		false	false
10743	200	Battery1 SOC nominal	Batterie SOC nominal	%	uint16be	1	0.1	0		value		false	false
10744	200	Battery1 SOH	Batterie SOH	%	uint16be	1	1	0		value		false	false
10745	200	Battery1 Total Battery Charge	Batterie-Ladeenergie gesamt	kWh	uint32sw	2	0.1	0		value		false	false
10747	200	Battery1 Total Battery Discharge	Batterie-Entladeenergie gesamt	kWh	uint32sw	2	0.1	0		value		false	false
10756	200	Battery1 Max Voltage of Cell	Battery Max Voltage of Cell	V	uint16be	1	0.0001	0		value		false	false
10757	200	Battery1 Position of Max Voltage Cell	Battery Position of Max Voltage Cell		uint16be	1	1	0		value		false	false
10758	200	Battery1 Min Voltage of Cell	Battery Min Voltage of Cell	V	uint16be	1	0.0001	0		value		false	false
10759	200	Battery1 Position of Max Voltage Cell	Battery Position of Max Voltage Cell		uint16be	1	1	0		value		false	false
10760	200	Battery1 Max Temperature of Module	Max Temperature of Module	°C	uint16be	1	0.1	0		value		false	false
10761	200	Battery1 Position of Max Temperature of Module	Battery Position of Max Temperature of Module		uint16be	1	1	0		value		false	false
10762	200	Battery1 Min Temperature of Module	Min Temperature of Module	°C	uint16be	1	0.1	0		value		false	false
10763	200	Battery1 Position of Min Temperature of Module	Battery Position of Min Temperature of Module		uint16be	1	1	0		value		false	false
10764	200	Battery1 Max Cell Voltage of Module 1	Battery Max Cell Voltage of Module 1	V	uint16be	1	0.0001	0		value		false	false
10765	200	Battery1 Max Cell Voltage of Module 2	Battery Max Cell Voltage of Module 2	V	uint16be	1	0.0001	0		value		false	false
10766	200	Battery1 Max Cell Voltage of Module 3	Battery Max Cell Voltage of Module 3	V	uint16be	1	0.0001	0		value		false	false
10767	200	Battery1 Max Cell Voltage of Module 4	Battery Max Cell Voltage of Module 4	V	uint16be	1	0.0001	0		value		false	false
10768	200	Battery1 Max Cell Voltage of Module 5	Battery Max Cell Voltage of Module 5	V	uint16be	1	0.0001	0		value		false	false
10769	200	Battery1 Max Cell Voltage of Module 6	Battery Max Cell Voltage of Module 6	V	uint16be	1	0.0001	0		value		false	false
10770	200	Battery1 Max Cell Voltage of Module 7	Battery Max Cell Voltage of Module 7	V	uint16be	1	0.0001	0		value		false	false
10771	200	Battery1 Max Cell Voltage of Module 8	Battery Max Cell Voltage of Module 8	V	uint16be	1	0.0001	0		value		false	false
10772	200	Battery1 Min Cell Voltage of Module 1	Battery Min Cell Voltage of Module 1	V	uint16be	1	0.0001	0		value		false	false
10773	200	Battery1 Min Cell Voltage of Module 2	Battery Min Cell Voltage of Module 2	V	uint16be	1	0.0001	0		value		false	false
10774	200	Battery1 Min Cell Voltage of Module 3	Battery Min Cell Voltage of Module 3	V	uint16be	1	0.0001	0		value		false	false
10775	200	Battery1 Min Cell Voltage of Module 4	Battery Min Cell Voltage of Module 4	V	uint16be	1	0.0001	0		value		false	false
10776	200	Battery1 Min Cell Voltage of Module 5	Battery Min Cell Voltage of Module 5	V	uint16be	1	0.0001	0		value		false	false
10777	200	Battery1 Min Cell Voltage of Module 6	Battery Min Cell Voltage of Module 6	V	uint16be	1	0.0001	0		value		false	false
10778	200	Battery1 Min Cell Voltage of Module 7	Battery Min Cell Voltage of Module 7	V	uint16be	1	0.0001	0		value		false	false
10779	200	Battery1 Min Cell Voltage of Module 8	Battery Min Cell Voltage of Module 8	V	uint16be	1	0.0001	0		value		false	false
10780	200	Battery1 Cell Type of Module 1	Battery Cell Type of Module 1		uint16be	1	1	0		value		false	false
10781	200	Battery1 Cell Type of Module 2	Battery Cell Type of Module 2		uint16be	1	1	0		value		false	false
10782	200	Battery1 Cell Type of Module 3	Battery Cell Type of Module 3		uint16be	1	1	0		value		false	false
10783	200	Battery1 Cell Type of Module 4	Battery Cell Type of Module 4		uint16be	1	1	0		value		false	false
10784	200	Battery1 Cell Type of Module 5	Battery Cell Type of Module 5		uint16be	1	1	0		value		false	false
10785	200	Battery1 Cell Type of Module 6	Battery Cell Type of Module 6		uint16be	1	1	0		value		false	false
10786	200	Battery1 Cell Type of Module 7	Battery Cell Type of Module 7		uint16be	1	1	0		value		false	false
10787	200	Battery1 Cell Type of Module 8	Battery Cell Type of Module 8		uint16be	1	1	0		value		false	false
10788	200	Battery1 State DC Switch	Battery State DC Switch		uint16be	1	1	0		value		false	false

@c0ldtech
Copy link

c0ldtech commented Apr 23, 2025

Those registers are "holding registers", which can be written to. You probably only have "input registers" configured right now, those only provide read-only data (metrics like power, voltage, etc.).

You can find those here.

edit: @0xdefec71f was faster

@0xdefec71f
Copy link

Hi. I have a Sungrow SH10RT and want to invest in an additional battery from Sungrow. I do not find any informations about stearing the battery over modbus. Which channel I do have to use if I want to tell the battery to unload or load to a certain capacity. Is there a way using Openhab as a Smarthome System to stear the battery over CAN? Thanks for you help.

Das Prozedere mit der Batterieaufrüstung habe ich auch schon hinter mir und würde das eher über die Sungrow App mit Installateurzugang machen. Diesen Händler-Zugang kannst du dir auch einfach selber registrieren und dich dann selbst von deinem privaten Zugang als zusätzlichen Installateur hinzufügen. Hier ist eine Anleitung von Sungrow: https://solarscouts.de/mediafiles/Sonstiges/Erweiterungsanleitung%20(DE)%20-%20SUNGROW%20SBR%20Speicher.pdf

Kurzfassung: Du musst anhand des Herstellungsdatums deiner neuen Batterien den ungefähren SOC berechnen und deine vorhandenen Zellen vor dem Einbau auf diesen SOC bringen. Der Min SOC wird dabei als Ziel SOC benutzt. Tipp: Setze vorher den Backup SOC auf 0% !

@hessenkletterer
Copy link

hessenkletterer commented Apr 24, 2025

Do you know a value for testing from the inverter which I can read and write? I tried it with the 13048 but it is not working. Thank you for the lists. Where did you find it? Can you send me the direct link to it or as an real table.

I have to stay with Openhab, because the whole house is connected to this system!

@hessenkletterer
Copy link

@0xdefec71f Danke für den Tipp. Ich habe gestern noch mich selbst als Installateur aufgenommen. Das ist wirklich einfach und man hat mehr Möglichkeiten.

@0xdefec71f
Copy link

Do you know a value for testing from the inverter which I can read and write? I tried it with the 13048 but it is not working. Thank you for the lists. Where did you find it? Can you send me the direct link to it or as an real table.

All holding registers are writeable. Can you at least read them? I can't help you with Openhab and its modbus addons.

@hessenkletterer
Copy link

@0xdefec71f Thank you! I have just tested it with the system clock year and it worked. Thank you for your help. I think I can manage if the battery is delivered.

@hessenkletterer
Copy link

@0xdefec71f

Hi, my battery is now installed and I am already testing. I can change the upper and lower limit of the battery. I can also see the chanages in the iSolarCloud App. But the inverter of sungrow will not limit the loading for example by 80%.

13057 1 Max SOC Max SOC % uint16be 1 0.1 0 value true false false false
13058 1 Min SOC Min SOC % uint16be 1 0.1 0 value true false false false

What am I doing wrong here?

The Batterie_EMS_Mode_Selection I set to 0 and
the Batterie_Forced_charge_discharge to "204"

@0xdefec71f
Copy link

@hessenkletterer

For me register 13057 works fine with your settings. But it could be the case, that your set upper limit is ignored, because the system needs to calibrate the new/whole battery after your installation. It does that from time to time, because LiFePo Batteries need to calculate the SOC from the taken energy and can not simply rely on the cell voltage as other lithium types. You can only see that in register 10743 (Battery1 SOC nominal), which shows the real SOC.

Register 13022 will only show you the battery SOC subtracted your limits. So if your max SOC is set to 80% and your (real nominal) battery SOC is 80%, then register 13022 will show you 100%. And this is also the value, which is always shown in the sungrow app. I don't know why sungrow did this, but it confuses a lot of people.

if it is not that, the problem may lie within Openhab.

@hessenkletterer
Copy link

@0xdefec71f

Thanks for your informations. But I will not get access to the register 10743:

image

@0xdefec71f
Copy link

10743 is not a holding register! It is input register with ID 200.
13057 is a holding register with ID 1.

@hessenkletterer
Copy link

Thank you. I changed now to this:

image

I also deactivated it for 4 hours and tried it again. But I will still get the failure info.

@hessenkletterer
Copy link

hessenkletterer commented May 24, 2025

Another question. I also do not find this 2 informations in the Register:

image

Right now I calculate it very complicated. But I want the right informations directly from Sungrow Modbus Binding

  1. Loading or Unloading of the battery in W and
    I used 13021. But this register will show me something with 65000 W if I load or stoped the battery loading. Unloading is fine.

  2. Only the power from the panels without the power from the battery

@0xdefec71f
Copy link

@hessenkletterer again, i cannot help you with OpenHAB. Maybe it's the configuration, maybe your inverter or battery. With id 200 you are talking directly with the battery through the inverter. That's why only sungrow batteries are compatible with id 200.

Also this could be a reason:
image
Try to delete all registers, you do not need. The most interesting values could be cut down to about 10 or 20 registers. If there is an error message, read it!

  1. is 13021, but it looks like you disconfigured the datatype. this is a signed register: int16be
  2. is 5016

@kshala
Copy link

kshala commented May 25, 2025

@hessenkletterer (disclaimer I use home assistant and never seen your tools. Below tips are pure speculation and deductions). Simply use your inverter modbus and don’t attempt for the battery directly.

  1. Check on Ethernet. Use the back ethernet port. It allows to access more registers. Don’t use dongle WiFi and don’t use the dongle ethernet.
  2. Check the ip. If you did connect to the back ethernet, your dhcp (I guess your FRITZ!Box) did assign an ip to it.
  3. Check your parent bridge. Use above ip and set modbus device to "1" to talk to your inverter.
  4. Set start to 13022 which is the register of battery level/soc.
  5. Set length to 1. tldr: Sungrow uses word register lengths; 2 bytes big endian per register.

this would be analog to any other register. However, I recommend home assistant or iobroker. There’s just more support here on GitHub.

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