diy solar

diy solar

RS485 data from Growatt SPF 3000TL LVM

cxtinac

New Member
Joined
Oct 21, 2021
Messages
5
I have 2 Growatt SPF 3000TL LVM inverters which are running great, and I'm trying to get RS485 Modbus RTU data from them.
I have code running on an ESP32 and I'm pretty sure talking valid protocol to one of them (I've put a scope on the connection and I can see the dialog back & forth).
But when I try to process the data, all I'm getting is ModbusMaster ku8MBInvalidSlaveID

Taking the simplest assumption to start, I assume this really means the RS485 slave ID I request data from is different than the Growatt I have hooked up.

The documentation is scant and ambiguous unfortunately.
The only setting that sounds close in the settings menu is #28 "Address setting". I tried this at the default setting of 001, and I also tried setting it to 098 but in both cases I get the InvalidSlaveID message. (Obviously updated my code to point at the same address).

The only other hint I have found is in one (of many) versions of the Growatt RS485 protocol pdf which says:
double-knock.png
This pdf says it is for the SPF5000 and is the closest I have found but after much fiddling with the menu buttons, I cannot get any hint of anything corresponding to this.

So I'm really hoping that someone has successfully used the RS485 data port (not the BMS port) to communicate successfully with a Growatt SPF 3000TL LVM inverter, and can shed some light on what I'm doing wrong.

I guess an alternative would be to try and sniff the Modbus dialog and extract whatever the Growatt ID actually is.

Thanks in hope, suggestions welcome.
 
I'm not sure I fully understand the question. Are you writing code on the ESP32 to connect to the growatt over a Bluetooth connection? How are you connecting to the growatt? Bluetooth?
 
Thanks for responding.
I am connecting over RS485 Modbus RTU as I mentioned. This is a wired protocol, it has nothing to do with bluetooth and this Growatt does not support bluetooth.
My code sends an ID over the serial modbus wires that is intended to match the ID of the Growatt. It appears the Growatt understands that a request has been made, but unfortunately an error is generated because whatever ID the Growatt is actually set to, it is different than my guess in the querying code.
Unfortunately the Growatt RS485 Modbus documentation I have been able to find is little help, is ambiguous and is poorly written (see example above).

So my question is:

Does anyone know how to either a) set, or b) discover the Modbus slave ID of an SPF3000TL LVM Growatt inverter?
 
Thanks for responding.
I am connecting over RS485 Modbus RTU as I mentioned. This is a wired protocol, it has nothing to do with bluetooth and this Growatt does not support bluetooth.
My code sends an ID over the serial modbus wires that is intended to match the ID of the Growatt. It appears the Growatt understands that a request has been made, but unfortunately an error is generated because whatever ID the Growatt is actually set to, it is different than my guess in the querying code.
Unfortunately the Growatt RS485 Modbus documentation I have been able to find is little help, is ambiguous and is poorly written (see example above).

So my question is:

Does anyone know how to either a) set, or b) discover the Modbus slave ID of an SPF3000TL LVM Growatt inverter?
Sounds like an interesting project. If you're in the United States I have emailed the gw support team and they have gotten back to me. Granted it was after a few days. usaservice@ginverter.com. if you email them they might be able to forward the question to some of their Developers.. you May explicitly have to ask for a developer though. That's the only thing I can think of.
 
Thanks for responding, that's a possibility.
I know others have done this.
Anyone?
 
In case anyone else searches & comes across this thread, I did solve the problem.
More details are in this Reddit thread, but briefly this Growatt inverter has to be cold-rebooted for the Modbus device ID to be recognized.
As well, I can confirm that setting #28 "Address setting" is indeed referring to the Modbus device ID.
 
In case anyone else searches & comes across this thread, I did solve the problem.
More details are in this Reddit thread, but briefly this Growatt inverter has to be cold-rebooted for the Modbus device ID to be recognized.
As well, I can confirm that setting #28 "Address setting" is indeed referring to the Modbus device ID.
Hi,

I am trying to do the same for an SPF3000TL too. please do you mind sharing your code?
 
Back
Top