# Enelix-Verbrauchermodul Heizung x-stufig Dieses Modul integriert mehrstufige Heizungen als steuerbare Verbraucher in das Belevo Energiemanagement-System (Enelix). Es berechnet dynamisch verfügbare Leistungsstufen, kommuniziert mit dem übergeordneten Manager und schaltet die hinterlegten Heizstufen anhand von Temperatur, PV-Überschuss und Peak-Shaving-Anforderungen. --- ## 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. * **Mehrstufige Heizungssteuerung:** Beliebig viele Leistungsstufen können mit Leistung und zugehörigem Schaltkontakt definiert werden. * **PowerSteps-Generierung:** Das Modul meldet dem Enelix-Manager ein Array an möglichen Leistungsschritten (`PowerSteps`), basierend auf Temperatur, Betriebsmodus und den konfigurierten Heizstufen. * **Peak-Shaving vs. PV-Überschuss:** Automatische Anpassung der angebotenen `PowerSteps` basierend auf dem vom Manager vorgegebenen Modus (`Is_Peak_Shaving`). Im Peak-Shaving-Modus wird nur die Mindesttemperatur sichergestellt, im PV-Modus wird zusätzlicher Überschuss zur Wärmeerzeugung genutzt. * **Temperaturüberwachung:** Berücksichtigung von Mindesttemperatur (`Mindesttemperatur`), Maximaltemperatur (`Maximaltemperatur`) und Hysterese zur Vermeidung unnötiger Schaltvorgänge. * **Temperaturglättung:** Optional kann die gemessene Temperatur über eine PT1-Filterung geglättet werden um Temperatursprünge und Messrauschen zu reduzieren. * **Idle-Schutz:** Nach einer Leistungsänderung kann eine konfigurierbare Sperrzeit (`IdleCounterMax`) berücksichtigt werden bevor weitere Leistungsänderungen erfolgen. --- ## 2. Voraussetzungen * IP-Symcon **≥ 8.0** * Modul-URL: `https://git.belevo.ch/dh/enelix.git` * Vorhandener und eingerichteter Enelix Manager. * Temperaturfühler als Variable in IP-Symcon. * Schaltbare Kontakte mit aktivierter Aktion für die einzelnen Heizstufen. --- ## 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: **Heizung x-stufig** ### 4.2 Properties | Name | Typ | Beschreibung | | ------------------------------ | -------------- | ---------------------------------------------------------------- | | **Heizungstemperatur_glätten** | Select | Aktiviert die PT1-Glättung der gemessenen Temperatur. | | **ZeitKonstante** | NumberSpinner | Zeitkonstante des PT1-Filters in Sekunden. | | **Interval** | NumberSpinner | Berechnungsintervall in Sekunden. | | **IdleCounterMax** | NumberSpinner | Anzahl der Intervall-Zyklen zwischen zwei Leistungsänderungen. | | **Hysterese** | NumberSpinner | Temperatur-Hysterese in °C. | | **LeistungsStufen** | List | Liste der verfügbaren Heizstufen mit Leistung und Schaltkontakt. | | **Heizungsfuehler** | SelectVariable | Variable mit der aktuellen Temperatur. | --- ## 5. Statusvariablen & Profile | Ident | Typ | Beschreibung | | ---------------------- | ------- | ------------------------------------------------------------------------------ | | **PowerSteps** | String | JSON-Array der dem Manager angebotenen Leistungsschritte. | | **Aktuelle_Leistung** | Integer | Die aktuell geschaltete Heizleistung. | | **Power** | Integer | Die aktuell vom Manager zugewiesene Soll-Leistung. | | **Idle** | Boolean | Status der Sperrzeit (`true` = bereit für neue Werte, `false` = gesperrt). | | **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 | | **Is_Peak_Shaving** | Boolean | Vom Manager übermittelter aktueller Betriebsmodus. | | **Heizungstemperatur** | Float | Aktuelle Heiztemperatur (roh oder geglättet). | | **Mindesttemperatur** | Integer | Untere Temperaturgrenze. | | **Maximaltemperatur** | Integer | Obere Temperaturgrenze. | | **Disable** | Boolean | Freigabe des Verbrauchers. | | **IdleCounter** | Integer | Interner Zähler für die Sperrzeit. | | **Leistung_Delta** | Integer | Interne Variable für Leistungsdifferenzen. | --- ## 6. WebFront / Bedienung Die Temperaturgrenzen sowie die Prioritäten werden über folgende Variablen eingestellt: `Mindesttemperatur` - Temperatur unter welcher die Heizung zwingend freigegeben wird. `Maximaltemperatur` - Temperatur bis zu welcher PV-Überschüsse zur Wärmeerzeugung genutzt werden dürfen. `Disable` - Freigabe des Verbrauchers. `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. `PowerSteps` - Dem Manager angebotene mögliche Leistungsstufen. `Aktuelle_Leistung` - Tatsächlich geschaltete Leistung. `Heizungstemperatur` - Aktuelle Temperatur des Speichers oder Boilers. --- ## 7. Mapping auf Code-Komponenten | Komponente | Funktion im Code (`module.php`) | | -------------------------- | ----------------------------------------------------------------------------------------------------------- | | **Timer-Registrierung** | `ApplyChanges()` setzt `Timer_Do_UserCalc_Heizung` basierend auf `Interval`. | | **Leistungsstufen laden** | `LadeUndSortiereLeistungen()` liest und sortiert die konfigurierten Leistungsstufen. | | **PowerSteps Generierung** | `GetCurrentData($Peak)` erstellt die verfügbaren Leistungsstufen abhängig von Temperatur und Betriebsmodus. | | **Temperaturglättung** | `GetCurrentData($Peak)` berechnet optional die PT1-gefilterte Temperatur. | | **Aktive Stufenerkennung** | `IstEineStufeAktiv()` prüft ob aktuell mindestens eine Heizstufe aktiv ist. | | **Leistungszuteilung** | `SetAktuelle_Leistung($power)` schaltet den zugehörigen Schaltkontakt der angeforderten Leistung. | | **Kontaktzuordnung** | `GetKontaktIDZuLeistung($leistung)` ermittelt den passenden Schaltkontakt einer Leistungsstufe. | | **Idle-Logik** | `ProcessIdleCounter()` verwaltet die Sperrzeit zwischen Leistungsänderungen. | --- ## 8. Zukünftige Erweiterungen