Skip to main content

Photovoltaic

Full curtailment​

During a typical day of PV production, energy is used in two ways:

  1. Injected into the grid
  2. Used for self-consumption

Injection into the grid can be curtailed at any time, meaning production can be stopped. For self-consumption scenarios, we can switch to consuming power from the grid while curtailing the PV production. Both actions provide flexibility equal to the power produced by the PV installation.

The baseline for a typical day is shown in green. While forecasting PV production can be challenging, using simple rolling windows based on the last 15 minutes can provide reasonable estimates for the next quarter-hour.

Bidding Photovoltaic

Once the baseline is established, we can submit downward bids for the full amount of the forecasted production.

Why downward?

Stopping PV production reduces the amount of energy on the grid, which is why this is called a "downward" bid.

Upward

Providing upward flexibility with a PV installation is also possible. If you have planned curtailment, for example on moments of negative market prices, you can still offer to start producing again.

Bid Curve​

The bid curve is a single point, where the red line indicates the baseline production (negative), and the green dot indicates the bid (0kW = curtailment).

Bidding Photovoltaic - Example 1

The API call to make this bid is as follows:

import requests
import json

url = "https://api.powernaut.io/v1/connect/resources/<uuid>/bid"

payload = json.dumps({
"timing": {
"start": "2024-07-01T14:00:00Z",
"end": "2024-07-01T14:15:00Z"
},
"curve": [
{
"value": "0"
}
]
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer <token>'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

Self-consumption​

If the PV energy is partly used for self-consumption, it makes sense to send two points in your bid curve:

  1. The first point is to curtail all injected energy at a price of 0€/kWh.
  2. The second point is to curtail the additionally self-consumed energy, for example at a price of €0.10/kWh.

Bid Curve​

Assuming the PV installation is producing 5kW, and self-consuming 3kW, the bid curve would be as follows:

Bidding Photovoltaic - Example 2

The API call to make this bid is then as follows:

import requests
import json

url = "https://api.powernaut.io/v1/connect/resources/<uuid>/bid"

payload = json.dumps({
"timing": {
"start": "2024-07-01T14:00:00Z",
"end": "2024-07-01T14:15:00Z"
},
"curve": [
{
"value": "-3"
},
{
"value": "0",
"price": "0.10"
}
]
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer <token>'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)