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

2022.12.1

Due to the number of breaking changes in the 2022.12.1 code, when upgrading from 0.6.4 you need to remove the Integration from the Integration page before updating, then re add the Integration following restarting Home Assistant.

Welcome new Inverters from Ginglong Solis and Sofar Solar :partying_face:

Updated select options to Support Home Assistant 2022.11
Support for Home Assistant 2022.12.x

Thanks to @infradom we have a new Plugin mechanism allowing for easier support of different Inverter Brands and Models.

Extra Support for Sleeping Inverters:

Ignore 9 out of 10 polling cycles when Modbus down - Reduces slowdown.
Breaking Changes:
Renamed RST to L1, L2 & L3
Renamed pv_total_power to pv_power_total

SolaX:
Added:

Added some modbus power control registers (Gen4 Readonly)
Disabled by default “Selfuse Backup SOC” (Potentially not fully Implemented correctly on all Gen4)
Pgrid Bias Select (Gen4)
Que write_register when Inverter sleeping / automatic waking of Inverter
Known Issues:
Sofar:

Number & Select Entities not fully Implemented.

I would like to thank everyone who contributed to this release either through suggestions, feedback or code ideas. This release went through 75 beta versions to get here!

Please remember to check:
Known issues section
Wiki
Todo List V2
Searching Closed Issues before raising a new Issue and don’t forget to follow the template.

1 Like

I replaced the Eastron with an Acrel meter and everything went fine instantly 
 no more RS485 error.

Did the Acrel have SolaX specific Firmware?

No idea for Solis it is in the inverter that you select the type of meter

Sorry I was getting mixed up with who owns which Inverter.

I know to use an Estron on a SolaX Inverter they need a SolaX specific firmware.

I upgraded as instructed, now it no longer works. I get the following error:

Deze fout is ontstaan door een aangepaste integratie.

Logger: custom_components.solax_modbus.plugin_solax
Source: custom_components/solax_modbus/plugin_solax.py:139 
Integration: SolaX Inverter Modbus (documentation, issues) 
First occurred: 10:20:28 (1 occurrences) 
Last logged: 10:20:28

unrecognized inverter type - serial number : MU802Txxxxxx

HACS also doesn’t list version 0.6.4 anymore, so not too happy about this.

I see that 0.6.4 is not marked as a release in Github, can you do that so that I can at least downgrade until this is fixed?

Fixed it for now by adding the serial to plugin_solax.py:

elif seriesnumber.startswith('MU802T'):  invertertype = MIC | GEN2 | X3 # MIC X3

As far as we know, 0.6.4 would not run anymore on HA core 2022.12.x
We would have to backport some changes in config_flow to 0.6.x first, since the old config_flow does not work anymore.
Sorry, you probably meant downgrade HA core also 


It ran fine actually.

Probably yes, until you need to re-create the integration, then as far as I know, the config_flow fails

1 Like

Ah, OK. So that wouldn’t have solved anything. Got it.

While this works, I now also get all kinds of battery and charger settings, so it might not be the right type. Or is this expected?

I believe this correction should be fine, but @wills106 is much more familiar with the different models 


I’ll update the Integration with your Serial. I had to make a change to serial handling to work with the Gen2 as they calculate some values different such “Total Yield” & “Today’s Yield”

Is yours Gen1 or Gen2 of the X3 MIC?

I thought I had corrected that. I guess not.

I’ll release a new version shortly.

I see you have temporarily defined your Inverter as Gen2 is that correct?

Best was is to check “Total Yield” & “Today’s Yield” If they values are massively different to what’s displayed on the LCD then you probably have a Gen1.

Edit:
Looking at your serial compared to the other X3 MIC’s I would expect it to be a Gen1

Hm, indeed, the values are way too high now. Crap, have to fix the statistics database now.

What I don’t understand is that my serial was working fine with 0.6.4. Why would you remove a working serial


Changed it to GEN instead of GEN2. Now most battery related settings are gone again, except “Battery Awaken”.

I haven’t removed any serials, I had to be more precise so I could determine what Gen the Inverters are.

Before I had:
elif seriesnumber.startswith('MU80'): invertertype = MIC | GEN | X3

I was initially aware of ‘MU803T’ which is the Gen1 but then ‘MU806T’ turned up which is the Gen2 version.

So I wasn’t able to detect the difference between the Gen1 & Gen2 as I wasn’t precise enough.

I then split it as:

elif seriesnumber.startswith('MU803T'):  invertertype = MIC | GEN | X3
elif seriesnumber.startswith('MU806T'):  invertertype = MIC | GEN2 | X3

But I wasn’t aware of ‘MU802T’ so I need to add another Gen1 entry.

elif seriesnumber.startswith('MU802T'):  invertertype = MIC | GEN | X3
elif seriesnumber.startswith('MU803T'):  invertertype = MIC | GEN | X3
elif seriesnumber.startswith('MU806T'):  invertertype = MIC | GEN2 | X3
1 Like

Ah, OK, thanks for explaining. I understand now.

1 Like

2022.12.2 should add your Inverter correctly and remove all the unwanted Number / Select Entities.

Unfortunately I found another problem that was not present in 0.6.4: when the inverter switches to run mode “Waiting”, the total yield drops to 0, which causes the statistics to fail tomorrow when it switches back to “Normal Mode”.

It should report this value as “Unavailable” or hold the previous value.

Same goes for the frequency measurements and inverter temperature which all drop to 0.

That messes up statistics.

I’m pretty sure this issue was solved before (except for the temperature)