Automating SolarEdge Power Limiting with Home Assistant
Since 2026, exporting solar power back to the grid in the Netherlands actually costs money. The old net metering scheme (“salderingsregeling”) is being phased out, and the new rules mean that every kWh you push back comes with a fee. So instead of letting the inverter run at full blast and paying for the privilege of giving away electricity, I set up Home Assistant to automatically throttle the SolarEdge inverter when export gets too high.
The setup
| Component | Details |
|---|---|
| Inverter | SolarEdge SE3000 |
| Integration | SolarEdge Modbus Multi (HACS) |
| Smart meter | DSMR via Electricity Meter entities |
| Home Assistant | Running locally at 10.0.0.30 |
| Notifications | HA Companion App on my phone |
How it works
The SolarEdge inverter supports Modbus TCP, which means you can read and write registers over the network — including a site power limit. Combined with the SolarEdge Modbus Multi integration from HACS, Home Assistant gets full control over the inverter’s output.
The logic is simple:
- Monitor grid export via the smart meter
- If exporting > 0.5 kW for 5 minutes → throttle the inverter down to 1800W
- If export drops below 0.1 kW for 3 minutes → restore full power (3000W)
- Send a notification either way so I know what’s happening
Configuration
Step 1: Enable Modbus TCP
Modbus TCP needs to be enabled on the inverter itself (port 1502). This is a one-time setting in the SolarEdge commissioning interface.
Step 2: Install the integration
The SolarEdge Modbus Multi integration from HACS gives Home Assistant access to the inverter’s power control registers. Once installed, you get entities for the site limit, control mode, and a commit button.
Step 3: Set the control mode
| Entity | Value |
|---|---|
select.solaredge_i1_limit_control_mode | Production Control |
number.solaredge_i1_site_limit | 3000 W (max for SE3000) |
After changing any power setting, you must press button.solaredge_i1_commit_power_settings to write the changes to the inverter. This is easy to forget and the most common reason for “it’s not working.”
The automations
Throttle on high export
When the smart meter reports more than 0.5 kW of export sustained for 5 minutes, the automation kicks in and drops the site limit to 1800W:
automation:
- id: solaredge_limit_production
alias: "SolarEdge - Limit production on export"
trigger:
- platform: numeric_state
entity_id: sensor.electricity_meter_energieproductie
above: 0.5
for:
minutes: 5
action:
- service: number.set_value
target:
entity_id: number.solaredge_i1_site_limit
data:
value: 1800
- service: button.press
target:
entity_id: button.solaredge_i1_commit_power_settings
- service: notify.mobile_app_nothing_phone
data:
message: "Export > 0.5 kW for 5 min. Production limited to 1800W."
Restore on low export
When export drops below 0.1 kW for 3 minutes, full power is restored:
- id: solaredge_restore_production
alias: "SolarEdge - Restore production"
trigger:
- platform: numeric_state
entity_id: sensor.electricity_meter_energieproductie
below: 0.1
for:
minutes: 3
action:
- service: number.set_value
target:
entity_id: number.solaredge_i1_site_limit
data:
value: 3000
- service: button.press
target:
entity_id: button.solaredge_i1_commit_power_settings
- service: notify.mobile_app_nothing_phone
data:
message: "Export < 0.1 kW for 3 min. Production restored to 3000W."
The 5-minute and 3-minute delays prevent the system from flapping on and off with every passing cloud. The restore threshold (0.1 kW) is deliberately lower than the limit threshold (0.5 kW) to create a dead zone that avoids oscillation.
Adapting to your setup
Most guides online assume a HomeWizard P1 meter, which reports power in watts with negative values for export. My setup uses the DSMR integration, which reports export as a separate positive sensor in kW. Here’s the translation:
| HomeWizard P1 setup | DSMR setup |
|---|---|
sensor.hw_p1meter_power (W, negative = export) | sensor.electricity_meter_energieproductie (kW, positive = export) |
| Trigger: power < −500 W | Trigger: export > 0.5 kW |
| Restore: power > −100 W | Restore: export < 0.1 kW |
| Site limit: 3700 W | Site limit: 3000 W (SE3000 max) |
The original guide also used 3700W as the max site limit. The SE3000 only does 3000W — make sure you use the actual max for your inverter model.
Key entities reference
Control
select.solaredge_i1_limit_control_mode— must be set to Production Controlnumber.solaredge_i1_site_limit— the power cap in wattsbutton.solaredge_i1_commit_power_settings— writes changes to the inverterswitch.solaredge_i1_advanced_power_control— enables advanced power control
Monitoring
sensor.solaredge_i1_ac_power— current AC output (W)sensor.solaredge_i1_dc_power— current DC input (W)sensor.electricity_meter_energieproductie— current grid export (kW)sensor.electricity_meter_energieverbruik— current grid consumption (kW)
Troubleshooting
- Site limit shows unavailable: check that the limit control mode isn’t set to
Disabled - Changes have no effect: you probably forgot to press the commit button — it’s required after every change
- Modbus connection lost: make sure the inverter has a static IP (DHCP reservation)
- No notifications: verify the HA Companion App is logged in and notifications are enabled
Was it worth it?
Absolutely. The automation runs silently in the background and I get a phone notification whenever it kicks in. On a sunny day it triggers 2-3 times, saving me from exporting at a loss. The whole setup took about an hour to configure, and the Modbus integration makes it surprisingly clean — no hardware modifications, no cloud dependencies, just local network control over the inverter.