# Enelix-Verbrauchermodul Batterie Dieses Modul integriert Batteriespeicher als steuerbare Verbraucher/Erzeuger in das Belevo Energiemanagement-System (Enelix). Es berechnet dynamisch Lade- und Entladevorgaben, kommuniziert mit dem übergeordneten Manager und steuert native Wechselrichter-Schnittstellen. --- ## Inhaltsverzeichnis 1. [Funktionsumfang](#1-funktionsumfang) 2. [Voraussetzungen](#2-voraussetzungen) 3. [Installation](#3-installation) 4. [Instanz anlegen & Konfiguration](#4-instanz-anlegen--konfiguration) 5. [Statusvariablen & Profile](#5-statusvariablen--profile) 6. [WebFront / Bedienung](#6-webfront--bedienung) 7. [Mapping auf Code-Komponenten](#7-mapping-auf-code-komponenten) 8. [Zukünftige Erweiterungen](#8-zukünftige-erweiterungen) --- ## 1. Funktionsumfang - **Zyklische Steuerung:** In konfigurierbaren Intervallen (`Interval`) berechnet das Modul die aktuell verfügbaren Leistungsschritte und aktualisiert den Status. - **Hersteller-Integration:** Native Steuerlogik für spezifische Wechselrichter (Goodwe, Solaredge, Sig Energy). Die Modus-Umschaltung (Laden/Entladen/Standby) erfolgt automatisch durch setzen der passenden Hersteller-Codes. - **PowerSteps-Generierung:** Das Modul meldet dem Enelix-Manager ein Array an möglichen Leistungsschritten (`PowerSteps`), berechnet aus der maximalen Lade- (`MaxBatterieleistung`) und Entladeleistung (`MaxNachladen`). Dies geschieht in 250 Watt schritten, wobei zur feineren Regelung um den aktuellen Sollwert noch 50W-Schritte verteilt werden. - **Peak-Shaving vs. PV-Überschuss:** Automatische Anpassung der angebotenen `PowerSteps` basierend auf dem vom Manager vorgegebenen Modus (`Is_Peak_Shaving`). Im Peak-Shaving-Modus arbeitet die Batterie im unteren SoC-Bereich um lastspitzen zu brechen, im Solarmodus im oberen Bereich um den Eigenverbruach zu optimieren. - **Peak-Shaving-Reserve:** Berücksichtigung des Ladezustands (SoC). Eine einstellbare Reserve (`AufdasNachladen`) wird für das Peak-Shaving vorgehalten. Bei Unterschreitung der Minimalkapazität (`MinimumEntladen`) wird die Entladung blockiert. --- ## 2. Voraussetzungen - IP-Symcon **≥ 8.0** - Modul-URL: `https://git.belevo.ch/dh/enelix.git` - Vorhandener und eingerichteter Enelix Manager. - Anbindung der Wechselrichter-Variablen (Netzbezug, SoC, Batterieleistung) in IP-Symcon. --- ## 3. Installation 1. In IP-Symcon **Module Control** öffnen. 2. **Hinzufügen → Git-Repository**. 3. URL eingeben und **Installieren**. 4. IP-Symcon neu starten. --- ## 4. Instanz anlegen & Konfiguration ### 4.1 Instanz anlegen - Rechtsklick **Instanzen** → **Instanz hinzufügen** - Filter: **Belevo** - Auswahl: **Batterie (Verbraucher)** ### 4.2 Properties | Name | Typ | Beschreibung | |---|---|---| | **IdleCounterMax** | NumberSpinner | Anzahl der Intervall-Zyklen zwischen zwei Leistungsänderungen. | | **Interval** | NumberSpinner | Berechnungsintervall in Sekunden. | | **Batterietyp** | Select | Wechselrichter-Typ (0: Unabhängig, 1: Goodwe, 2: Solaredge, 3: Sig Energy). | | **MaxBatterieleistung** | SelectVariable | Maximale Ladeleistung der Batterie (Watt). | | **MaxNachladen** | SelectVariable | Maximalen Entladeleistung der Batterie (Watt). | | **AufdasNachladen** | NumberSpinner | Nachladekapazität (Reserve für Peak-Shaving in %). | | **MinimumEntladen** | NumberSpinner | Minimale Kapazität (Tiefenentladeschutz in %). | | **Batteriemanagement** | Select | Steuerung der Batterie durch (1: Wechselrichter, 2: Manager Enelix). | | **Batterieladezustand**| SelectVariable | Variable mit dem aktuellen Batterieladestand (SoC in %). | | **Netzbezug** | SelectVariable | Variable mit dem zu regelnden Netzbezug (identisch mit Manager). | | **AktuelleBatterieleistung**| SelectVariable| Variable mit der aktuellen Ist-Leistung der Batterie. | --- ## 5. Statusvariablen & Profile | Ident | Typ | Beschreibung | |---|---|---| | **PowerSteps** | String | JSON-Array der dem Manager angebotenen Leistungsschritte. | | **Aktuelle_Leistung** | Integer | Die aktuell von der Batterie erbrachte Leistung. | | **Power** | Integer | Interner | Die aktuell vom Manager zugewiesene Soll-Leistung. | | **Laden_Entladen** | Integer | Herstellerspezifischer Code zum Einstellen des Lademodi (z.B. Goodwe: 11=Laden, 12=Entladen). | | **Idle** | Boolean | Status der Sperrzeit (`true` = bereit für neue Werte, `false` = gesperrt). | | **Hysterese** | Boolean | Zeigt an, ob die Batterie aktuell in Hystere nachregelt. | | **Bezogene_Energie** | Float | Rechnerisch aufsummierte Energie (Leistung × Zeit). | | **PV_Prio** | Integer | Priorität des Verbrauchers für PV-Optimierung, Tiefe Nummer = Hohe Priorität | | **Sperre_Prio** | Integer | Priorität des Verbrauchers für Peak-Optimierung, Tiefe Nummer = Hohe Priorität | | **Bezogene_Energie** | Float | Rechnerisch aufsummierte Energie (Leistung × Zeit). | | **Is_Peak_Shaving** | Boolean | Vom Manager übermittelter aktueller Betriebsmodus. | | **Goodwe_EntLadeleistung** | Interner | Zusatzvariable für Steuerung der Sollleistung bei Goodwespeichern | | **Ladeleistung** | Interner | Sollladelesistung Speicher | | **Entladeleistung** | Interner | Sollentladeleistung Speicher | *(Die Variabeln `Goodwe_EntLadeleistung`, `Ladeleistung` oder `Entladeleistung` werden in abhängigkeit von `Batterietyp` angelegt).* --- ## 6. WebFront / Bedienung Die Anbindung der Batterie sowie die regelung der Prioritäten wird über folgende Variabeln eingestellt: `Laden_Entladen`- Signalisation ob Speicher laden soll oder entladen (Herstellerunabhängig 0 = Laden, 1 = Entladen, ansonsten Herstellerabhängige Werte) `Ladeleistung` - Soll Ladeleistung Speicher `Entladeleistung` - Soll Entladeleistung Speicher `Goodwe_EntLadeleistung`- Zusatzvariable Entladeleistung für Goodwe-Speicher `PV_Prio` - Priorität des Verbrauchers für PV-Optimierung, Tiefe Nummer = Hohe Priorität `Sperre_Prio` - Priorität des Verbrauchers für Peak-Optimierung, Tiefe Nummer = Hohe Priorität ## 7. Mapping auf Code-Komponenten | Komponente | Funktion im Code (`module.php`) | |---|---| | **Timer-Registrierung** | `ApplyChanges()` setzt `Timer_Do_UserCalc_Battery` basierend auf `Interval`. Erstellt die passenden Variabeln auf basis des Batterietyps | | **PowerSteps Generierung**| `GeneratePowerSteps()` baut das Raster aus zulässigen Werten basierend auf MaxLaden/Entladen in 250er/50er Schritten auf. | | **Betriebslogik & Limits**| `GetCurrentData($Peak)` filtert die `PowerSteps` je nach SoC, Hysterese und Peak-Modus. | | **Leistungszuteilung** | `SetAktuelle_Leistung($power)` übersetzt die vom Manager geforderte Leistung in herstellerspezifische Variablen und Steuercodes. | --- ## 8. Zukünftige Erweiterungen - **Wetter- und Prognosedaten:** Dynamische Anpassung des Parameters `AufdasNachladen` basierend auf dem zu erwartenden Solarertrag, Anpassung des Parameters auf Monate umd Peak auf Monatsende zu optimieren.