wills106 / homeassistant-solax-modbus

SolaX Power Modbus custom_component for Home Assistant (Supports some Ginlong Solis, Growatt, Sofar Solar, TIGO TSI & Qcells Q.Volt Hyb)
310 stars 95 forks source link

[Bug]: Battery Minimum Capacity not applied #703

Closed Matz88 closed 6 months ago

Matz88 commented 7 months ago

Describe the bug

With an HYD6000 (sofar but rebranded) whenever I try to set the Battery Minimum Capacity or Battery Minimum Capacity OffGrid, the setting is not applied, and the previous value reverted back in few seconds. I see no specific errors in the log, do you know if some button need to pressed in order to save the value like for reflux?

Integration Version

2024.01.7

Homeassistant core version

2024.1.2

Inverter brand

Sofar

Plugin used

plugin_growatt.py

Serial prefix

ZM2ES0

Connection Method

Lan adapter

Detailed Error Log

No response

Additional context

No response

kai-seipp commented 7 months ago

This hier might be related: Setting the value of "Battery Minimum SOC" also can be set remotely. Once set via UI, it will jump back to the previous setting once the inverters values are read again via modbus.

BUT: Setting "Force Charge SOC" actually works. These are the two values you can set within a solis inverter on battery management, so I believe there is a good chance the first one can be set as well.

Both values are on Solis Inverters.

Probably related to issue: #713

cschlipf commented 6 months ago

That's right. This is not working as this is one of the examples, where Sofar requires a lot of registers to be written at once. Obviously it never worked as the required registers never got written in one batch.

However when looking at it I found out that in order just to set the depth of discharge we have to set 23(!) registers containing all the battery parameters. And a lot of these battery parameters are mission critical. Setting one of these parameters to the wrong value can be harmful.

See the documentation here:

image

Register we want to change are 0x104D and 0x104E. I intend to work on this issue in stages: Stage 1: Read all the parameters and get a good feeling on how reliably these are read. However given the criticality of these parameters I have a very bad feeling about this and I would rather propose to remove both parameters from the integration.

What is your use case that you want to achieve by changing these values? Maybe we can find another solution?

Matz88 commented 6 months ago

I see the point.

Was to decrease the DoD in winter to not leave the battery with a low state of charge when there are several days of bad weather. I tried also to limit the discharge staying in passive mode, but this has the drawback that in case the grid has a glitch, the inverter resets and as effect I have a small gap in the house power supply, few sec but enough to power cycle some devices that should not.

cschlipf commented 6 months ago

Thank you very much, @Matz88 - actually reducing the DoD for Winter would have been my use cases as well, however considering that you change this just 2 times a year and given the dangerousness of this operation (imagine you low voltage lead acid get's suddently threatet like a high voltage LiFePo battery), I totally fear this is not worth the risk.

As for your later case: Can you test this again with the latest version? I have changed quite a lot in passive mode handling allowing you to selectively limit discharge only and be able to control the timeout action. See https://homeassistant-solax-modbus.readthedocs.io/en/latest/sofar-energy-storage-modes/ for more information.

cschlipf commented 6 months ago

@kai-seipp - this defect is about Sofar. Please don't mix up other brands.

cschlipf commented 6 months ago

I know this is not what you are hoping for, but the PR will remove these non-functional controls for now. PR will close it as it is very unlikely that these controls will be added back

Matz88 commented 6 months ago

I understand the reason, no worries. I will try via the passive mode like in the linked issue. Have you succeeded already that way? I quickly tried but did not managed to have the current flows as expected yet, also clicking the button after.

cschlipf commented 6 months ago

Yes, I added that and tested it with my inverter. However I have an HYD 10 KTL-3PH.

cschlipf commented 6 months ago

@Matz88 with PR #799 we can start reading the battery parameters that are required in order to set depth of discharge, end of discharge, and EPS buffer.

Once released please activate the entities starting with "BatConfig:" and send me a screenshot of the values. This will be very useful in evaluating whether a write operation ever can be implemented successfully. On my inverter it doesn't look good unfortunately :(

Matz88 commented 5 months ago

Sorry I was not able to take time for this before, I cannot see any batconfig in the diagnostic, have been they already removed?

cschlipf commented 5 months ago

@Matz88 - the values are hidden by default and need to be enabled.

image

I recommend to go into the entity list, search for "BatConfig". Then select all entities and enable these.

In my case once enabled this looks like this:

image

It's important to check these regularly. We never must see any false or wrong values here. Not how the Cell Type claims it's Lead Acid, when I have a LiFePo BTS 5k Battery and the Protocol is set to "Move for", when actually it's "BTS"? :-(

So it really doesn't look like I will be able to set Depth of Discharge, End of Discharge or EPS Buffer in a safe way :-(

Matz88 commented 5 months ago

For me too the battery type is wrong: image rest seems ok, settings are ok

cschlipf commented 5 months ago

For me too the battery type is wrong: image rest seems ok, settings are ok

Thank you. Your protocol is also wrong.