no message

This commit is contained in:
2025-06-12 15:58:11 +02:00
parent 3e18897491
commit ae7f3e4349
3 changed files with 259 additions and 174 deletions

View File

@@ -1,67 +1,95 @@
# Manager_1 # Belevo EMS Hauptmanager
Beschreibung des Moduls.
### Inhaltsverzeichnis Das **Belevo EMS Hauptmanager**-Modul fasst mehrere untergeordnete **Belevo EMS Manager**-Instanzen zusammen und verteilt die globale verfügbare Leistung direkt auf die einzelnen Verbraucher-Instanzen nicht nur auf die Manager. Jeder Unter-Manager meldet seine Verbraucher-Daten als JSON, der Hauptmanager berechnet die finalen Zuweisungen und liefert für jeden Unter-Manager ein JSON mit den fertigen Verbraucher-Leistungen zurück.
1. [Funktionsumfang](#1-funktionsumfang) ---
2. [Voraussetzungen](#2-voraussetzungen)
3. [Software-Installation](#3-software-installation)
4. [Einrichten der Instanzen in IP-Symcon](#4-einrichten-der-instanzen-in-ip-symcon)
5. [Statusvariablen und Profile](#5-statusvariablen-und-profile)
6. [WebFront](#6-webfront)
7. [PHP-Befehlsreferenz](#7-php-befehlsreferenz)
### 1. Funktionsumfang ## Inhaltsverzeichnis
* 1. [Beschreibung](#beschreibung)
2. [Voraussetzungen](#voraussetzungen)
3. [Installation](#installation)
4. [Instanz anlegen & Konfiguration](#instanz-anlegen--konfiguration)
5. [Statusvariablen](#statusvariablen)
6. [Funktionsweise](#funktionsweise)
1. [Mode-Entscheid](#1-mode-entscheid)
2. [Datenaggregation](#2-datenaggregation)
3. [Globale Soll-Ist-Differenz](#3-globale-soll-ist-differenz)
4. [Verbraucher-Priorisierung](#4-verbraucher-priorisierung)
5. [Leistungszuweisung](#5-leistungszuweisung)
6. [Rückgabe an Unter-Manager](#6-rückgabe-an-unter-manager)
7. [Beispiel-Workflow](#beispiel-workflow)
8. [Mapping auf Code-Komponenten](#mapping-auf-code-komponenten)
9. [Zukünftige Erweiterungen](#zukünftige-erweiterungen)
10. [Support](#support)
### 2. Voraussetzungen ---
- IP-Symcon ab Version 7.1 ## Beschreibung
### 3. Software-Installation Der Hauptmanager koordiniert beliebig viele Unter-Manager (z. B. Hausanschluss, ZEV-Cluster, LEG-Center). Jeder Unter-Manager sammelt in seinem Zyklus die Daten aller angeschlossenen Verbraucher (JSON-Array mit Feldern wie `deviceID`, `priority`, `requestedLevels`, `currentDrawn`, `receivedTotal` usw.) und stellt dieses JSON in seiner `DatenZurueck`-Variable bereit. Der Hauptmanager
* Über den Module Store das 'Manager_1'-Modul installieren. 1. liest alle `DatenZurueck` JSONs der Unter-Manager ein,
* Alternativ über das Module Control folgende URL hinzufügen 2. entscheidet global über Solarlade- oder Peak-Shaving-Mode,
3. berechnet eine einzige **globale** SollIst-Differenz,
4. führt Priorisierung und Fair-Round-Robin über **alle** Verbraucher durch,
5. verteilt die verfügbare Leistung in Stufen (je Verbraucher aus `PowerSteps`),
6. erzeugt für jeden Unter-Manager ein JSON mit den finalen `assignedLevel`-Werten pro `deviceID`,
7. schreibt diese JSONs in die jeweilige `DatenHoch`-Variable.
### 4. Einrichten der Instanzen in IP-Symcon Die Unter-Manager übernehmen das JSON und senden die fertigen `assignedLevel`-Werte an ihre lokalen Verbraucher-Instanzen.
Unter 'Instanz hinzufügen' kann das 'Manager_1'-Modul mithilfe des Schnellfilters gefunden werden. ---
- Weitere Informationen zum Hinzufügen von Instanzen in der [Dokumentation der Instanzen](https://www.symcon.de/service/dokumentation/konzepte/instanzen/#Instanz_hinzufügen)
__Konfigurationsseite__: ## Voraussetzungen
Name | Beschreibung - IP-Symcon **≥ 8.0**
-------- | ------------------ - Bereits installierte **Belevo EMS Manager**-Instanzen
| - Zugriff auf Git-Repository:
| https://git.belevo.ch/dh/Symcon_Belevo_Energiemanagement_testing.git
### 5. Statusvariablen und Profile yaml
Kopieren
Bearbeiten
Die Statusvariablen/Kategorien werden automatisch angelegt. Das Löschen einzelner kann zu Fehlfunktionen führen. ---
#### Statusvariablen ## Installation
Name | Typ | Beschreibung 1. In IP-Symcon **Module Control** öffnen
------ | ------- | ------------ 2. **Hinzufügen → Git-Repository**
| | 3. URL eintragen (s. o.)
| | 4. Modul **„Belevo EMS Hauptmanager“** installieren
5. IP-Symcon neu starten
#### Profile ---
Name | Typ ## Instanz anlegen & Konfiguration
------ | -------
|
|
### 6. WebFront 1. Rechtsklick auf **Instanzen****Instanz hinzufügen**
2. Filter: **Belevo**
3. **„Belevo EMS Hauptmanager“** auswählen und Instanz erstellen
Die Funktionalität, die das Modul im WebFront bietet. ### Properties
### 7. PHP-Befehlsreferenz | Name | Typ | Beschreibung |
|------------------------|----------------|------------------------------------------------------------------------------|
| **HauptmanagerAktiv** | Boolean | Schaltet globale Verteilungslogik ein/aus |
| **Interval** | Integer (s) | Zyklusintervall für Verteilung und Mode-Entscheid |
| **Sollleistung_Max** | Float (W) | Max. Gesamtleistung, die verteilt werden darf |
| **Ueberschussleistung**| Float (W) | Untergrenze für Solarlade-Mode (z. B. 0 W) |
| **Manager_Liste** | InstanceList | Liste aller untergeordneten Belevo EMS Manager-Instanzen |
| **DatenZurueck** | SelectVariable | Variable-ID (Integer) in jeder Unter-Manager-Instanz, aus der JSON gelesen wird |
| **DatenHoch** | SelectVariable | Variable-ID in jeder Unter-Manager-Instanz, in die JSON geschrieben wird |
`boolean GEF_BeispielFunktion(integer $InstanzID);` ---
Erklärung der Funktion.
Beispiel: ## Statusvariablen
`GEF_BeispielFunktion(12345);`
| Ident | Typ | Profil | Beschreibung |
|--------------------------|-----------|--------------|-----------------------------------------------------|
| **LetzteBerechnung** | DateTime | — | Zeitstempel der letzten Verteilung |
| **Globale_Differenz** | Float | ~Watt~~W~ | Zuletzt berechnete SollIst-Differenz global (W) |
| **Anzahl_Manager** | Integer | — | Anzahl aktuell verbundener Unter-Manager |
---

View File

@@ -1,67 +1,125 @@
# Manager_1 # Belevo EMS Manager
Beschreibung des Moduls.
### Inhaltsverzeichnis Dieses Modul ist das Herzstück des Belevo Energiemanagement-Systems. Es steuert in festgelegten Intervallen die Leistungsverteilung auf Ihre Verbraucher-Instanzen, trifft den Solarlade- vs. Peak-Shaving-Entscheid und verteilt entsprechend die Leistungen an die Verbraucher.
---
## Inhaltsverzeichnis
1. [Funktionsumfang](#1-funktionsumfang) 1. [Funktionsumfang](#1-funktionsumfang)
2. [Voraussetzungen](#2-voraussetzungen) 2. [Voraussetzungen](#2-voraussetzungen)
3. [Software-Installation](#3-software-installation) 3. [Installation](#3-installation)
4. [Einrichten der Instanzen in IP-Symcon](#4-einrichten-der-instanzen-in-ip-symcon) 4. [Instanz anlegen & Konfiguration](#4-instanz-anlegen--konfiguration)
5. [Statusvariablen und Profile](#5-statusvariablen-und-profile) 5. [Status­variablen & Profile](#5-statusvariablen--profile)
6. [WebFront](#6-webfront) 6. [WebFront / Bedienung](#6-webfront--bedienung)
7. [PHP-Befehlsreferenz](#7-php-befehlsreferenz) 7. [Mapping auf Code-Komponenten](#7-mapping-auf-code-komponenten)
8. [Zukünftige Erweiterungen](#8-zukünftige-erweiterungen)
### 1. Funktionsumfang ---
* ## 1. Funktionsumfang
### 2. Voraussetzungen - **Zyklische Steuerung**
In konfigurierbaren Intervallen (`Interval`) wird die Methode `DistributeEnergy()` ausgelöst.
- **Mode-Entscheid**
Basierend auf der aktuellen Netz-Sollleistung (`Sollleistung_Max`) und der PV-Überschuss-Grenze (`Ueberschussleistung`) wählt der Manager automatisch zwischen
- **Solarlade-Mode** (`Is_Peak_Shaving = false`)
- **Peak-Shaving-Mode** (`Is_Peak_Shaving = true`)
- **Leistungskonten**
Jeder Verbraucher meldet über seine Instanzvariablen (`Power`, `Bezogene_Energie`, `PowerSteps`, `PV_Prio` / `Sperre_Prio`) seinen Bedarf bzw. Reduktions- oder Einspeise-Potential.
- **Priorisierung & Fairness**
1. Sortierung der Verbraucher nach Priorität (`PV_Prio` im Solarmode, `Sperre_Prio` im Shaving-Mode)
2. Bei Gleichpriorität abwechselnde Zuteilung nach bisher bezogener Energie (`Bezogene_Energie`)
- **Differenz-Verteilung**
Die verbleibende SollIst-Differenz D wird in Stufen (je Verbraucher aus `PowerSteps`) abgearbeitet, bis D ≃ 0.
- **Externe Kommunikation**
Über die Properties `DatenHoch` und `DatenZuruck` (Variable-IDs) können mehrere Manager zu einem Übergeordneten Hauptmanager zusammengefasst werden (V-ZEV, LEG).
- IP-Symcon ab Version 7.1 ---
### 3. Software-Installation ## 2. Voraussetzungen
* Über den Module Store das 'Manager_1'-Modul installieren. - IP-Symcon **≥ 8.0**
* Alternativ über das Module Control folgende URL hinzufügen - Modul-URL:
https://git.belevo.ch/dh/Symcon_Belevo_Energiemanagement_testing.git
### 4. Einrichten der Instanzen in IP-Symcon yaml
Kopieren
Bearbeiten
- Einmalige manuelle Anmeldung aller Verbraucher in `Verbraucher_Liste`
Unter 'Instanz hinzufügen' kann das 'Manager_1'-Modul mithilfe des Schnellfilters gefunden werden. ---
- Weitere Informationen zum Hinzufügen von Instanzen in der [Dokumentation der Instanzen](https://www.symcon.de/service/dokumentation/konzepte/instanzen/#Instanz_hinzufügen)
__Konfigurationsseite__: ## 3. Installation
Name | Beschreibung 1. In IP-Symcon **Module Control** öffnen
-------- | ------------------ 2. **Hinzufügen → Git-Repository**
| 3. URL eingeben (oben) und **Installieren**
| 4. IP-Symcon neu starten
### 5. Statusvariablen und Profile ---
Die Statusvariablen/Kategorien werden automatisch angelegt. Das Löschen einzelner kann zu Fehlfunktionen führen. ## 4. Instanz anlegen & Konfiguration
#### Statusvariablen ### 4.1 Instanz anlegen
Name | Typ | Beschreibung - Rechtsklick **Instanzen****Instanz hinzufügen**
------ | ------- | ------------ - Filter: **Belevo**
| | - Auswahl: **Manager**
| |
#### Profile ### 4.2 Properties
Name | Typ | Name | Typ | Beschreibung |
------ | ------- |--------------------------|-----------------|----------------------------------------------------------------------------|
| | **Peakleistung** | NumberSpinner | Sollwert-Vorgabe für Peak-Shaving (Watt) |
| | **Ueberschussleistung** | NumberSpinner | Sollwert-Vorgabe für Solarladen (Watt) |
| **Netzbezug** | SelectVariable | Variable mit dem aktuellen Netz-Ist-Wert (Watt) |
| **HauptmanagerAktiv** | CheckBox | Schaltet die Ünergeordnete Manager-Logik global ein/aus |
| **ManagerID** | NumberSpinner | Eindeutige ID für externe ManagerKommunikation |
| **DatenHoch** | SelectVariable | Variable, in die Manager-Statistiken oder Statusdaten geschrieben werden |
| **DatenZuruck** | SelectVariable | Variable, aus der Verbraucherdaten importiert werden |
| **Interval** | NumberSpinner | Intervall für Neuberechnung der Werte (Sekunden) |
| **Verbraucher_Liste** | List | Auswahl aller Verbraucher-Instanzen, die gesteuert werden sollen |
### 6. WebFront ---
Die Funktionalität, die das Modul im WebFront bietet. ## 5. Status­variablen & Profile
### 7. PHP-Befehlsreferenz | Ident | Typ | Profil | Beschreibung |
|-------------------------|------------|----------------|-------------------------------------------------------------------|
| **Is_Peak_Shaving** | Boolean | — | Modusanzeige (false = Solarladen, true = Peak-Shaving) |
| **LetzteBerechnung** | DateTime | — | Zeitpunkt der letzten Zyklus-Ausführung |
| **Aktuelle_Differenz** | Float | ~Watt~~W~ | Zuletzt berechnete SollIst-Differenz |
`boolean GEF_BeispielFunktion(integer $InstanzID);` ---
Erklärung der Funktion.
Beispiel: ## 6. WebFront / Bedienung
`GEF_BeispielFunktion(12345);`
Im WebFront können Sie
- den **aktuellen Modus** (`Is_Peak_Shaving`) beobachten
---
## 7. Mapping auf Code-Komponenten
| Komponente | Modul-Datei | Funktion |
|---------------------------|-----------------------------|------------------------------------------------------------|
| **Timer-Registrierung** | `Manager/module.php` | `ApplyChanges()``SetTimerInterval('Interval', …)` |
| **Zyklischer Aufruf** | `Manager/module.php` | `ManageTimer()` ruft `DistributeEnergy()` auf |
| **Mode-Entscheidlogik** | `Manager/module.php` | Berechnung:
```php
$isPeak = $ist > (($peak + $solar) / 2);
$this->SetValue('Is_Peak_Shaving', $isPeak);
``` |
| **Datenzugriff** | `Manager/module.php` | `$this->ReadPropertyInteger('Peakleistung')` usw. |
| **Verbraucher-Schleife** | `Manager/module.php` | `$this->ReadPropertyArray('Verbraucher_Liste')` |
| **Leistungszuteilung** | `Manager/module.php` | `DistributeEnergy()` → Round-Robin über `PowerSteps` |
| **Externe Schnittstelle** | `Manager/module.php` | Verwendung von `DatenHoch` / `DatenZuruck` Variablen-IDs |
---
## 8. Zukünftige Erweiterungen
- **Automatische Registrierung** neuer Verbraucher (ohne manuelles Eintragen)
---

159
README.md
View File

@@ -1,58 +1,66 @@
# Symcon Belevo Energiemanagement Modul # Symcon Belevo Energiemanagement Modul
Dieses Modul implementiert das neuartige Energiemanagementsystem von Belevo in IP-Symcon. Es verteilt elektrische Leistung auf mehrere Verbraucher (z. B. Elektroauto-Ladestationen, Boiler, Speicher) dynamisch nach Priorität und Fairness und unterstützt sowohl Solarlade- als auch Peak-Shaving-Betrieb. Dieses Modul implementiert das neuartige Energiemanagementsystem der Belevo AG in IP-Symcon.
Es verteilt elektrische Leistung auf mehrere Verbraucher (z. B. Elektroauto-Ladestationen, Boiler, Speicher) dynamisch nach Priorität und Fairness. Unterstützt werden:
- **Einzel­haus-Anschlüsse**
- **ZEV/V-ZEV-Verbundsysteme**
- **Lasten­management-Gemeinschaften (LEG)**
--- ---
## Übersicht ## Besonderheiten & Vorteile
- **Manager-Instanz** - **Vollständige Skalierbarkeit** von Einfamilienhaus über ZEV/V-ZEV bis LEG
Zentrale Logik für Soll-Ist-Vergleich, Priorisierung und Leistungsverteilung. - **Standardisierte Schnittstelle** für Manager ↔ Verbraucher (kein ständiges Nachkonfigurieren)
- **Verbraucher-Instanzen** - **Fairness** bei gleicher Priorität durch Round-Robin-Verteilung der Leistungsschritte
Jedes ansteuerbare Gerät (Ladestation, Boiler etc.) ist eine eigene Instanz, die ihre Leistungswünsche über standardisierte Variablen meldet. - **Bidirektionaler Betrieb** (z. B. Batteriespeicher, bidirektionale Ladestationen)
- **Dynamische Tarif­gestaltung** über Prioritätsklassen
- **Automatisches Peak-Shaving** ohne teure Netzspitzen
- **Einfaches Hinzufügen/Entfernen** von Verbrauchern (aktuell manuell, später automatisch möglich)
--- ---
## Voraussetzungen ## Voraussetzungen
- IP-Symcon **≥ 8.0** - IP-Symcon **≥ 8.0**
- Zugriff auf Git-Repository - Zugriff auf das Git-Repository
--- ---
## Installation ## Installation
1. In IP-Symcon **Module Control** öffnen. 1. In IP-Symcon **Module Control** öffnen
2. Auf **“Hinzufügen”** → **Git-Repository”** klicken. 2. **Hinzufügen → Git-Repository**
3. URL eintragen: https://git.belevo.ch/dh/Symcon_Belevo_Energiemanagement_testing.git 3. URL eintragen: https://git.belevo.ch/dh/Symcon_Belevo_Energiemanagement_testing.git
4. Modul installieren und neu laden. 4. Modul installieren und IP-Symcon neu starten
--- ---
## 1. Manager-Instanz anlegen ## 1. Manager-Instanz anlegen
1. Rechtsklick auf **Instanzen****Instanz hinzufügen** 1. Rechtsklick auf **Instanzen****Instanz hinzufügen**
2. Filter: Belevo EMS Manager“ 2. Filter: **Belevo**
3. Instanz erstellen und aufrufen 3. **„Manager“** auswählen und Instanz erstellen
### Manager-Eigenschaften ### Manager-Eigenschaften
| Property | Typ | Beschreibung | | Property | Typ | Beschreibung |
|-----------------------------------|-----------|--------------------------------------------------------------------------------------------------| |------------------------------------|-----------------|------------------------------------------------------------------------------|
| **Zeit_Zwischen_Zustandswechseln**| Integer | Dauer (Sekunden) zwischen zwei Zustandswechsel-Zyklen (Default: 5 s) | | **Zeit_Zwischen_Zustandswechseln** | Integer (Sek.) | Dauer zwischen zwei Zyklen (Default: 5 s) |
| **Interval** | Integer | Haupt-Timer-Intervall zur Neuberechnung und Leistungsverteilung (Sekunden) | | **Interval** | Integer (Sek.) | Haupt-Timerintervall zur Neuberechnung |
| **Sollleistung_Max** | Float | Maximale Gesamtleistung am Netzanschluss (Watt) | | **Sollleistung_Max** | Float (Watt) | Maximale erlaubte Gesamtleistung am Netzanschluss |
| **Ueberschussleistung** | Float | Untergrenze (Watt) für PV-Überschuss-Mode (→ Solarladen) | | **Ueberschussleistung** | Float (Watt) | Untergrenze für Solarlade-Mode (z. B. 0 W) |
| **HauptmanagerAktiv** | Boolean | Schaltet die Manager-Logik global ein/aus | | **HauptmanagerAktiv** | Boolean | Schaltet die gesamte Manager-Logik ein/aus |
| **Verbraucher_Liste** | InstanceList | Liste aller Verbraucher-Instanzen, die der Manager steuern soll | | **Verbraucher_Liste** | InstanceList | Liste aller Verbraucher-Instanzen, die der Manager steuern soll |
### Manager-Statusvariablen ### Manager-Statusvariablen
| Ident | Typ | Beschreibung | | Ident | Typ | Beschreibung |
|------------------------|---------|-------------------------------------------------------------------| |-------------------------|-----------|------------------------------------------------------------------------------|
| **Is_Peak_Shaving** | Boolean | `false` = Solarladen-Mode; `true` = Peak-Shaving-Mode | | **Is_Peak_Shaving** | Boolean | `true` = Peak-Shaving-Mode; `false` = Solarlade-Mode |
| **LetzteBerechnung** | DateTime| Zeitstempel der letzten Zyklus-Ausführung | | **LetzteBerechnung** | DateTime | Zeitstempel der letzten Ausführung |
| **Aktuelle_Differenz** | Float | Letzte Soll-Ist-Leistungsdifferenz (Watt) | | **Aktuelle_Differenz** | Float (W) | Zuletzt berechnete SollIst-Differenz |
--- ---
@@ -61,82 +69,73 @@ Dieses Modul implementiert das neuartige Energiemanagementsystem von Belevo in I
Für jedes zu steuernde Gerät: Für jedes zu steuernde Gerät:
1. Rechtsklick auf **Instanzen****Instanz hinzufügen** 1. Rechtsklick auf **Instanzen****Instanz hinzufügen**
2. Filter: Belevo EMS Verbraucher“ 2. Filter: **Belevo**
3. Instanz erstellen und aufrufen 3. **„Belevo EMS Verbraucher“** auswählen und Instanz erstellen
### Verbraucher-Eigenschaften ### Verbraucher-Eigenschaften
| Property | Typ | Beschreibung | | Property | Typ | Beschreibung |
|-----------------------|-----------|---------------------------------------------------------------------------| |-----------------|------------|----------------------------------------------------------------------------|
| **PV_Prio** | Integer | Prioritätsstufe beim Solarladen (niedriger Wert = höhere Priorität) | | **PV_Prio** | Integer | Priorität im Solarlade-Mode (niedriger = höhere Priorität) |
| **Sperre_Prio** | Integer | Prioritätsstufe im Peak-Shaving (niedriger Wert = höhere Priorität) | | **Sperre_Prio** | Integer | Priorität im Peak-Shaving-Mode (niedriger = höhere Priorität) |
| **PowerSteps** | String | JSON-Array möglicher Leistungsstufen (z. B. `[2000,4000,6000]` in Watt) | | **PowerSteps** | String | JSON-Array möglicher Leistungsstufen in Watt, z. B. `[0,1000,2000]` |
### Verbraucher-Variablen (automatisch angelegt) ### Automatisch angelegte Variablen
| Ident | Typ | Profil | Beschreibung | | Ident | Typ | Profil | Beschreibung |
|-----------------------|---------|----------|------------------------------------------------------------------------------| |----------------------|----------|--------------|-----------------------------------------------------------------------|
| **Power** | Float | ~Watt~~W~| Aktuell angeforderte Leistung (W) | | **Power** | Float | ~Watt~~W~ | Aktuell angeforderte Leistung (W) |
| **Aktuelle_Leistung** | Float | ~Watt~~W~| Vom Manager zugewiesene Leistung im aktuellen Zyklus (W) | | **Aktuelle_Leistung**| Float | ~Watt~~W~ | Vom Manager zugewiesene Leistung im aktuellen Zyklus (W) |
| **Bezogene_Energie** | Float | Wh | Kumulierte Energieabnahme seit Zyklusstart (Wh) | | **Bezogene_Energie** | Float | Wh | Kumulierte Energieabnahme seit Zyklusstart (Wh) |
| **Leistung_Delta** | Float | ~Watt~~W~| Differenz zwischen `Power` und `Aktuelle_Leistung` (W) | | **Leistung_Delta** | Float | ~Watt~~W~ | Differenz zwischen `Power` und `Aktuelle_Leistung` (W) |
| **Idle** | Boolean | — | `true`, wenn keine Anpassung erforderlich war | | **Idle** | Boolean | — | `true`, wenn Verbraucher gerade keine Änderung benötigt |
--- ---
## 3. Funktionsweise ## 3. Funktionsweise
1. **Zyklischer Aufruf** ### 3.1 Mode-Entscheid
— Der Manager-Timer (Interval s) startet den Verteilungszyklus.
2. **Soll-Ist-Berechnung** - In jedem Zyklus liest der Manager den **aktuellen Ist-Netzanschlusswert** (Summe aller `Aktuelle_Leistung`).
— Manager liest `Sollleistung_Max` und summiert alle `Aktuelle_Leistung` der Verbraucher → Istwert I. - Er berechnet den **Schwellwert** als
— D = Soll I → erforderliche Zuteilung oder Reduktion. Threshold = (Sollleistung_Max + Ueberschussleistung) / 2
3. **Modus-Entscheid**
- **Solarladen (Is_Peak_Shaving = false):** markdown
• Füllt PV-Überschuss auf bis `Ueberschussleistung`. Kopieren
• Nutzt `PV_Prio` für Priorisierung. Bearbeiten
- **Peak-Shaving (Is_Peak_Shaving = true):** - Ist der Ist-Wert **> Threshold**, setzt er **Peak-Shaving** (`Is_Peak_Shaving = true`), sonst **Solarladen** (`false`).
• D > 0 → reduziert Verbraucher-Leistung nach `Sperre_Prio`. - Diese Boolean teilt er allen Verbrauchern mit, damit sie ihre `PowerSteps`-Arrays entsprechend vorbereiten.
4. **Priorisierung & Fairness**
- Sortierung nach Priorität (niedrigerer Wert zuerst). ### 3.2 SollIst-Berechnung
- Bei Gleichpriorität: Verbraucher mit geringerem `Bezogene_Energie` zuerst.
5. **Leistungszuweisung** - Differenz **D** = `Sollleistung_Max` Ist-Wert
- Jeder Verbraucher erhält seine nächsthöhere Stufe aus `PowerSteps`, die ≤ D ist. - **D > 0**: Bedarf → Solarlade-Zuteilung
- `Aktuelle_Leistung` wird gesetzt, `Bezogene_Energie` und `Leistung_Delta` aktualisiert. - **D < 0**: Überschuss → Peak-Shaving-Reduktion
6. **Kommunikation**
- Manager schreibt neue `Aktuelle_Leistung` direkt in die Verbraucher-Variable. ### 3.3 Leistungszuweisung
- Verbraucher regeln ihre Hardware (z. B. Ladestrom) entsprechend.
- Für jeden Verbraucher wählt der Manager die **höchste** Stufe aus `PowerSteps`, die die verbleibende Differenz |D| **nicht überschreitet**.
- Er durchläuft die Verbraucher nacheinander (Round-Robin), bis |D| annähernd erschöpft ist.
**Beispiel:**
- Verbraucher A: `[0,1000,2000]`
- Verbraucher B: `[0,500,1500,2000]`
- Differenz D = 3000 W
1. A erhält 1000 W → Rest 2000 W
2. B erhält 1500 W → Rest 500 W
3. Nächster Zyklus oder weitere Verteilschritte mit Rest 500 W
--- ---
## 4. Beispiel-Workflow ## 4. Registrierung der Verbraucher
1. **Manager**: - **Aktuell müssen alle Verbraucher manuell** in `Verbraucher_Liste` eingetragen werden.
- `Sollleistung_Max` = 11 000 W - **Zukünftige Versionen** werden eine automatische Geräteerkennung unterstützen, so dass neue Verbraucher ohne Konfigurationsaufwand hinzukommen können.
- `Ueberschussleistung` = 0 W
- `Interval` = 5 s
2. **Verbraucher A (E-Auto):**
- `PV_Prio` = 2, `Sperre_Prio` = 3
- `PowerSteps` = `[6000, 4000, 2000]`
3. **Verbraucher B (Boiler):**
- `PV_Prio` = 3, `Sperre_Prio` = 2
- `PowerSteps` = `[6000]`
| Zyklus | Modus | Reihenfolge | Zuteilung A (W) | Zuteilung B (W) |
|--------|----------------|----------------|-----------------|-----------------|
| 1 | Solarladen | A → B | 6000 | 4000 |
| 2 | Solarladen | A → B | 6000 | 4000 |
| … | … | … | … | … |
| Peak | Peak-Shaving | B → A | 6000 (Reduktion)| 4000 (Reduktion)|
--- ---
## 5. Support & Feedback ## 5. Support & Entwicklung
Bei Problemen oder Feature-Wünschen öffne bitte ein Issue im Git-Repository oder kontaktiere das Entwickler-Team. - **Issues & Feature-Requests** bitte im Git-Repository eröffnen.
- **Entwickler**: Belevo AG
---
© 2025 Belevo AG