Help needed - SMA, Solar Edge, Kostal, Enphase and others

Hey all,

Per Venus OS, v3.60 now in beta, more PV Inverters (SMA, SolarEdge, Enphase, Kostal and others) can be controlled by a GX device. Rather than just monitored/read-out.

Until v3.60 this feature was only available for Fronius and ABB/Fimer.

There are two features related to this active control/limiting:

  1. The Zero-Feed in option (See Settings → ESS → Grid Feedin → AC Coupled PV - Feed in excess yes/no. When set to “no”, the GX will actively control the PV Inverters, and reduce their output when needed to prevent selling energy back to the grid.

  2. the Dynamic ESS algorithm will use this to prevent paying for feed-in in case feed-in prices are negative.

Now - it would be great to get your help in confirming that this works well.

good news is also helpful!
Please post replies to this topic with your experience. Not only issues, but also situations where it does work are great to hear - to help build good documentation for that.

First some further details:

  • SolarEdge, SMA, Kostal and Enphase are supported and tested. Details below
  • Any other PV Inverter that that advertises the limiting ability through the SunSpec protocol will be detected and has the feature as well.
  • It is not possible to use this feature in conjunction with similar features of the PV Inverter itself. Ie. to use this in the GX, disable or remove SolarEdge/SMA/other energy meters and zero feed-in systems.
  • This active limiting is enabled and disabled with a new setting which defaults to Off. The reason for that is to avoid silently/unexpectedly enable the limiter on a running system by merely a GX device update.
    • Note that enabling that new setting only makes the GX “limiting aware” for the said PV Inverter. Thereafter, to actually enable limiting, either Disable the feed-in of excess AC-coupled PV in Settings → ESS, or use Dynamic ESS.
    • For Fronius and ABB/Fimer, nothing changes. PV-limiting support remains enabled by default and there is no setting for it.

Screenshot of the new setting, can be found in Settings → Device list → PV Inverter → Settings.

  • PV Inverter(s) must be connected on the same ethernet/wifi network as the GX device.
  • Modbus TCP communication must be enabled on the PV Inverter on port 502.
  • The PV Inverter must support the SunSpec protocol over Modbus and support either the information model 123 or 704 (these are the Sunspec information models related to throttling)
  • The PV Inverter must use the default Modbus Unit number = 126.

How to confirm that it works OK?

Disable AC coupled feed-in, and then on a sunny day when batteries are full and loads are low, observe that the GX os reducing PV Inverter output to match the loads and prevent feed-in.

SMA Specifics

Aside from enabling ModbusTCP, it is also needed to enable “enable External limiting via Modbus TCP” in the SMA settings.

Tested with:

  • SMA Tri power X 20 - fw 03.06.19.R
  • SMA STP3.0-3AV-40 - fw 4.00.70.R

SolarEdge specifics

Tested with:

  • Solar Edge SE5K - fw 0004.0021.00023
  • Solar Edge SE15K - fw 0004.0020.0036

Kostal specifics

Tested with:

  • Kostal PIKO IQ 7.0 - fw 01.80

Enphase specifics

Confirmed by Enphase, supported gateway models are:

  • ENV-S-WM-230
  • ENV-S-EM-230

Do note that it seems that Enphase Customer support must enable ModbusTCP support.

More details: Documentation Center | Enphase

For the reference, this is what I see in my Grafana on a sunny day when prices go negative and Fronius gets throttled by Venus. The limiting represented by a red line kicks in at 9:00 and lifts itself at 18:00. What a beautiful day!

1 Like

Everything seems to be working well! I’m using version v3.60~75, and the PV inverter is an SMA STP6.0-3AV-40 with firmware version 4.0.0.70.R. I had previously enabled the External Limiting functionality on the SMA, so there were no issues during setup.

Attached is a weekly statistic from Home Assistant. The limit value is zero at night because the inverter is off. The electricity price has been slightly below 0 cents/kWh on several days, so the control feature has been used daily when the batteries are full.

2 Likes

Tested on:
SMA Tripower X 15-50 Firmware 03.12.15.R
Venus OS V3.60~84

With Settings:
Console UI V2 Page Settings->System Setup->ESS->Grid feed-in : Maximum feed-in 0W
Node-Red Modbus Address 2705 injected 10A

Result:
SMA Reduced the output to the needed power of 10A charging and AC Loads measured.

After changing:
Console UI V2 Page Settings->System Setup->ESS->Grid feed-in : Maximum feed-in 17550W

Result:
The SMA power out is climbing very slowly

After changing:
Node-Red Modbus Address 2705 injected 240A

Result:
The SMA power out is climbing quickly

1 Like

I have tested this on 3 different ESS systems.
1 single SolarEdge 3P inverter connected to ACout. This works as expected.

2 SolarEdge inverters, one connected to ACout, one connected to ACin (due to 1on1 rule). The first inverter in the list throttled, the other did not listen to given commands and kept producing on full ‘speed’. It looks like the software is not capable to act in situations if there is more than one Inverter?

Third system consisted of one SolarEdge inverter on ACout and one VE PC Charger. When throttling is requested, the SolarEdge Inverter shuts down instantly, the PV Charger is dynamically throttled. When throttling is disabled, both start reproducing to their limits.

So I can confirm, after doiing this earlier on other systems, that throttling SolarEdge inverters works. But it requires more investigation in situations when there are more than one inverter.

1 Like

Tested on;
SMA SB5.0-1AV-41 firmware 4.1.15.R
Venus OS V3.60~86

No problems so far.

Enabling external limiting was available through the ennexos online portal ; Configuration → Parameter → System and device control → Operating mode active power setting → set to External active power setpoint.

Can the PV forecast handle severely reducing PV yield or will this have an impact on accuracy?

1 Like

Update: it does work with two inverters on another site. Could be something with different SE firmware

Working well with Enphase!

Running Enphase Envoy-S Metered with firmware D8.3.5052 and asked support to turn on Modbus.

Tested with DESS off and grid feed-in off. I saw Enphase throttling to have around 0W on the grid meter. Haven’t tested it with DESS on as the energy prices aren’t negative at the moment, but I’ll let you know if the system switches off Enphase when energy prices are negative.

2 Likes

This morning the Enphase system was not starting up anymore. Via Remote Console - PV system, I saw the dynamic power limit on 0W. Not sure why. Energy prices are positive at the moment so the system should sell back the surplus of solar energy. Feed-in to grid is switched on.

When switching off PV power limit in the integrations menu the Enphase system starts producing again. When I switch it on again it stops producing. So something is going on with the automation that it thinks the PV system has to stop producing. Just don’t know where to look as I didn’t change anything since yesterday other than switching on the above.

Update:
I restarted the Cerbo and now the dynamic power limit changed to 11 kW and Enphase keeps producing…

1 Like

We tried to implement a Kostal Piko IQ 7.0 but the Victron GX device do not find the Kostal inverter. We saw that it is not possible to configure the Modbus port to 502 and the unit id number to 126. How can we connect the inveter. Here the settings of the inverter:

I updated to v3.60 today and although I did not yet test out the PV limiting, I can see in the dbus-fronius log file that my SolarEdge SE3000 inverter is configured for it:
Setting 'Ac/MaxPower' and 'Ac/PowerLimit' to 3200 for SolarEdge Inverter
Writing EDPC settings to SolarEdge Inverter
But I noticed that a warning message is written to that log file every minute:

2025-06-14 11:58:28.142208500 warning No functional TLS backend was found
2025-06-14 11:59:28.134760500 warning No functional TLS backend was found
2025-06-14 12:00:28.135663500 warning No functional TLS backend was found
2025-06-14 12:01:28.134295500 warning No functional TLS backend was found
2025-06-14 12:02:28.133984500 warning No functional TLS backend was found

Not really a problem, but it will cause the more interesting messages to expire in about a day.

And if I understand correctly, the PV limiter is only used by DESS to avoid feed-in in when the sell price is negative, but not to turn off PV when the buy price is negative?

Is it possible to control the PV limit from node-red? I tried writing a value to the Power limit (W) field of the PV Inverter Control node, but it doesn’t seem to have any effect. Nothing is sent to the SolarEdge.

Kostal Plenticore plus 10 G1
Settings cannot be changed on the Kostal configuration page.
Ekrano cannot connect to Plenticore.
I tried little and big endian.

Thank you for taking on this topic and working getting Kostal implementation and throttling to work.

Here are my comments and observations.
As it already has been pointed out Kostal by default uses Modbus Port 1502 (not changeable) and unit ID 71 (changeable via Modbus or some API implementations i.e. Kostal IoBroker ).

I am Using a Plenticore 10 Plus Gen2.
I Changed the unitID to 126 via iObroker.
I also created an SSH Tunnel to redirect Port 1502 to 502 (quick and dirty like ssh root@localhost -L *:502:IP.OF.PLENTICORE.DEVICE:1502)

I then added the inverter manually.
It does show up! I also enabled power limitation support and did set a limit in ESS settings.
On the inverter screen I could see the limit being changed. However it never changed on the plenticore device.

I also tested if the Plenticore Plus supports setting the limit via Sunspec.
It does! I did the test with the iOBroker modbus adapter.
According to the documentation Kostal provided. Holding Register 832 is used to control the active power output limit. Somehow VenusOS is not able to limit.

I would suggest to enhance the inverter screen to add custom ports and unit IDs to give the follks that use Kostal devices an opportunity to test.

To me it looks very promising.

Here we can see the limiting calculation works..


and changes.

But newer gets into the Plenticore device.

I’m experiencing issues with the export limit and peak shaving feature in my ESS setup, which consists of 3x MultiPlus II, Victron Energy Meter EM540, and PV systems connected to both AC-IN and AC-OUT. My goal is to maximize both my solar export and my PV peak installation, while limiting the grid current to 16A per phase (three-phase) for both export and import.

To achieve this, I’m trying to optimize my system to:

  1. Maximize my solar export within the grid limits (16A per phase)
  2. Maximize my PV peak installation

Initially, I throttled the maximum PV inverter power to 11500W combined using the Power Limit feature in the SolarEdge inverters (one to max 5000W and the other to 6500W). Now, I’m testing with Venus 3.6 to dynamically adjust the PV output based on grid demand. While the dynamic power limiting works with the SunSpec protocol, I’m having issues with the peak shaving feature.

When I set the Maximum system export current (per phase) to 11A (to stay safely within the limit of 16A per phase) and the Grid current limit to 11A I expect the system to:

  • Limit the export to 11A per phase
  • Try to achieve the Limit system feed-in (Maximum feed-in) - 11500W (~16A)

However, I’ve observed the following issues:

  1. With an uneven load on AC-OUT, the system tries to maintain a total export of 33A (3x11A), ignoring the grid current limit (set to 11A as a test).
  2. If there’s no load on one of the three phases, the other two phases exceed the 11A limit. For example, if Phase 1 has no load, Phases 2 and 3 will export more than 11A, even though the total export across all phases is still within the expected limit.
  3. It appears that the system is trying to achieve the maximum feed-in within the limits of the AC export limit (total of the three phases combined), rather than strictly adhering to the per-phase limit.

This behavior persists regardless of whether I set Multiphase regulation to Total of all phases or Single phase. I’m struggling to understand why the system isn’t respecting the per-phase export limit, especially when there’s an uneven load or no load on one of the phases.

Doing something wrong here?

Does anyone have experience with Sungrow inverters? Display and power reduction via Venus OS possible?

We have some SE that doesn’t work that way is their special Konfiguration on the SE
Same with Huawei.
It would be very helpful when Victron offers a white paper how to do it

Did you change other settings?
I am not able to change the modbus ID to 126. The max value is 123

Same PV inverter and firmware.

Modbus unit ID is set to 3 on the sma (i did not change it), Modbus sunspec profile version is set to standard (also did not change it).

On the cerbo the device connection displays 192.168.1.100 - 126 (sunspec)

From the SMA modbus/sunspec pdf

3.5.1 Unit IDs
The Unit ID is a superordinate addressing type in the Modbus protocol. The Unit ID in the SMA
Modbus profile is freely configurable within the area 3 to 123. The default value is 3.
The Unit ID in the SunSpec Modbus profile for SMA products derives from the preset Unit ID in the
SMA Modbus profile + 123. The preset value for the Unit ID in the SunSpec Modbus profile is
therefore 126.

My settings are the same.
Inverter show up in the CerboGX Menu (already 3years)
But still no option for zero feed in.




My SMA modbus settings;

I assume you are using venus os 3.60 or higher?

Have you tried rebooting the cerbo?

Have you tried scanning for devices again?