I had this exact issue, and have worked out a solution which works reasonably, but not perfectly. I have sungrow inverters, but it shouldn’t matter.
It relies on the fact that the voltages of the solar circuits (MPPT) drop when they are providing a load, but when they are activated by light with no load they approach their maximum.
-
I exported from HA my voltage and current data for my four strings of panels for about a week. I also exported my solar luminance values from my weather station for the same period.
-
I graphed out each days data separately, putting voltage, current, and then overlaying the luminance. I ended up having to split two strings onto a different graph because they were older panels and had different performance patterns which made it harder to interpret.
-
It turned out there was a really obvious pattern - based on photoelectric effect.
— When the panels are exposed to light, but no current is being drawn, then the string voltage is up near its maximum value. It varies a bit, but not lots.
— As soon as a reasonable current is drawn the voltage drops significantly to another very obvious range - which does not overlap with the previous values.
— Low light levels affect this effect so it tails up and down at the beginning and end of each day.
— I found that sunny days vs cloudy days caused different behaviour in regards to what luminance values caused the strings to produce.
— When curtailing is enabled on any one string, then the voltage of that string shoots up into the high voltage range.
I was able to create an algorithm that looks at the present voltage of each string and gives it a value as either curtailed or not. It only operates when the luminance values are above certain amounts, and those luminance amounts vary depending on current cloud conditions (per my weather station).
I then created a sensor for “curtailed strings” that uses the voltage algorithm to give a state value of “None/One/Two/Three/All”.
I then use that value to give a good idea how much unutilised PV energy there is, and turn on loads based on that.
For example: My EV gets turned on at low power value, and ramps up based on how many strings remain curtailed at each power level - allowing the inverter to rebalance the solar vs grid each time I up the current.
To make all this work well, i had to manage my curtailment using HA rather than letting Amber do it. It may have coexisted okay, but it was something else i could then control as needed.
It remains to be seen whether these settings will continue to work as winter approaches and lighting levels change etc - but it has worked well for the last couple of months or so.
I could probably have been more accurate in the various voltages using mathematics from the panel specs, but eyeballing the graph seemed easier and worked well