Growatt inverter with local decoding of the WiFi dongle<->RS232 messages

I’ve built an ESP8266 based dongle to fit between the inverter RS232 port and the WiFi dongle that communicates with the ShineLan box. I can successfully monitor all the data requested by the ShineLan box. This is updated approximately every 8 seconds, so is as “real time” as I’m likely to get, and without impacting on any of the Growatt server functionality. I don’t want to use the RS485 link as this is already used for communication with the battery… and am also having issues with my installer so don’t want to do anything that could add further fuel to those flames!

The inverter data provides access to literally thousands of 16 bit registers. I‘ve successfully published several of these (PV1&2 voltage and power, grid voltage and frequency, etc.), but I would ideally like a way to publish all the data to HA and then choose within HA which values get displayed and how.

I’m a novice with HA and components but comfortable with C++. I’ve worked out how to publish floats but wonder if there is a way to publish a raw byte string (i.e. not formatted text) and, if so, how to select and present the values in HA.

Using this method would send one message containing up to 250 bytes of information per second. Sending as floats would potentially require over 100 messages, so would not be practical.

Any constructive suggestions would be appreciated.

My growatt have 3 rs485

Yes my Growatt has 3 off RS485 - one for the current transformer, one for the battery interface and one unused. However, given my issues with my installer I don’t want to use the remaining RS485 so there can be no claims that I’m interfering with operation, regardless of if that makes any sense to anyone who knows what they are doing. Snooping the RS232 however cannot be accused of dooing that.
My dongle fits inline with the WiFi dongle with everything screwed together as a rigid structure fitting tidily under the inverter.

I am interested in your project. Are you able to share details on your dongle design and code.

I currently using a RS485 man in the middle device between my Growatt Inverter and Eastron SMD630 meter to gain information from my Meter via MODBUS TCP on HA. However also interested in gaining access to the RS232 data.

Sorry for the delay in responding but life has got in the way and I’ve not had time to look at anything related to this for months.

Yes I’m happy to share the design, code and even the design of the 3D printed case for the dongle.

Growatt documention is questionable at best and I didn’t want to impact with their dongle’s data flow so I went for a very simple vampire tap ectronics solution.

The software is horrible as I’ve felt in the dark trying to work my way to getting data in a development enviroment that is lacking any realy useful end to end examples of this type of complexity. Primarily this first stage was essentially writing code to allow me to look at Growatt’s messages (to at least partially validate their coding) and then send them to Home Assistant.

At the other end I then tried out a number of ways to display the information on low cost LCDs. Having got this working reasonably ok (as much as anything I was trying to find what information would be of real use), I’ve just come back to the code after about 9 months and the display driver (ili9341 “updated” to ili9xxx) has broken everything.

This photograph shows my dongle fitted between the inverter and Growatt’s own dongle. My dongle is powered by a normal USB charger (power lead coming from the left) as I don’t know how much power is available from the inverter’s RS232 port.

This is one of the displays that I’ve made.


The display cycles through different fields in the bottom row - mains voltage, mains frequency, total power today and total power generated since installation.

The whole page also flips to this othere screen every 5 seconds.


The electronics is just a ESP8266 connected to a few components on a piece of Veroboard.

This is the first time that I’ve tried uploading on this site and I’m not currently sure how to add the source code, so that’s for another day.