Growatt RS485 Modbus Easy setup

After searching for quite some time, I think I have found an easy and pretty straight forward solution to connect (the newer type) of Growatt inverters to Home Assistant without the need of the cloud.

1: Connect a cable on the A and B of the RS-485 (modbus) connector on your Growatt inverter (you will need the large extra connector)
2: on Ali-express buy the USR-DR164
3: connect a power supply (8-30V DC) to the USR-DR164
4: connect the cables from the Growatt inverter (A & B) to the A and B connector of the USR-DR164
5: Power up the USR-DR164 and use your laptop or phone to connect to the wifi network created by the USR-DR164
6: using the instruction manual which comes with the USR-DR164, connect the DR164 to your own Wifi Network (keep in mind that it can do modes simultaniously, client of a network and create it’s own, for the stability of your own network, make sure to use only Wifi Client


so STA mode only
7: note the IP address given by your DHCP server (modem-router) preferably make sure the DHCP server will hand our the SAME IP address by going to your modem-router settings.
8: make sure to set the following like in the picture below:

Be sure to save, (do not restart just yet)
9: make sure to set the Net Settings as below:

Now choose RESTART for the USR-DR164
10: Go to Home Assistant and make sure HACS is installed
11: In HACS download and install SOLAX Inverter Modbus
12: Go to Settings in Home Assistant, and Devices, click ADD INTEGRATION
13: add SOLAX Inverter Modbus and use the following settings:


make sure to set the IP adress of the USR-DR164 as previously configured
14: click SUBMIT and the data will come flowing in (when the sun is shining)

For already quite some time there is a custom integration ‘grott’ which works pretty well too :slight_smile:

Where to find GROTT and what hardware is needed for GROTT?

docker/container or add-on… this is the docker one that I use
johanmeijer/grott: Growatt inverter monitor

EDIT: plenty of posts on this forum too…just search

I have looked at this option, but it seems a “standalone” solution that does not direcly integrate with Home Assistant and needs to run on another device, alongside Home Assistant to exchange data using MQTT.
The nice solution using the cheap USR-DR164 is that it integrates with SOLAX in Home Assistant directly, without the need of another Raspberry Pi or other computer.

Correct me if I am wrong please

Yeah…well… if you want to write the code required to create the individual sensors…yes. grott covers a lot of machines, uses a dongle that most people have, forwards data to the cloud too and is ‘relatively’ simple to setup
and grott does NOT need another machine

Hi, i bought USR-DR164 connected and tried with Growatt SPH 10K + Solax modbus integration. It seems there is some issue in communication. This is what i see in HA log:

2025-04-15 15:23:13.945 ERROR (MainThread) [pymodbus.logging] No response received after 6 retries, continue with next request
2025-04-15 15:23:13.945 ERROR (MainThread) [custom_components.solax_modbus] Error: device: 1 address: 1017 → Modbus Error: [Input/Output] No response received after 6 retries, continue with next request
2025-04-15 15:23:13.946 ERROR (MainThread) [custom_components.solax_modbus] Something went wrong reading from modbus
Traceback (most recent call last):
File “/config/custom_components/solax_modbus/init.py”, line 691, in async_read_modbus_data
res = await self.async_read_modbus_registers_all(group)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/config/custom_components/solax_modbus/init.py”, line 861, in async_read_modbus_registers_all
res = res and await self.async_read_modbus_block(data, block, “holding”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/config/custom_components/solax_modbus/init.py”, line 791, in async_read_modbus_block
if realtime_data.isError():
^^^^^^^^^^^^^^^^^^^^^
AttributeError: ‘NoneType’ object has no attribute ‘isError’

What i see, HA can read data from GW, when i play with some modbuss tool. Like the communication line is sudenly activated by my windows tool (modbuss Poll), later its not updating anymore… Did u face similar issues? Do you have any recomendation?
Thank you

Good day.

With my TL3 -XH it worked straight away.
However with the older TLS it doesn’t work at all

Hello,
I have connected the Growatt MOD inverter using USR-DR164 and Solax Mobdus to HA, which works, but the problem is that the data in HA is refreshed too rarely. How can I change this so that the data is received continuously?

Hi! Were you able to manage it? Have more or less the same error. I have the following inverter: Growatt MIN 4600 TL-XH (with AI smart scheduling, was installed out of the box). I am afraid that this blocks MODBUS…

Hi! Were you able to manage it?

2025-06-13 19:31:46.912 ERROR (MainThread) [pymodbus.logging] No response received after 6 retries, continue with next request
2025-06-13 19:31:46.912 ERROR (MainThread) [custom_components.solax_modbus] Error: device: 1 address: 9 -> Modbus Error: [Input/Output] No response received after 6 retries, continue with next request
2025-06-13 19:31:46.912 WARNING (MainThread) [custom_components.solax_modbus.plugin_growatt] growatt: attempt to read firmware failed at 0x9
Traceback (most recent call last):
  File "/config/custom_components/solax_modbus/plugin_growatt.py", line 65, in async_read_serialnr
    if not inverter_data.isError():
           ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'isError'
2025-06-13 19:31:46.913 WARNING (MainThread) [custom_components.solax_modbus.plugin_growatt] growatt: reading firmware number from address 0x9 failed; other address may succeed
2025-06-13 19:32:21.920 ERROR (MainThread) [pymodbus.logging] No response received after 6 retries, continue with next request
2025-06-13 19:32:21.920 ERROR (MainThread) [custom_components.solax_modbus] Error: device: 1 address: 3001 -> Modbus Error: [Input/Output] No response received after 6 retries, continue with next request
2025-06-13 19:32:21.920 WARNING (MainThread) [custom_components.solax_modbus.plugin_growatt] growatt: attempt to read firmware failed at 0xbb9
Traceback (most recent call last):
  File "/config/custom_components/solax_modbus/plugin_growatt.py", line 65, in async_read_serialnr
    if not inverter_data.isError():
           ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'isError'
2025-06-13 19:32:21.921 WARNING (MainThread) [custom_components.solax_modbus.plugin_growatt] growatt: reading firmware number from address 0xbb9 failed; other address may succeed
2025-06-13 19:32:21.921 ERROR (MainThread) [custom_components.solax_modbus.plugin_growatt] growatt: cannot find firmware version, even not for other Inverter
2025-06-13 19:32:21.921 ERROR (MainThread) [custom_components.solax_modbus.plugin_growatt] unrecognized growatt inverter type - firmware version : unknown
2025-06-13 19:33:06.942 ERROR (MainThread) [pymodbus.logging] No response received after 6 retries, continue with next request
2025-06-13 19:33:06.943 ERROR (MainThread) [custom_components.solax_modbus] Error: device: 1 address: 9 -> Modbus Error: [Input/Output] No response received after 6 retries, continue with next request
2025-06-13 19:33:06.943 WARNING (MainThread) [custom_components.solax_modbus.plugin_growatt] growatt: attempt to read firmware failed at 0x9
Traceback (most recent call last):
  File "/config/custom_components/solax_modbus/plugin_growatt.py", line 65, in async_read_serialnr
    if not inverter_data.isError(

Not familiar with SOLAX-integration yet. But it is important to me to set Export Limit from the inverter in that application. Is that possible?

Hi everyone,

I recently bought a USR-TCP232-410S for Modbus communication with my Growatt SPH 4600 inverter. There’s an RS485 port available, so I connected an RJ45 plug and stripped the other end of the cable. However, I’ve tried several wiring combinations, but none of them seem to work.

Does anyone know which wire colors I should be using?
I’ve set the inverter port to VPP instead of Battery.

Thanks in advance!