From 7efd87bef74c6616a744a32f260d3362739f371b Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Sat, 6 Jun 2026 17:48:24 +0200 Subject: [PATCH] hems: refactor, add fnn --- .../docs/de/features/external-control.mdx | 59 ++++++++++++-- .../docs/de/features/loadmanagement.mdx | 4 +- .../docs/de/reference/configuration/hems.md | 78 ++++++++++++++++++- .../docs/en/features/external-control.mdx | 59 ++++++++++++-- .../docs/en/features/loadmanagement.mdx | 4 +- .../docs/en/reference/configuration/hems.md | 78 ++++++++++++++++++- 6 files changed, 258 insertions(+), 24 deletions(-) diff --git a/src/content/docs/de/features/external-control.mdx b/src/content/docs/de/features/external-control.mdx index 25c8dc257..da8d3f1ea 100644 --- a/src/content/docs/de/features/external-control.mdx +++ b/src/content/docs/de/features/external-control.mdx @@ -33,19 +33,20 @@ Unterstützte Geräte sind in der [Geräteübersicht](/de/meters) mit "Abregelba Nach §9 des Erneuerbare-Energien-Gesetzes (EEG) können Netzbetreiber bei drohender Netzüberlastung die Einspeisung von Erneuerbare-Energien-Anlagen abregeln. Dies betrifft hauptsächlich größere PV-Anlagen, kann aber auch im privaten Bereich relevant werden. -Erhält evcc ein Abregelungssignal, wird die Wechselrichter-Erzeugung direkt am Gerät auf 0 W begrenzt. -Die Abregelung ist aktuell ein binäres Signal (an/aus) ohne dynamischen Grenzwert. +Erhält evcc ein Abregelungssignal, wird die Wechselrichter-Erzeugung direkt am Gerät reduziert. +FNN-Steuerboxen können gestufte Limits signalisieren (60 %, 30 %, 0 %); das aktive Limit wird in der Oberfläche angezeigt. Nach Ende des Signals wird die volle Erzeugung wieder freigegeben. ### Anbindungsmöglichkeiten -Die Anbindung erfolgt über **Relais** (über einen Schaltkontakt) oder **EEBus** (über das EEBus-Protokoll). +Die Anbindung erfolgt über **Relais** (ein einzelner Schaltkontakt), **FNN-Steuerbox** (mehrere Schaltkontakte) oder **EEBus** (das EEBus-Protokoll). ## Einrichtung Die Einrichtung erfolgt über **Konfiguration → Externe Steuerung**. -Das Umsetzen der Begrenzung erfolgt über das [Lastmanagement](./loadmanagement). -Dabei wird automatisch ein "Externe Begrenzung" Stromkreis (`gridcontrol`) erstellt, der als oberste Ebene über eventuell bestehende Stromkreise gesetzt wird. +Aktive Limits werden auf der Karte **Externe Steuerung** und auf der Hauptseite angezeigt. +Damit das Verbrauchslimit Ladepunkte begrenzt, konfiguriere [Lastmanagement](./loadmanagement)-Stromkreise. +Ein aktives Limit begrenzt dann den obersten Stromkreis, erkennbar am Hinweis "Verbrauch begrenzt" auf der Lastmanagement-Karte. ## Konfiguration via Relais @@ -139,6 +140,46 @@ limit: +## Konfiguration via FNN-Steuerbox + +Steuerboxen nach FNN-Standard signalisieren Dimmung und Abregelung über separate Schaltkontakte. +Dimmung des Verbrauchs (W4) und Abregelung der Einspeisung (W3, S2, S1) arbeiten unabhängig voneinander. + +```yaml title="External Control" +type: fnn +maxDimPower: 4200 # Verbrauchslimit während Dimmung (in Watt) +maxCurtailPower: 10000 # Installierte PV-Leistung, Basis für Abregelungsstufen (in Watt) +w4: + source: gpio + function: read + pin: 17 # GPIO-Pin 17 auslesen + # Rückgabewert: false = normal, true = aktiv +w3: + source: gpio + function: read + pin: 27 +s2: + source: gpio + function: read + pin: 22 +s1: + source: gpio + function: read + pin: 23 +``` + +Die Signale haben folgende Bedeutung: + +| Signal | Wirkung bei aktivem Signal | +| ------ | --------------------------------------------------- | +| `w4` | Verbrauch auf `maxDimPower` begrenzen | +| `w3` | Einspeisung auf 0 % von `maxCurtailPower` abregeln | +| `s2` | Einspeisung auf 30 % von `maxCurtailPower` abregeln | +| `s1` | Einspeisung auf 60 % von `maxCurtailPower` abregeln | + +Mindestens eines der Signale `w4` oder `w3` muss konfiguriert sein. +Jedes Signal wird über eine [Plugin](/de/reference/plugins)-Konfiguration ausgelesen (GPIO, MQTT, HTTP, Modbus), analog zu den Relais-Beispielen oben. + ## Konfiguration via EEBus Die digitale Anbindung über EEBus ist die zukunftssichere und bevorzugte Lösung. @@ -195,9 +236,10 @@ Die Ladepunkte arbeiten mit ihrer normalen Konfiguration und werden ggf. durch w Wenn der Netzbetreiber ein Reduzierungssignal sendet: 1. **Relais**: Der Kontakt wird geschlossen, evcc aktiviert das konfigurierte `maxPower` Limit -2. **EEBus**: Die Steuerbox übermittelt das berechnete Gesamtlimit digital +2. **FNN-Steuerbox**: Der W4-Kontakt wird geschlossen, evcc aktiviert das konfigurierte `maxDimPower` Limit +3. **EEBus**: Die Steuerbox übermittelt das berechnete Gesamtlimit digital -Alle dem "Externe Begrenzung" Stromkreis (`gridcontrol`) zugeordneten Ladepunkte werden entsprechend dem Limit heruntergeregelt. +Das Limit begrenzt den obersten [Lastmanagement](./loadmanagement)-Stromkreis; alle den Stromkreisen zugeordneten Ladepunkte werden entsprechend heruntergeregelt. Bei zu hohem Gesamtverbrauch können Ladevorgänge auch gestoppt werden. Die Regelung betrifft alle Modi (PV, Min+PV, Schnell). @@ -208,6 +250,7 @@ Das Laden der Batterie bei PV-Überschuss ist idR. weiterhin möglich. Nach Ende der Leistungsreduzierung wird das [Netzladen](./battery#gridcharge) automatisch fortgesetzt. Wenn ein Regellimit aktiv ist, wird ein **Banner mit Regelhinweis** auf der Hauptseite in evcc angezeigt. +Verbrauchslimit und Einspeisebegrenzung werden separat dargestellt. ## Protokollierung @@ -233,7 +276,7 @@ Der Anlagenbetreiber ist für den ordnungsgemäßen Betrieb verantwortlich und m Neben Ladepunkten können auch weitere steuerbare Verbraucher in das §14a Lastmanagement einbezogen werden. Dies betrifft z. B. Wärmepumpen oder Batteriespeicher, die über EEBus angebunden oder als Zähler mit zusätzlichem Relaisausgang konfiguriert sind. -Die Steuerung berücksichtigt dabei die aktuelle Leistungsaufnahme aller dem "Externe Begrenzung" Stromkreis (`gridcontrol`) zugeordneten Verbraucher. +Die Steuerung berücksichtigt dabei die aktuelle Leistungsaufnahme aller steuerbaren Verbraucher. Dazu zählen automatisch alle Ladepunkte und alle Zähler mit entsprechenden Schaltausgängen oder EEBus-Schnittstelle mit LPC Use Case als sonstige Verbraucher. Zunächst werden alle sonstigen Verbraucher gedimmt. diff --git a/src/content/docs/de/features/loadmanagement.mdx b/src/content/docs/de/features/loadmanagement.mdx index 1338b4881..58edbf400 100644 --- a/src/content/docs/de/features/loadmanagement.mdx +++ b/src/content/docs/de/features/loadmanagement.mdx @@ -95,8 +95,8 @@ Die Regelung stellt sicher, dass zu keinem Zeitpunkt die Grenzen der jeweiligen **Wichtig:** Es muss immer genau einen Hauptstromkreis geben (einen Stromkreis ohne `parent` Eigenschaft). :::note[Externe Steuerung (§14a, §9)] -Wenn [externe Steuerung](./external-control) konfiguriert ist, wird automatisch ein "Externe Begrenzung" Stromkreis (`gridcontrol`) über dem bestehenden Hauptstromkreis erstellt. -Dieser wird dann zum neuen obersten Stromkreis. +Wenn ein Limit der [externen Steuerung](./external-control) aktiv ist, begrenzt es die Leistung des Hauptstromkreises. +Dies wird durch den Hinweis "Verbrauch begrenzt" auf der Lastmanagement-Karte angezeigt. ::: ## Messwerte diff --git a/src/content/docs/de/reference/configuration/hems.md b/src/content/docs/de/reference/configuration/hems.md index f166f0bfb..90a8d87c2 100644 --- a/src/content/docs/de/reference/configuration/hems.md +++ b/src/content/docs/de/reference/configuration/hems.md @@ -9,8 +9,9 @@ Dies wird z. B. für die Umsetzung von §14a EnWG oder §9 EEG benötigt. Details zu Hintergrund und Einrichtung findest du unter [Externe Steuerung](../../features/external-control). :::note[Hinweis] -Wenn `hems` konfiguriert ist, wird automatisch ein "Externe Begrenzung" Stromkreis (`gridcontrol`) erstellt. -Eine manuelle Konfiguration von Stromkreisen ist dafür nicht erforderlich. +Abregelung und das Dimmen steuerbarer Verbraucher wirken direkt am Gerät, dafür sind keine Stromkreise erforderlich. +Damit das Verbrauchslimit Ladepunkte begrenzt, konfiguriere [Lastmanagement](../../features/loadmanagement)-Stromkreise. +Ein aktives Limit begrenzt dann den obersten Stromkreis. ::: :::note[SMA Sunny Home Manager & SEMP-Protokoll] @@ -29,6 +30,7 @@ Definiert den Typ der externen Steuerung. **Mögliche Werte**: - `relay`: Anbindung über Schaltkontakt +- `fnn`: Anbindung über FNN-Steuerbox mit mehreren Schaltkontakten - `eebus`: Anbindung über das EEBus-Protokoll --- @@ -72,6 +74,78 @@ Weitere Beispiele für verschiedene Anbindungen (GPIO, MQTT, HTTP) findest du un --- +## `type: fnn` + +Anbindung über eine FNN-Steuerbox mit separaten Schaltkontakten. +Dimmen des Verbrauchs (W4) und Abregelung der Einspeisung (W3, S2, S1) werden über einzelne Kontakte signalisiert. + +```yaml +hems: + type: fnn + maxDimPower: 4200 # Verbrauchslimit während Dimmung (in Watt) + maxCurtailPower: 10000 # Installierte PV-Leistung, Basis für Abregelungsstufen (in Watt) + w4: + source: gpio + function: read + pin: 17 # GPIO-Pin 17 auslesen + # Rückgabewert: false = normal, true = aktiv + w3: + source: gpio + function: read + pin: 27 + s2: + source: gpio + function: read + pin: 22 + s1: + source: gpio + function: read + pin: 23 +``` + +### Parameter + +Mindestens eines der Signale `w4` oder `w3` muss konfiguriert sein. + +#### `maxDimPower` + +Verbrauchslimit in Watt, das gesetzt wird, solange das Dimm-Signal (W4) aktiv ist. +Erforderlich, wenn `w4` konfiguriert ist. + +#### `maxCurtailPower` + +Installierte PV-Leistung in Watt. +Basiswert für die Abregelungsstufen (W3, S2, S1). + +#### `w4` + +[Plugin](/de/reference/plugins)-Konfiguration zum Auslesen des Dimm-Signals. +Bei aktivem Signal wird der Verbrauch auf `maxDimPower` begrenzt. + +#### `w3` + +[Plugin](/de/reference/plugins)-Konfiguration zum Auslesen des Abregelungssignals "0 %". +Bei aktivem Signal wird die Einspeisung auf 0 % von `maxCurtailPower` begrenzt. + +#### `s2` + +[Plugin](/de/reference/plugins)-Konfiguration zum Auslesen des Abregelungssignals "30 %". +Bei aktivem Signal wird die Einspeisung auf 30 % von `maxCurtailPower` begrenzt. + +#### `s1` + +[Plugin](/de/reference/plugins)-Konfiguration zum Auslesen des Abregelungssignals "60 %". +Bei aktivem Signal wird die Einspeisung auf 60 % von `maxCurtailPower` begrenzt. + +#### `interval` + +Abfrageintervall für die Schaltkontakte. +Standard: `10s`. + +Details zur Einrichtung findest du unter [Externe Steuerung](../../features/external-control#konfiguration-via-fnn-steuerbox). + +--- + ## `type: eebus` Anbindung über das EEBus-Protokoll. diff --git a/src/content/docs/en/features/external-control.mdx b/src/content/docs/en/features/external-control.mdx index e450e0b16..422996cc7 100644 --- a/src/content/docs/en/features/external-control.mdx +++ b/src/content/docs/en/features/external-control.mdx @@ -33,19 +33,20 @@ Supported devices are marked with "Curtailable" in the [device overview](/en/met According to §9 of the Renewable Energy Act (EEG), grid operators can curtail the feed-in of renewable energy installations in the event of imminent grid overload. This mainly affects larger solar installations, but can also become relevant in the residential sector. -When evcc receives a curtailment signal, inverter production is limited to 0 W directly at the device. -Curtailment is currently a binary signal (on/off) without a dynamic setpoint. +When evcc receives a curtailment signal, inverter production is reduced directly at the device. +FNN control boxes can signal staged limits (60 %, 30 %, 0 %); the active limit is shown in the UI. Full production resumes once the signal clears. ### Connection Options -Connection is established via **Relay** (via a switch contact) or **EEBus** (via the EEBus protocol). +Connection is established via **Relay** (a single switch contact), **FNN Control Box** (multiple switch contacts) or **EEBus** (the EEBus protocol). ## Setup Configuration is done via **Configuration → External Control**. -Limits are enforced via [Load Management](./loadmanagement). -An "External Limit" circuit (`gridcontrol`) is automatically created and placed as the top level above any existing circuits. +Active limits are shown on the **External Control** card and on the main page. +For the consumption limit to apply to charging points, configure [Load Management](./loadmanagement) circuits. +An active limit then caps the top-level circuit, indicated by a "Consumption limited" hint on the Load Management card. ## Configuration via Relay @@ -139,6 +140,46 @@ limit: +## Configuration via FNN Control Box + +Control boxes following the FNN standard signal dimming and curtailment via separate switch contacts. +Consumption dimming (W4) and feed-in curtailment (W3, S2, S1) operate independently. + +```yaml title="External Control" +type: fnn +maxDimPower: 4200 # Consumption limit while dimmed (in watts) +maxCurtailPower: 10000 # Installed PV power, base for curtailment steps (in watts) +w4: + source: gpio + function: read + pin: 17 # Read GPIO pin 17 + # Return value: false = normal, true = active +w3: + source: gpio + function: read + pin: 27 +s2: + source: gpio + function: read + pin: 22 +s1: + source: gpio + function: read + pin: 23 +``` + +The signals have the following meaning: + +| Signal | Effect when active | +| ------ | -------------------------------------------- | +| `w4` | Limit consumption to `maxDimPower` | +| `w3` | Curtail feed-in to 0 % of `maxCurtailPower` | +| `s2` | Curtail feed-in to 30 % of `maxCurtailPower` | +| `s1` | Curtail feed-in to 60 % of `maxCurtailPower` | + +At least one of the signals `w4` or `w3` must be configured. +Each signal is read via a [plugin](/en/reference/plugins) configuration (GPIO, MQTT, HTTP, Modbus), analogous to the relay examples above. + ## Configuration via EEBus The digital connection via EEBus is the future-proof and preferred solution. @@ -195,9 +236,10 @@ The charging points operate with their normal configuration and are coordinated When the grid operator sends a reduction signal: 1. **Relay**: The contact is closed, evcc activates the configured `maxPower` limit -2. **EEBus**: The control box digitally transmits the calculated total limit +2. **FNN Control Box**: The W4 contact is closed, evcc activates the configured `maxDimPower` limit +3. **EEBus**: The control box digitally transmits the calculated total limit -All charging points assigned to the "External Limit" circuit (`gridcontrol`) are reduced according to the limit. +The limit caps the top-level [Load Management](./loadmanagement) circuit; all charging points assigned to circuits are reduced accordingly. If total consumption is too high, charging processes can also be stopped. The control affects all modes (Solar, Min+Solar, Fast). @@ -208,6 +250,7 @@ Charging the battery from solar surplus is usually still possible. After the power reduction ends, [grid charging](./battery#gridcharge) automatically resumes. When a control limit is active, a **banner with control notice** is displayed on the main page in evcc. +Consumption limit and feed-in curtailment are shown separately. ## Logging @@ -235,7 +278,7 @@ The system operator is responsible for proper operation and must keep the log fo In addition to charging points, other controllable consumers can also be integrated into German §14a load management. This applies e.g. to heat pumps or battery storage systems that are connected via EEBus or configured as meters with an additional relay output. -The control takes into account the current power consumption of all consumers assigned to the "External Limit" circuit (`gridcontrol`). +The control takes into account the current power consumption of all controllable consumers. This automatically includes all charging points and all meters with corresponding switching outputs or EEBus interface with LPC use case as other consumers. First, all other consumers are dimmed. diff --git a/src/content/docs/en/features/loadmanagement.mdx b/src/content/docs/en/features/loadmanagement.mdx index b05351e15..269c4ecee 100644 --- a/src/content/docs/en/features/loadmanagement.mdx +++ b/src/content/docs/en/features/loadmanagement.mdx @@ -94,8 +94,8 @@ The regulation ensures that the limits of the respective circuits are not exceed **Important:** There must always be exactly one root circuit (a circuit without `parent` property). :::note[External Control (§14a, §9)] -When [external control](./external-control) is configured, an "External Limit" circuit (`gridcontrol`) is automatically created above the existing root circuit. -This becomes the new top-level circuit. +When an [external control](./external-control) limit is active, it caps the power of the root circuit. +This is indicated by a "Consumption limited" hint on the Load Management card. ::: ## Measuring diff --git a/src/content/docs/en/reference/configuration/hems.md b/src/content/docs/en/reference/configuration/hems.md index e297fc528..5da59659e 100644 --- a/src/content/docs/en/reference/configuration/hems.md +++ b/src/content/docs/en/reference/configuration/hems.md @@ -9,8 +9,9 @@ This is used e.g. for implementing German §14a EnWG or §9 EEG regulations. For background and setup details, see [External Control](../../features/external-control). :::note[Note] -When `hems` is configured, an "External Limit" circuit (`gridcontrol`) is automatically created. -No manual circuit configuration is required. +Curtailment and dimming of controllable consumers act directly on the device, no circuit configuration is required. +For the consumption limit to apply to charging points, configure [Load Management](../../features/loadmanagement) circuits. +An active limit then caps the top-level circuit. ::: :::note[SMA Sunny Home Manager & SEMP Protocol] @@ -29,6 +30,7 @@ Defines the type of external control. **Possible values**: - `relay`: Connection via switch contact +- `fnn`: Connection via FNN control box with multiple switch contacts - `eebus`: Connection via the EEBus protocol --- @@ -72,6 +74,78 @@ For more examples of different connections (GPIO, MQTT, HTTP), see [External Con --- +## `type: fnn` + +Connection via an FNN control box with separate switch contacts. +Dimming of consumption (W4) and curtailment of feed-in (W3, S2, S1) are signaled via individual contacts. + +```yaml +hems: + type: fnn + maxDimPower: 4200 # Consumption limit while dimmed (in watts) + maxCurtailPower: 10000 # Installed PV power, base for curtailment steps (in watts) + w4: + source: gpio + function: read + pin: 17 # Read GPIO pin 17 + # Return value: false = normal, true = active + w3: + source: gpio + function: read + pin: 27 + s2: + source: gpio + function: read + pin: 22 + s1: + source: gpio + function: read + pin: 23 +``` + +### Parameters + +At least one of the signals `w4` or `w3` must be configured. + +#### `maxDimPower` + +Consumption limit in watts that is applied while the dim signal (W4) is active. +Required when `w4` is configured. + +#### `maxCurtailPower` + +Installed PV power in watts. +Base value for the curtailment steps (W3, S2, S1). + +#### `w4` + +[Plugin](/en/reference/plugins) configuration for reading the dim signal. +When active, consumption is limited to `maxDimPower`. + +#### `w3` + +[Plugin](/en/reference/plugins) configuration for reading the curtailment signal "0 %". +When active, feed-in is limited to 0 % of `maxCurtailPower`. + +#### `s2` + +[Plugin](/en/reference/plugins) configuration for reading the curtailment signal "30 %". +When active, feed-in is limited to 30 % of `maxCurtailPower`. + +#### `s1` + +[Plugin](/en/reference/plugins) configuration for reading the curtailment signal "60 %". +When active, feed-in is limited to 60 % of `maxCurtailPower`. + +#### `interval` + +Polling interval for the switch contacts. +Default: `10s`. + +For setup details, see [External Control](../../features/external-control#configuration-via-fnn-control-box). + +--- + ## `type: eebus` Connection via the EEBus protocol.