Does the DIYBMS support RS485 to communicate with Growatt SPH Hybrid Inverters?

Like the title says:

Does the DIYBMS support RS485 protocol to communicatie with Growatt SPH Hybrid Inverters ?

Any information is welcome.


However, there has been work done to use RS485 to emulate Pylontech battery communication.

Is there any documentation on how the Growatt talks to the battery (or what it expects to receive) ?

I ran into the same issue with an EG4 6500-EX All-In-One Inverter which has a CAN connection, however their firmware does not yet support. LIb protocol over RS485 (fixed at 9600b) is a supported option, so I ended up building a BIYBMS CAN to RS485 LIb translator using an Arduino Nano and appropriate breakout boards. Some documents call it MODBUS, but the only part of the MODBUS protocol it uses is the CRC calculation. EDIT: It is indeed MODBUS, limited to Command 3.

Not the most elegant solution, but it works well with both shunt and display. Simplified diagram:

DIYBMS <->(CAN)<->MCP2515 breakout<->(SPI)<->Arduino<->(TTLserial)<->TTLtoRS485<->(LIb)<->EG4 Inverter

Sketch attached, feel free to use for inspiration or as-is. EG4_BMS_Comms.ino (19.2 KB)


just like i want to make for the diybms to comunicate with my car, i hope some day i can get there :stuck_out_tongue:

Cool :+1:

Must the code be altered for the Growatt RS485 MODBUS protocol ?

1xSxxP_ESS_485 protocal_rev _23_20171128.pdf (245.1 KB)

Here’s the MODBUS traffic I see:

1 3 0 70 0 1 85 D1
1 3 0 71 0 1 D4 11
1 3 0 72 0 1 24 11
1 3 0 73 0 1 75 D1
1 3 0 34 0 2 85 C5
1 3 0 74 0 1 C4 10
1 3 0 33 0 1 74 5

A quick glance at the Growatt doc says it should work without alteration.

If you’re looking for an off-the-shelf solution, this might do the trick!

The next version of the code has experimental support for CANBUS emulation of PylonForce high voltage battery, which Patrick Prasse has provided to me. Is this similar to the Growatt SPH battery?

Thanks for this, I’ve created an issue here Support EG4 6500-EX All-In-One Inverter over RS485 · Issue #255 · stuartpittaway/diyBMSv4ESP32 · GitHub to look at incorporating your ideas/solution (but native RS485 rather than the CAN to RS485 bridge)

These inverters insist on being master. Do you think it’s possible for DIYBMS to act as master for your shunt and slave to an inverter on the same 485 port? Also, baud is fixed at 9600 (on EG4, unsure of GroWatt) which is an issue with sharing existing 485 connection.

Probably not with both connected - however the v4.6 of the controller board has the shunt onboard, so doesn’t require the external shunt/rs485 port at all.

Makes sense! I will get a v4.6 board ordered and work on a pull request.

@stuart , should this also work with an older controller board (v4.5?) outfitted with the CurrentShuntAddonBoard? JLC has all parts in stock for it, whereas they’re missing a few components for the v4.6 controller.

Yes it should - that add on sort of upgrades the 4.5 to a 4.6 board

CurrentShuntAddonBoards have been ordered. I’ll work on the pull request while I wait for them to arrive.


Here is some more info about the Modbus RTU protocol Growatt uses on their devices.

The information PDF file can be downloaded here: Growatt Inverter Modbus RTU Protocol II

Whould be nice if it could be integrate into DIYBMS so we can see some battery info such as SOC and mabe others things too.

To be honest, I’m surprised this question hasn’t been asked here before because there are such a large Growatt user base out there.