BETA: Turn surplus solar into useful work with GX Opportunity Loads

We are excited to start BETA-testing a new GX feature: Opportunity Loads.

Opportunity Loads increases self-consumption by automatically using surplus solar energy for flexible AC loads such as:

  • EV charging

  • Water heating and thermal storage

  • Pool pumps

  • Charging e-bikes

  • Other controllable AC loads

The GX device acts as a system-level energy coordinator and dynamically distributes available surplus across supported devices.

Why is this interesting?

In many systems, excess solar energy cannot always be utilized effectively:

  • Batteries may already be full

  • Feed-in may be limited or financially unattractive

  • Off-grid systems may need to curtail PV production

Opportunity Loads helps convert this surplus energy into useful work automatically.

Unlike independent surplus charging solutions, Opportunity Loads centrally coordinates multiple controllable devices within the system. This allows:

  • Coordinated operation of multiple EV chargers and other flexible loads

  • Priority-based allocation of available surplus energy

  • Better utilization of available solar energy

  • Avoid conflicts between independent surplus charging algorithms

The system continuously reacts to:

  • PV production

  • Battery charging requirements

  • Household consumption

  • Available inverter capacity

  • Grid availability

and automatically adjusts loads accordingly.

Supported systems

Opportunity Loads can be used in a wide range of systems, including:

  • ESS installations

  • Installations with export limitations

  • Backup systems

  • Off-grid systems

  • RV and vehicle systems

  • Marine installations

Currently supported devices

EV Charging

  • Victron Energy EV Charging Station

  • Victron Energy EV Charging Station NS

Note: To be used with Opportunity Loads, the EV Charging Station must run the latest beta firmware and be connected to the GX device via the new MQTT-based integration. Existing installations using Modbus TCP can be migrated by following this guide: https://ve4.nl/evcs-mqtt-migration

Shelly devices

All Shelly devices, which provide switching and energy measurement, are supported. Verified models include:

  • Shelly Plus Plug S

  • Shelly Plug S MRT Gen3

  • Shelly Mini 1PM Gen4

  • Shelly 1PM Gen4

  • Shelly Pro 1PM

  • Shelly Pro 4PM

Documentation

Slide deck:
ve4.nl/ol

Draft manual:
ve4.nl/ol-manual

Important notes

This is an early beta feature and behaviour may still change during development.

During the beta phase:

  • UI elements may still change

  • Control behavior may be refined

  • Edge cases are still being optimized

We are especially interested in feedback regarding:

  • Mixed-load systems

  • Multiple EV charger setups

  • Off-grid behavior

  • Overall stability and usability

Note: Controls for Opportunity Loads are only available in the New UI, the Classic UI is and will not be supported.

Compatibility with Dynamic ESS

Opportunity Loads and Dynamic ESS cannot be enabled simultaneously.

Both features perform system-level energy management and require control over how available energy is allocated within the installation. To avoid conflicting control decisions, only one of these features can be active at a time.

You can choose between:

  • Dynamic ESS, which optimizes energy flows based on electricity prices and energy forecasts

  • Opportunity Loads, which optimizes local utilization of surplus solar energy by controlling flexible loads

If Dynamic ESS is enabled, Opportunity Loads will not be available. Likewise, enabling Opportunity Loads requires Dynamic ESS to be disabled.

Requirements

  • Cerbo GX, Ekrano GX, MultiPlus-II GX or EasySolar-II GX running Venus OS Beta version v3.80~27 or newer

  • Supported inverter/charger and battery system

  • PV system, DC- and/or AC-coupled

  • Supported controllable devices

Note about feedback, ideas and issues

We’d love to hear your feedback, experiences and ideas!

And to keep things a bit organized, please:

  • For general ideas and suggestions, feel free to comment in this thread.
  • For issues and more details questions, please open a new Topic and add the opportunity_loads tag to it.

Thanks!

Is it possible to also make this apply to other inbuilt ways of switching in loads like an immersion heater, for example mine is connected to ACOUT2 and triggered by assistants on the Quattro (but these are too dumb to do the job properly)? Or perhaps a GX relay (K2 is free on mine, K1 is used for generator start/stop) driving a simple external power relay? It seems overkill to require something like Shelley switches to do something which could be done for free (ACOUT2) or much more cheaply (a relay)…

Hi @iand,

thanks for your interest! Our algorithm needs two things to work: Control (e.g. on/off) and power measurements.

We are indeed working on a solution to use a GX built-in relay as control signal for certain loads. This is mainly targeting the “boost mode” signal input many heat pumps have. However, this will only be possible in combination with an energy meter providing the power measurements.

Using the AC-OUT-2 for switching is actually a nice idea, so that you don’t need an additional contactor. I’ll keep that in mind. However, this would still require a power meter, as the Multis/Quattros don’t provide dedicated measurements for AC-OUT-2 only.

Can’t you just tell the GX that “If you switch that relay it generates a load of XYZ W” ?
In case of a heating element you have a known constant load.

Using that idea (defined load power, 2kW in my case) with ACOUT2 switching would be ideal, free, and should be simple to code up – so can this be done, pretty please? :slight_smile:

Agree. I have connected devices of fixed consumption that don’t meter, would be great to choose a fixed load.
Through when node red supports this with virtual nodes, that is easy enough to do.

Would prefer not to have to get into node red, since boatbuilder does not use this or support it…

Considering the vast number of devices that are not Shelly or have limited metering, it is likely unavoidable.
We have lots of Tuya devices in this region which integrate nicely with the GX but won’t have native support, so I suspect virtual integrations will be popular. I know it will for me.

I’m sure it will, but for those who don’t want to go down the node red route using ACOUT2 (or a relay/contactor) seems an easy and obvious alternative… :wink:

Shall I understand that GX devices embedded into Multiplus II GX are not compatible ?

By the way, excellent development idea, long awaited.

Any chance for future support of Fronius Ohmpilot ? I know currently is dependable on Fronius Smartmeter but there might be some workarounds.

Hi @Radunre,

shall I understand that GX devices embedded into Multiplus II GX are not compatible ?

very good point, MultiPlus-II GX and EasySolar-II GX are supported. I updated the initial post accordingly.

Any chance for future support of Fronius Ohmpilot

We’re evaluating adding support for immersion heater controllers in the future. So far, we have not considered the Fronius Ohmpilot. You’re suggestion is noted.

Yes, we are working on adding support for custom integrations into Opportunity Loads via Node-RED.

Thanks, the suggestion of using AC-OUT-2 is noted.

This is wonderful, thank you for great work !

Thanks Philipp – note that ACOUT2 will need the same Off/On/Auto buttons as a Shelly device.

I use shelly pro1 and shelly pro2 to heat the water heater. I can’t get the shellys to appear in this function. Does the shelly have to have power measurement?

Hi @anttivaan, yes indeed, only Shellys with power measurement are supported with Opportunity Loads.

I have water heaters so efficient that the Shellys that are on the meter can’t be used. I use a contactor to turn on the heater and the Shelly just controls it. The loads are constant power.

In a first step, we don’t support anything without power-measurements, as providing that is part of the S2-Specification we implemented.

But we will ofc collect all ideas coming in during the beta and evaluate them :slightly_smiling_face: