Here is all the info I can find regarding firmware on my Goodwe GW7600A-ES (w/ 15kWh battery):
```
# reported from within the SolarGo App
DSP Information 03.335
ARM Information 14.175
BMS Information 201
AFCI Information 01
Communication Module Information 1.2.1.18
```
```
# reported by home-assistant using the goodwe integration and ET (not ES!) driver:
Firmware: 04038-03-S10 / 02041-14-S00
Hardware: AES 97600
```
I am using the goodwe integration in home-assistant (HA) to successfully control my system now. There is a built-in goodwe integration for HA here:
https://www.home-assistant.io/integrations/goodwe/ but I have found that it is better to use the more advanced custom component which is available here
https://github.com/mletenay/home-assistant-goodwe-inverter. When you install the custom component it will replace the built-in one.
I have not communicated with the BMS directly, but rather only communicated with it indirectly via the inverter itself (i.e. using the SolarGo app or via python with a linux socat tunnel to the serial device).
Before I got the goodwe wifi/lan dongle hooked up, I was able to also talk to the inverter by using the RS485 cable which was originally connected to the Sierra Wireless fx30s device. So removing that device and connecting a linux box (i.e. laptop) that you control into that serial cable (you might need a usb <--> serial adaptor cable if you do not have one) gives you an RS485 connection to the inverter. Then you can use some linux tools like `socat` to bidirectionally forward traffic to/from UDP port 8899 and the serial device.
By mapping the device to the UDP port I was able to escape modbus hell and then just use the aforementioned python libraries which try to communicate with goodwe inverters via UDP. I was anxious to escape the low level modbus stuff because I have no experience whatsoever in that domain.
Once you get it working with python and/or HA directly, then it becomes relatively straight forward to switch the modes of the system. Here are the things I can change on the fly within HA:
View attachment 328427
Importantly, I was only able to get python/HA to actually change the "operating mode" of the inverter when using the 'ET' driver in the python library. So, despite my system being physically labeled as an 7600A-ES, it seems that the firmware is much closer to, and possibly nearly identical to, that of the ET family.
There is another variable here too: I am not sure whether the thing that finally gave me control was the fact that I switched to having the "official" dongle do the UDP serving rather than my linux `socat` trick or not. Using the official dongle seems to be the only way to use SolarGo to configure the inverter.
I poked around in SolarGo a bit and chose some default battery settings. But for all I know those settings did not need to be changed. So I am not currently convinced that I actually did anything in SolarGo that could not have been done directly using either python and the socat/UDP comms hack above or (in the worst case) by dropping all the way down into the land of modbus/RTU commands.
Now that I can control my system again, I am hesitant to pull the dongle and test the "is the dongle really necessary?" theory, but maybe that should be tried ...
Hope this is helpful!