
Shifting from ‘exporting power’ to ‘smart self-consumption’
Solar panels and the home battery: what is the real return on investment?
The dynamics surrounding solar energy have shifted dramatically. Where we used to blindly feed as much power as possible back into the grid, we are now looking at a completely different landscape. While the net metering scheme (salderingsregeling) is still active this year, energy providers have already introduced grid fee penalties for exporting electricity. And next year? The net metering scheme will definitively change, making the future of the energy market highly unpredictable. From 2027 onwards, our energy provider will pay out a net amount of just €0.05945 per exported kWh. Meanwhile, when you purchase electricity (even if it was generated during the day), you pay around €0.26 per kWh…
In this rapidly changing world, how do you still get the maximum return from your solar panels?
Switching from ‘grid injection’ to ‘smart self-consumption’ might be your most financially attractive option.
With current feed-in penalties, exporting electricity during peak hours has often become a losing game. The new goal is to consume the power you generate immediately. However, the sun shines brightest when you are usually away from home.
This is where the home battery comes into play. Instead of sending your excess power to the grid for free (or paying a penalty for it), you store it for the evening hours. Your return on investment is no longer found in a payout from the energy provider, but in avoiding expensive electricity purchases and dodging grid feed-in fees.
ROI through smart automation: while a home battery is an excellent buffer, the real return of the future lies in intelligent management. After all, if the battery is fully charged and the sun keeps shining, you will still end up facing those export penalties.
The smart solution: by using a control system that automatically dials back your inverters as soon as your battery is full and your household consumption is low, you prevent pushing excess power onto the grid. This keeps your ‘penalties’ to an absolute minimum.
What does the future hold? Although the regulations will change next year and no one knows exactly how the market will take shape, one thing is certain: energy independence is becoming invaluable. Those who invest now in combining solar panels, a home battery, and smart software (such as dynamically managing inverters) are optimally prepared for a profitable future without net metering.
To give you an idea of how you could approach this in your own situation, you will find a description of an operational installation below. This consists of a Zendure SolarFlow 2400 AC+ home battery and two SolarEdge inverters, controlled via a smart cascade control in Home Assistant (available as P1 control and as faster Shelly control).
Hardware and Integration overview
Electrical installation
3-Phase connection distribution: the two inverters and the home battery are each connected to a separate phase. The Zendure home battery plug is connected ‘dedicated’ to a safe outlet with a separate power cable and its own residual-current circuit breaker with overcurrent protection (RCBO). The system has been fully installed in accordance with NEN 1010 regulations.
Inverters & generation
SolarEdge SE6000: the primary 1-phase inverter responsible for the bulk of the solar generation (afternoon sun). In the cascade, this inverter is the first to be dynamically curtailed during power surplus, down to a safe lower limit of 10%.
SolarEdge SE3500H: the secondary 1-phase inverter in the system (morning sun). As soon as the SE6000 is at its minimum and there is still excess power, this inverter is also actively curtailed in the cascade towards 0%.
Storage & energy metering
Zendure SolarFlow 2400 AC+: the home battery system that stores excess solar energy. The control system starts automatically as soon as this battery reaches 95%.
P1 meter (smart meter): this meter forms the direct foundation for the P1 control version. It detects in real time when the house is exporting power to the grid.
3x Shelly Pro EM50: these accurate induction clamps measure the pure, actual power (Watts) of both inverters and the battery. In the Shelly control, this real-time data forms the direct basis for the control logic. Because the system knows the exact generation, the formula directly calculates the correct curtailment step to the zero line during variable cloud cover, without needing multiple control cycles.
Communication & control
Waveshare RS485 to ethernet interface: the hardware bridge (gateway) that converts the serial Modbus communication of the SolarEdge SE6000 inverter into a stable IP network signal (Ethernet). The SE3500H already has Modbus communication built in.
SolarEdge Modbus (Multi-device) Integration: the software coupling within Home Assistant. This integration communicates with both inverters via the network to read registers in real time and directly control the active power limits of both inverters.
Dynamic Cascade control
Why this control?
When the Zendure home battery is almost full (95% or more), it is optimized for trickle charging and can store less solar energy. If there is little power consumption in the house at that moment, all excess solar energy flows back onto the electricity grid. Now that we are dealing with feed-in costs, we want to minimize this surplus for a true net-zero energy situation. To handle our feed-in efficiently, we will dynamically curtail both SolarEdge inverters.
What exactly does this control do?
The automation checks the status of the house and the battery every 2 minutes and controls the inverters in a dynamic cascade structure. The basic logic is the same for both controls, but the way the curtailment step is calculated differs:
- With the P1 control: the system calculates the percentage curtailment step based on the measured P1 surplus and the maximum capacity of the inverters. This is an effective estimate that sometimes requires an extra control cycle to reach the zero line.
- With the Shelly control: the system calculates the curtailment step based on the measured P1 surplus and the actual generation measured by the Shellys. Because the exact production is known, this variant sends the inverters directly to the correct value in one go during variable cloud cover.
Battery priority & trickle charging
The inverters always run at 100% capacity as long as the Zendure battery is below 95%. Only when the battery hits 95% or higher AND a grid surplus occurs (> 0.2 kW), the system starts curtailing to maintain space for battery management.
Dynamic cascaded curtailment
The system does not use fixed increments, but calculates the required step size in real time (based on the chosen P1 or Shelly calculation method). A safety margin of 200 Watts is applied to prevent over-curtailing.
- First, the SE6000 inverter is dynamically scaled down to a safe lower limit of 10% (to prevent the inverter from going completely offline).
- Only when the SE6000 is at its 10% minimum and power is still being exported, the system starts dynamically curtailing the SE3500 towards 0%.
Rapid scaling during power demand
As soon as the energy balance turns negative (importing electricity from the grid) OR the Zendure battery drops below 95%, generation is immediately ramped back up in powerful increments of 25%. This happens in reverse order: first the SE3500 is brought back to 100%, followed by the SE6000.
Startup, mode & safety reset
When manually enabling the automation, restarting Home Assistant, or switching between demo and real mode, all limits are immediately and safely reset to 100% for a clean start. The Shelly variant also includes a built-in ‘anti-freeze’ protection that freezes the limits when the inverters are not generating power (e.g., in the evening) to prevent mathematical errors (division by zero).
Explanation of variables
To control these smart net-zero energy regulations, the automation uses various sensors and switches. These can be divided into general measurements, the new Shelly sensors, system switches, real inverter entities and virtual demo entities.
1. General sensors (measurements)
sensor.huidige_netto_energiebalans => Home Assistant DSMR smart meter integration
The most important indicator of the system. This sensor uses the P1 data from the smart meter to calculate the balance between import and export.
template:
- sensor:
- name: "Huidige netto energiebalans"
unique_id: huidige_netto_energiebalans
state: >-
{{ (states('sensor.electricity_meter_energieproductie') | float(0)) -
(states('sensor.electricity_meter_energieverbruik') | float(0)) }}
unit_of_measurement: "kW"
device_class: power
state_class: measurement
A positive value means power export (surplus), a negative value means power import (deficit for the house).
sensor.solarflow_2400_ac_electric_level => Home Assistant Zendure integration
Displays the current battery percentage (SoC) of the Zendure SolarFlow home battery. The system uses this to activate the trickle and cascade control from ≥ 95%.
2. Shelly Pro EM50 sensors (exclusive to the Shelly control)
- sensor.shellypro_em50_se6000_vermogen: measures real-time the pure, actual power in Watts that the SE6000 inverter generates.
- sensor.shellypro_em50_se3500h_vermogen: measures real-time the pure, actual power in Watts that the SE3500H inverter generates.
- sensor.shellypro_em50_thuisbatterij_vermogen: measures the actual power from and to the home battery (negative value is charging, positive value is discharging).
=> Home Assistant Shelly integration
The real-time Watt measurements of the inverters are used in the Shelly control to calculate the exact percentage curtailment step, without the system having to guess based on maximum capacity.
3. System switches & automations
input_boolean.solar_limiet_regeling_actief
The main switch on the dashboard to switch between simulation and reality. When this switch is set to on (real mode), the automations control the real inverters. When set to off (demo mode), a safe virtual simulation runs on the dashboard.
automation.solar_cascade_p1_regeling & automation.solar_cascade_shelly_regeling
The two core automations. As soon as one of these controls is manually enabled, this triggers a startup reset that immediately and safely resets all inverter limits (and demo sliders) to 100% for a clean start.
4. Inverter entities - real mode
- number.se6000_i2_active_power_limit: the active power limit of the SolarEdge SE6000. This is the first inverter to be curtailed, down to a hard lower limit of 10% to keep the inverter online.
- number.se3500_i1_active_power_limit: the active power limit of the SolarEdge SE3500H. This follows in the cascade and continues curtailing towards 0% when the SE6000 is already at its minimum.
- button.se6000_i2_commit_power_settings & button.se3500_i1_commit_power_settings: SolarEdge requires that power limits are explicitly saved via Modbus after modification. These virtual buttons are automatically ‘pressed’ by the automations to immediately and permanently activate the new limits in the hardware.
=> Home Assistant SolarEdge Modbus Multi integration
5. Virtual Entities - demo mode
input_number.demo_se6000_active_power_limit & input_number.demo_se3500_active_power_limit
Simulated sliders that simulate the inverter limits on the dashboard when demo mode is active. When real mode is active, these sliders automatically sync with the real inverters in the background, so the dashboard always reflects the current status.
input_number:
demo_se6000_active_power_limit:
name: "Solar demo SE6000 limiet regeling"
min: 0
max: 100
step: 1
unit_of_measurement: "%"
icon: mdi:speedometer
mode: slider
demo_se3500_active_power_limit:
name: "Solar demo SE3500H limiet regeling"
min: 0
max: 100
step: 1
unit_of_measurement: "%"
icon: mdi:speedometer
mode: slider
Downloads
This is just one of many possible solutions. Hopefully, it helps get you started and provides you with some inspiration!