diff --git a/README.md b/README.md index 6d0656d..0acc70c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,142 @@ -# Energiemanager_Symconmodule_Demo +# Symcon Belevo Energiemanagement Modul -Module zum Managen und Optimieren von Solarstrom und Lastmanagement innerhalb eines Symconservers \ No newline at end of file +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. + +--- + +## Übersicht + +- **Manager-Instanz** + Zentrale Logik für Soll-Ist-Vergleich, Priorisierung und Leistungsverteilung. +- **Verbraucher-Instanzen** + Jedes ansteuerbare Gerät (Ladestation, Boiler etc.) ist eine eigene Instanz, die ihre Leistungswünsche über standardisierte Variablen meldet. + +--- + +## Voraussetzungen + +- IP-Symcon **≥ 8.0** +- Zugriff auf Git-Repository + +--- + +## Installation + +1. In IP-Symcon → **Module Control** öffnen. +2. Auf **“Hinzufügen”** → **“Git-Repository”** klicken. +3. URL eintragen: https://git.belevo.ch/dh/Symcon_Belevo_Energiemanagement_testing.git +4. Modul installieren und neu laden. + +--- + +## 1. Manager-Instanz anlegen + +1. Rechtsklick auf **Instanzen** → **Instanz hinzufügen** +2. Filter: „Belevo EMS Manager“ +3. Instanz erstellen und aufrufen + +### Manager-Eigenschaften + +| Property | Typ | Beschreibung | +|-----------------------------------|-----------|--------------------------------------------------------------------------------------------------| +| **Zeit_Zwischen_Zustandswechseln**| Integer | Dauer (Sekunden) zwischen zwei Zustandswechsel-Zyklen (Default: 5 s) | +| **Interval** | Integer | Haupt-Timer-Intervall zur Neuberechnung und Leistungsverteilung (Sekunden) | +| **Sollleistung_Max** | Float | Maximale Gesamtleistung am Netzanschluss (Watt) | +| **Ueberschussleistung** | Float | Untergrenze (Watt) für PV-Überschuss-Mode (→ Solarladen) | +| **HauptmanagerAktiv** | Boolean | Schaltet die Manager-Logik global ein/aus | +| **Verbraucher_Liste** | InstanceList | Liste aller Verbraucher-Instanzen, die der Manager steuern soll | + +### Manager-Statusvariablen + +| Ident | Typ | Beschreibung | +|------------------------|---------|-------------------------------------------------------------------| +| **Is_Peak_Shaving** | Boolean | `false` = Solarladen-Mode; `true` = Peak-Shaving-Mode | +| **LetzteBerechnung** | DateTime| Zeitstempel der letzten Zyklus-Ausführung | +| **Aktuelle_Differenz** | Float | Letzte Soll-Ist-Leistungsdifferenz (Watt) | + +--- + +## 2. Verbraucher-Instanzen anlegen + +Für jedes zu steuernde Gerät: + +1. Rechtsklick auf **Instanzen** → **Instanz hinzufügen** +2. Filter: „Belevo EMS Verbraucher“ +3. Instanz erstellen und aufrufen + +### Verbraucher-Eigenschaften + +| Property | Typ | Beschreibung | +|-----------------------|-----------|---------------------------------------------------------------------------| +| **PV_Prio** | Integer | Prioritätsstufe beim Solarladen (niedriger Wert = höhere Priorität) | +| **Sperre_Prio** | Integer | Prioritätsstufe im Peak-Shaving (niedriger Wert = höhere Priorität) | +| **PowerSteps** | String | JSON-Array möglicher Leistungsstufen (z. B. `[2000,4000,6000]` in Watt) | + +### Verbraucher-Variablen (automatisch angelegt) + +| Ident | Typ | Profil | Beschreibung | +|-----------------------|---------|----------|------------------------------------------------------------------------------| +| **Power** | Float | ~Watt~~W~| Aktuell angeforderte Leistung (W) | +| **Aktuelle_Leistung** | Float | ~Watt~~W~| Vom Manager zugewiesene Leistung im aktuellen Zyklus (W) | +| **Bezogene_Energie** | Float | Wh | Kumulierte Energieabnahme seit Zyklusstart (Wh) | +| **Leistung_Delta** | Float | ~Watt~~W~| Differenz zwischen `Power` und `Aktuelle_Leistung` (W) | +| **Idle** | Boolean | — | `true`, wenn keine Anpassung erforderlich war | + +--- + +## 3. Funktionsweise + +1. **Zyklischer Aufruf** +— Der Manager-Timer (Interval s) startet den Verteilungszyklus. +2. **Soll-Ist-Berechnung** +— Manager liest `Sollleistung_Max` und summiert alle `Aktuelle_Leistung` der Verbraucher → Istwert I. +— D = Soll – I → erforderliche Zuteilung oder Reduktion. +3. **Modus-Entscheid** +- **Solarladen (Is_Peak_Shaving = false):** + • Füllt PV-Überschuss auf bis `Ueberschussleistung`. + • Nutzt `PV_Prio` für Priorisierung. +- **Peak-Shaving (Is_Peak_Shaving = true):** + • D > 0 → reduziert Verbraucher-Leistung nach `Sperre_Prio`. +4. **Priorisierung & Fairness** +- Sortierung nach Priorität (niedrigerer Wert zuerst). +- Bei Gleichpriorität: Verbraucher mit geringerem `Bezogene_Energie` zuerst. +5. **Leistungszuweisung** +- Jeder Verbraucher erhält seine nächsthöhere Stufe aus `PowerSteps`, die ≤ D ist. +- `Aktuelle_Leistung` wird gesetzt, `Bezogene_Energie` und `Leistung_Delta` aktualisiert. +6. **Kommunikation** +- Manager schreibt neue `Aktuelle_Leistung` direkt in die Verbraucher-Variable. +- Verbraucher regeln ihre Hardware (z. B. Ladestrom) entsprechend. + +--- + +## 4. Beispiel-Workflow + +1. **Manager**: +- `Sollleistung_Max` = 11 000 W +- `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 + +Bei Problemen oder Feature-Wünschen öffne bitte ein Issue im Git-Repository oder kontaktiere das Entwickler-Team. + +--- + +© 2025 Belevo AG