Files
Symcon_Belevo_Energiemanage…/Heizung_x_Stufig/README.md
T
2026-06-10 15:17:27 +02:00

134 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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