Solar curtailment on dynamic prices

Tomorrow the dynamic prices are doing something I didn’t expect this early into the year. The hourly prices during peak solar production are negative… by a lot! On a weekday no less!

This warrants some solar curtailment, don’t you think?

I have solar panels and a dynamic energy contract in the Netherlands. My solar system is connected to a zigbee relay with power monitoring. The relay was installed for the purpose of low cost solar curtailment in mind and power monitoring to boot without anoying integrations. I’ve implemented a simple automation to curtail solar power that costs more than it saves.

Net metering in the Netherlands
First we need to understand the Dutch rules for the electricity market. We have a net metering scheme which means that every kWh you feed into the grid grants you a restitution of the energy tax tariff for the annual production within your annual consumption. The energy tax rate is currently set to 0,12599 € per kWh excluding VAT. Your milage may vary if you are in another country. On dynamic tarifs you also get the energy price including the top-up costs, if you are a net consumer of power on an annual basis.

What’s the tipping point to curtail?
It depends. Are you a net producer or net consumer? And then, what is your energy tariff excluding taxes but including top-up costs (the fee the dynamic energy supplier charges on top of the sale/procurement of power per kWh).

You are net consumer? Then your marginal gains from feeding power to the grid are:

  • energy_tax_rate, (0,12599)
  • top_up_tariff, (0,02500)
  • energy_tariff
    = total gains

The tipping point is achieved when the total gains turns is less than zero. Since the first two variables are given we get the following condition:
if energy_tarif *-1 < energy_tax_rate + top_up_tariff, (in my case: -0,15099)
then curtail solar production,
else do not curtail solar production.

What do you need?

  • Dynamic energy contract
  • ENTSO-E integration (or similar), to read the hourly prices into HA
  • A relay (or other means) to switch off the solar installation
  • Your tipping point (be mindfull of the VAT-rate in the tipping point tariff and reference prices you compare against)

Is it safe to use a relay for solar curtailment?
MAYBE… NO WAIT, DO NOT TRY THIS AT HOME I AM A TRAINED HOME AUTOMATER WITH A BASIC UNDERSTANDING OF ELECTIC SAFETY. CONSULT AN ELECTRICIAN OR REPRODUCE AT YOUR OWN PERIL. YOU HAVE BEEN WARNED IN ALL CAPS.

You have been warned. Now, is it safe?
Disclaimers out of the way. You should be fine. When you disconnect the inverter, and I’ve checked it at 3 kW load, the inverter detects loss of grid and will instantly kick into anti-islanding mode without any drama. There could be some minor arcing in the relay contacts which will degrate the relay over time. Worst case, the relay overheats and might be a fire hazard after years of on-load disconnects. Realisically, if you buy quality hardware that is adequately overdimensioned for the load you are switching, the relay should be fine. And the number of on-load relay disconnects will be small anyway, at most once a day and only a couple days a year. Then, when you close the relay, the inverter will gradually restore power. NOW CONSULTANT AN ELECTRICIAN BEFORE YOU RUN OF TO ALIBABA (or not, you be you)

Curtailment automation
Runs every hour. Then checks if the sun is up to prevent unnescesary computations and relay cycles, checks if the relay is closed (on), and if it should be off based on the current energy price. If all conditions pass, the relay is opened and power is curtailed.

alias: "Bodemprijsbescherming, uitschakelen "
description: ""
trigger:
  - platform: time_pattern
    minutes: "0"
    seconds: "1"
condition:
  - condition: and
    conditions:
      - condition: sun
        before: sunset
        after: sunrise
      - condition: device
        type: is_on
        device_id: dd79b2c1891f8ce45d374c97def6f546
        entity_id: switch.solar_pm_relay_63a
        domain: switch
      - condition: numeric_state
        entity_id: sensor.current_electricity_market_price
        below: -0.15099
action:
  - type: turn_off
    device_id: dd79b2c1891f8ce45d374c97def6f546
    entity_id: switch.solar_pm_relay_63a
    domain: switch
  - device_id: 61fb3c6984f7d8dd2bf1f4a0a0ba2c1a
    domain: mobile_app
    type: notify
    message: "Bodemprijsbescherming actief! "
mode: single

Stop curtailment automation
Runs every hour. Then checks if the sun is up to prevent unnescesary computations and relay cycles, checks if the relay is open (off), and if it should be on based on the current energy price. If all conditions pass, the relay is closed and production resumes.

alias: Bodemprijsbescherming, inschakelen
description: ""
trigger:
  - platform: time_pattern
    minutes: "0"
    seconds: "1"
condition:
  - condition: and
    conditions:
      - condition: sun
        before: sunset
        after: sunrise
      - condition: device
        type: is_off
        device_id: dd79b2c1891f8ce45d374c97def6f546
        entity_id: switch.solar_pm_relay_63a
        domain: switch
      - condition: numeric_state
        entity_id: sensor.current_electricity_market_price
        above: -0.15099
action:
  - type: turn_on
    device_id: dd79b2c1891f8ce45d374c97def6f546
    entity_id: switch.solar_pm_relay_63a
    domain: switch
  - device_id: 61fb3c6984f7d8dd2bf1f4a0a0ba2c1a
    domain: mobile_app
    type: notify
    message: "Bodemprijsbescherming einde "
mode: single

Check back here tomorrow evening for some sweet screenshots of solar curtailment in action!

PS. Let me know if you are a net producer and can’t figure out your tipping point. Happy to help :slight_smile:

6 Likes

Why don’t you trigger on the current_electricity_market_price sensor?
Triggering each second is unnecessary and puts extra unnecessary load on the automation engine.

I had to check the traces but it already does what you propose, it runs on the whole hour plus 1 second. And indeed I could have used the prices as a trigger too, didn’t think of that.

Looks quite drastic what you are doing here.
I’m looking to curtail the energy-output of the inverter to be equal to what i use in the house.

Only problem seems to be a difficulty to set to power limit to a dynamic changing value.