Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions docs/features/dynamic-feedin.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
sidebar_position: 4
---

import Screenshot from "../../src/components/Screenshot";

# Dynamische Einspeisung

Diese Funktionen sind relevant, wenn du einen [dynamischen Einspeisetarif](../tariffs) (bspw. Direktvermarktung, Niederlande, Australien, ...) hast.

## Einspeisung priorisieren

Standardmäßig wird PV-Überschuss zuerst verwendet, um das Auto zu laden.
Erst danach wird Sonnenenergie ins Netz eingespeist.
In Zeiten mit hohen Vergütungen kann es vorteilhaft sein die Netzeinspeisung zu priorisieren und das Laden des Autos auf später zu verschieben.

<Screenshot
name="features/screenshots/feedin-priority-modal"
caption="Screenshot vom Einspeisung priorisieren Feature mit eingestellten Preislimit"
/>

Mit dem Feature *Einspeisung priorisieren* kannst du eine Preisschwelle pro Ladepunkt festlegen.
Sind die Einspeisevergütungen hoch (oranger Balken), wird das Laden pausiert (**PV-Modus**) oder auf ein Minimum reduziert (**Min+PV-Modus**).

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 7 additions & 3 deletions docs/tariffs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,18 @@ Der einfachste Fall sind feste Werte für Netzbezug (`grid`) und Einspeisung (`f
```yaml
tariffs:
currency: EUR # (default EUR)
grid:
grid: # Preis für Netzbezug
type: fixed
price: 0.294 # EUR/kWh
feedin:
feedin: # Einspeisevergütung
type: fixed
price: 0.08 # EUR/kWh
price: 0.08 # EUR/kWh (positive Werte = Einnahme)
```

:::info
Alle Tariftypen (`fixed`, `template`, `custom`), können sowohl für `grid` als auch `feedin` verwendet werden.
:::

## Zeitabhängiger Strompreis

Stromtarife mit festen zeitabhängigen Preisen können ebenfalls definiert werden.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
sidebar_position: 4
---

import Screenshot from "../../../../../src/components/Screenshot";

# Dynamic Feed-In

These features are relevant if you have a [dynamic feed-in tariff](../tariffs) (e.g., direct marketing, Netherlands, Australia, etc.).

## Feed-in priority

By default, evcc uses solar surplus first to charge the car.
Only then is the solar energy fed into the grid.
During times of high feed-in rewards, it can be beneficial to prioritize the feed-in and charge the car later.

<Screenshot
name="features/screenshots/feedin-priority-modal"
caption="Screenshot of the feed-in prioritization feature with a set price limit"
/>

With the *Feed-in priority* feature, you can set a price threshold per charging point.
When the feed-in tariffs are high (shown as orange bars), charging is paused (**solar mode**) or reduced to a minimum (**min+solar mode**).
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@ tariffs:
You can find a list of all supported tariffs under [tariffs](../tariffs).
If your provider has an interface but is not yet supported by evcc, please submit a [Feature Request](https://github.com/evcc-io/evcc/issues/new/choose).

## Smart feed-in

During certain periods of the day and in specific regions, there might be an abundance of solar power. At the same time, there may be almost no load on the grid.
During these periods your energy provider might apply a cost for injecting your PV-power to the grid as supply is high but demand is low and the grid is overloaded.
EVCC supports smart feed-in and allows you to define a set point at which it will throttle PV inverters to prevent feed-in.


## Cheap grid charging

If you have configured a time-dependent or dynamic electricity tariff, the "Cheap grid charging" section will appear in the settings dialog at the charging point.
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 7 additions & 3 deletions i18n/en/docusaurus-plugin-content-docs/current/tariffs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,18 @@ The simplest case is fixed values for grid consumption (`grid`) and feed-in (`fe
```yaml
tariffs:
currency: EUR # (default EUR)
grid:
grid: # grid consumption price
type: fixed
price: 0.294 # EUR/kWh
feedin:
feedin: # feed-in revenue
type: fixed
price: 0.08 # EUR/kWh
price: 0.08 # EUR/kWh (positive values = income)
```

:::info
All tariff types (`fixed`, `template`, `custom`) can be used for both `grid` and `feedin`.
:::

## Time-based Electricity Price

Electricity tariffs with fixed time-based prices can also be defined.
Expand Down
3 changes: 1 addition & 2 deletions screenshot-generator/recipes/dynamicprice.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
const { test, expect } = require("@playwright/test");
const { test } = require("@playwright/test");
import { loop } from "./utils/loop";
import { CURSOR, ARROW, placeOverlay } from "./utils/overlay";
const { start, stop } = require("./utils/evcc");

const BASE_PATH = "features/screenshots";
Expand Down
40 changes: 40 additions & 0 deletions screenshot-generator/recipes/feedinpriority.evcc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
tariffs:
currency: EUR
feedin:
type: fixed
price: 0.3
zones:
- hours: 0-1
price: 0.15
- hours: 1-2
price: 0.10
- hours: 2-3
price: 0.08
- hours: 3-6
price: 0.05
- hours: 6-7
price: 0.12
- hours: 7-8
price: 0.30
- hours: 8-9
price: 0.40
- hours: 9-10
price: 0.19
- hours: 10-11
price: 0.07
- hours: 11-14
price: 0.02
- hours: 14-15
price: 0.12
- hours: 15-17
price: 0.22
- hours: 17-18
price: 0.38
- hours: 18-19
price: 0.45
- hours: 19-20
price: 0.32
- hours: 20-22
price: 0.24
- hours: 22-0
price: 0.18
35 changes: 35 additions & 0 deletions screenshot-generator/recipes/feedinpriority.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const { test } = require("@playwright/test");
import { loop } from "./utils/loop";
const { start, stop } = require("./utils/evcc");

const BASE_PATH = "features/screenshots";

test.beforeAll(async () => {
await start(["basics.evcc.yaml", "feedinpriority.evcc.yaml"], "password.sql");
});
test.afterAll(async () => {
await stop();
});

const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

loop((screenshot) => {
test("feedin priority", async ({ page }) => {
await page.goto("/");
await page.getByTestId("loadpoint-settings-button").nth(1).click();
await wait(300);

await page.locator("#smartFeedInPriority-1").selectOption("0.3");

await screenshot(
page,
`${BASE_PATH}/feedin-priority-modal`,
"#loadpointSettingsModal_1 .modal-body > .container > div:first-child",
{
all: 50,
top: 110,
right: 70,
},
);
});
});