Universal Solar Inverter over Modbus RS485 / TCP custom_component (Growatt, Sofar, SolaX, Solis)

I have figured out that the distributor of SolaX sold me (separately) the Generic Eastron))) At least I know now what is wrong)))

I hope someone can help me with a problem. I installed the custom component via HACS, added and configured the integration and all is working well pulling sensor data from my Solax X3 inverter. However, when I try to send a write command it immediately reverts back to the existing value. I can see in the HA log that I make a change and then about 30s later another log entry shows the value being changed back by the system.

I read somewhere about an “unlock inverter” button which I couldn’t find but I did find an entity called button.solax_unlock_inverter and one called button.solax_unlock_inverter_advanced but these didn’t seem to do anything.

I am connected to the inverter via the LAN port and I have disconnected the pocket wifi dongle in case it is interfering. Did I misunderstand and you can’t send commands via the LAN port?

Hi all, I’m back.

I’ve managed to get a Pocket Wifi adapter, it’s set up with the inverter and is online. I can see the inverter in the Solax Cloud App and I’m getting readings. Where I’m now having an issue is in connecting HA to it. I’m getting the following error message from the logs:

This error originated from a custom integration.

Logger: homeassistant.config_entries
Source: custom_components/solax_modbus/__init__.py:261 
Integration: SolaX Inverter Modbus (documentation, issues) 
First occurred: 17:50:29 (1 occurrences) 
Last logged: 17:50:29

Error setting up entry SolaX for solax_modbus
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 335, in async_setup
    result = await component.async_setup_entry(hass, self)
  File "/config/custom_components/solax_modbus/__init__.py", line 89, in async_setup_entry
    inverter_data = hub.read_holding_registers(unit=hub._modbus_addr, address=0x0, count=7)
  File "/config/custom_components/solax_modbus/__init__.py", line 261, in read_holding_registers
    return self._client.read_holding_registers(address, count, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/pymodbus/client/common.py", line 114, in read_holding_registers
    return self.execute(request)
  File "/usr/local/lib/python3.9/site-packages/pymodbus/client/sync.py", line 108, in execute
    raise ConnectionException("Failed to connect[%s]" % (self.__str__()))
pymodbus.exceptions.ConnectionException: Modbus Error: [Connection] Failed to connect[ModbusTcpClient(192.168.2.203:502)]

I’m not sure why it won’t connect. I’ve managed to get a picture of the label on the side of the inverter:

It seems to suggest that this is an X-1 Hybrid - 5.0-D model?

This custom_componet won’t work with the Pocket WiFi or Pocket Lan.
You need to look into SolaX Power - Home Assistant

To use this custom_componet with your Gen4 X1 you will need to either use a RS485 - USB adaptor or a RS485 - Ethernet adaptor like I have previously mentioned.

Apologies, I posted in the wrong thread! I got the two confused.

Hello Wills, it would be possible to add an input number in the next revisions to modify sensor.solax_export_control_user_limit Thanks for the great work!!!

Are you using a Gen3? Also is is an X1 or X3 and what’s the kW rating of it?

Is a Gen 2, sk-su5000e

What’s the highest value you can set it to from the LCD on the Inverter?

The page in the manual for Export Control shows 4000w (7.3 LCD Operation, section J) or is it the actual rating shown as 4600w under 4.2 AC Output?


This Is the factory value and Max value to select

So are you wanting to limit the amount it exports?

I know it’s showing 60kW but I am wondering if it’s actually 6kW?
Have you tried adjusting it on the Inverter yet?

Yes, I want to be able to limit the export to my convenience.
I have tried to select 100w and it effectively exports 100w. It makes no sense that the limit is 60 kWh, but it is.
Thanks.

Ok, I’ll just set the max to the limit of the Inverter, otherwise the slider would be hard to set if it was 0 - 60,000.

I’ll keep it a more sensible 0 - 6,000 or what ever the maximum the Inverter can handle. I can do this based off the Serial Number and what’s in the manuals for the different models.

Perfect!!!

Hello again @wills106
I finally managed to reorder and to install the SolaX meter SDM 630. After connecting it to the SolaX X3 inverter and installing your custom integration I succeded in getting the lovelace panel from your integration with the right data. However I fail to read the modbus registers via the yaml file. I’m using the TCP connection(the same address I connected your integration ). So basically after saving the file in the packaged directory and rebooting the Raspberry I don’t see any sensors in the state folder. What I’m doing wrong? Appriciate your help.

If you are using the custom integration you don’t need any of the yaml files.

The Integration has replaced the yaml packages and offers a lot more functionality.
I don’t even know if the yaml files work at all, as I haven’t been following any breaking changes from the built in Modbus component.

Hi,
I have a Solax X3-MIC Inverter (model: X3-9.0-T-D). I want to use this integration to get data from Solax Inverter into my Home Assistant, but I have a modbus RS485 port connected to SDM630 via pins 7-8. According to the user manual, the RS485 on this model has another interface “provided for the inverter setup engine” on pins 4-5.

Does anyone have experience with interface on pins 4-5?
I would like to use these pins 4-5 for connection with Waveshare RS485 to RJ45 Ethernet Converter Module. Will it be a functional solution?

For the gen4, pins 4-5 are used on a different connector than the SDM640 meter connector. So unsure if the MIC pins 4-5 speak the modbus protocol. Worth trying however. You can first try with a low cost usb RS485 before buying the slightly more expensive Ethernet converter.

My new home has a SolaX inverter, type X3-8.0-T-D, serial number starts with MU802TH.

The manual is named “X3-MIC-User-Manual.pdf”, but it doesn’t mention the “MIC”-part in the manual.

It doesn’t have a built-in Ethernet connector, instead it has a connector for Pocket WiFi/Lan/GPRS.

The manual shows the following image for the RS 485/Meter connector:

I’m assuming that I need a RS-485-to-Modbus-TCP converter, and connect to pins 4 and 5.

Is there any point in connecting an energy meter to the inverter if there is no battery storage? Or would that only be for showing that information in the SolaX cloud portal?

That’s correct looking at the manual.

If you have a Modbus Energy Meter you will have a better idea of what you are importing or exporting from the grid. Are there any CT clamps wired to your Inverter? You may already be able to see what you are importing / exporting anyway.

I will add that serial number into the Integration and release a new version. Looking at the Modbus docs, I am not expecting it to work straight away. The registers seem to be in a different place on the X3 Mic and no one has confirmed if it works or not.
We can get it working if the registers need changing to suit your Inverter, you will just have to help with testing.

1 Like