From 7983833831bd4dc7cc04ee7e310d2969b9f1244a Mon Sep 17 00:00:00 2001 From: "belevo\\mh" Date: Tue, 16 Jun 2026 10:34:40 +0200 Subject: [PATCH] no message --- Ansteuerung_Askoheat/README.md | 163 ++++++++++++++++++++++++--------- 1 file changed, 121 insertions(+), 42 deletions(-) diff --git a/Ansteuerung_Askoheat/README.md b/Ansteuerung_Askoheat/README.md index b059e3a..5d01198 100644 --- a/Ansteuerung_Askoheat/README.md +++ b/Ansteuerung_Askoheat/README.md @@ -1,67 +1,146 @@ -# Manager_1 -Beschreibung des Moduls. +# Enelix-Verbrauchermodul Ansteuerung Askoheat -### Inhaltsverzeichnis +Dieses Modul integriert einen Askoheat-Heizstab als steuerbaren Boiler-Verbraucher in das Belevo Energiemanagement-System (Enelix). Es berechnet dynamisch verfügbare Leistungsstufen, kommuniziert mit dem übergeordneten Manager und steuert die Askoheat-Leistungsvariable anhand von Boilertemperatur, Zeitplan, Legionellenschutz, PV-Überschuss und Peak-Shaving-Anforderungen. + +--- + +## Inhaltsverzeichnis 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) +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 +--- -* +## 1. Funktionsumfang -### 2. Voraussetzungen +* **Zyklische Steuerung:** In konfigurierbaren Intervallen (`Interval`) berechnet das Modul die aktuell verfügbaren Leistungsschritte und aktualisiert den Status. +* **Askoheat-Leistungsansteuerung:** Die vom Manager zugewiesene Leistung wird auf eine Heizstufe von `0` bis `7` umgerechnet und an die konfigurierte Leistungsvariable (`Variable_Leistung`) gesendet. +* **PowerSteps-Generierung:** Das Modul meldet dem Enelix-Manager ein Array an möglichen Leistungsschritten (`PowerSteps`), basierend auf Boilertemperatur, Betriebsmodus und Boilergrenzen. +* **Peak-Shaving vs. PV-Überschuss:** Im Peak-Shaving-Modus werden Leistungsschritte nur zur Sicherstellung der Mindesttemperatur angeboten. Im PV-Modus können zusätzliche Leistungsschritte bis zur Maximaltemperatur angeboten werden. +* **Temperaturüberwachung:** Berücksichtigung von Mindesttemperatur (`Mindesttemperatur`), Maximaltemperatur (`Maximaltemperatur`) und Legionellentemperatur (`Legionellentemperatur`). +* **Temperaturglättung:** Optional kann die gemessene Boilertemperatur über eine PT1-Filterung geglättet werden. +* **Zeitplan:** Über einen Solltemperatur-Zeitplan kann das Modul prüfen, ob die nächste Zieltemperatur mit der verfügbaren Leistung rechtzeitig erreichbar ist. +* **Legionellenschutz:** Wird die Legionellentemperatur längere Zeit nicht erreicht, erhöht das Modul temporär die Temperaturanforderung. +* **Idle-Schutz:** Nach einer Leistungsänderung kann eine konfigurierbare Sperrzeit (`IdleCounterMax`) berücksichtigt werden, bevor weitere Leistungsänderungen erfolgen. -- IP-Symcon ab Version 7.1 +--- -### 3. Software-Installation +## 2. Voraussetzungen -* Über den Module Store das 'Manager_1'-Modul installieren. -* Alternativ über das Module Control folgende URL hinzufügen +* IP-Symcon **>= 8.0** +* Modul-URL: `https://git.belevo.ch/dh/enelix.git` +* Vorhandener und eingerichteter Enelix Manager. +* Askoheat- oder Heizstab-Steuerung mit einer schaltbaren Leistungsstufenvariable. +* Temperaturfühler als Variable in IP-Symcon. +* Aktivierte Aktion auf der Leistungsstufenvariable (`Variable_Leistung`). -### 4. Einrichten der Instanzen in IP-Symcon +--- - 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) +## 3. Installation -__Konfigurationsseite__: +1. In IP-Symcon **Module Control** öffnen. +2. **Hinzufügen -> Git-Repository**. +3. URL eingeben und **Installieren**. +4. IP-Symcon neu starten. -Name | Beschreibung --------- | ------------------ - | - | +--- -### 5. Statusvariablen und Profile +## 4. Instanz anlegen & Konfiguration -Die Statusvariablen/Kategorien werden automatisch angelegt. Das Löschen einzelner kann zu Fehlfunktionen führen. +### 4.1 Instanz anlegen -#### Statusvariablen +* Rechtsklick **Instanzen** -> **Instanz hinzufügen** +* Filter: **Belevo** +* Auswahl: **Ansteuerung_Askoheat** -Name | Typ | Beschreibung ------- | ------- | ------------ - | | - | | +### 4.2 Properties -#### Profile +| Name | Typ | Beschreibung | +| ---------------------------- | -------------- | ----------------------------------------------------------------------- | +| **IdleCounterMax** | NumberSpinner | Anzahl der Intervall-Zyklen zwischen zwei Leistungsänderungen. | +| **Interval** | NumberSpinner | Berechnungsintervall in Sekunden. | +| **BoilerLeistung** | NumberSpinner | Maximale Askoheat-Leistung in Watt. | +| **Variable_Leistung** | SelectVariable | Variable, an welche die Askoheat-Heizstufe `0` bis `7` gesendet wird. | +| **Variable_Temperatur_Ist** | SelectVariable | Variable mit der aktuellen Boilertemperatur. | +| **Boilertemperatur_glätten** | Select | Aktiviert die PT1-Glättung der gemessenen Boilertemperatur. | +| **ZeitKonstante** | NumberSpinner | Zeitkonstante des PT1-Filters in Sekunden. | +| **Boilervolumen** | NumberSpinner | Boilervolumen in Litern für die Berechnung der benötigten Wärmemenge. | +| **Zeitplan** | List | Liste aus Uhrzeit und Solltemperatur für geplante Boiler-Zielwerte. | -Name | Typ ------- | ------- - | - | +--- -### 6. WebFront +## 5. Statusvariablen & Profile -Die Funktionalität, die das Modul im WebFront bietet. +| Ident | Typ | Beschreibung | +| ------------------------ | ------- | ------------------------------------------------------------------------------ | +| **PowerSteps** | String | JSON-Array der dem Manager angebotenen Leistungsschritte. | +| **Aktuelle_Leistung** | Integer | Die aktuell geschaltete Soll-Leistung in Watt. | +| **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 x 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. | +| **Boilertemperatur** | Float | Aktuelle Boilertemperatur, roh oder geglättet. | +| **Mindesttemperatur** | Integer | Untere Temperaturgrenze für den Boiler. | +| **Maximaltemperatur** | Integer | Obere Temperaturgrenze für PV-Überschussnutzung. | +| **Legionellentemperatur**| Integer | Zieltemperatur für den Legionellenschutz. | +| **LegioCounter** | Integer | Interner Zähler für die Legionellenschutzlogik. | +| **IdleCounter** | Integer | Interner Zähler für die Sperrzeit. | +| **Leistung_Delta** | Integer | Interne Variable für Leistungsdifferenzen. | -### 7. PHP-Befehlsreferenz +Es werden keine eigenen Variablenprofile angelegt. -`boolean GEF_BeispielFunktion(integer $InstanzID);` -Erklärung der Funktion. +--- -Beispiel: -`GEF_BeispielFunktion(12345);` \ No newline at end of file +## 6. WebFront / Bedienung + +Die Temperaturgrenzen sowie die Prioritäten werden über folgende Variablen eingestellt: + +`Mindesttemperatur` - Temperatur, unter welcher der Boiler zwingend freigegeben wird. + +`Maximaltemperatur` - Temperatur, bis zu welcher PV-Überschüsse zur Warmwassererzeugung genutzt werden dürfen. + +`Legionellentemperatur` - Zieltemperatur für die Legionellenschutzfunktion. + +`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. + +`Boilertemperatur` - Aktuelle Temperatur des Boilers. + +--- + +## 7. Mapping auf Code-Komponenten + +| Komponente | Funktion im Code (`module.php`) | +| ----------------------------- | ----------------------------------------------------------------------------------------------- | +| **Timer-Registrierung** | `ApplyChanges()` setzt `Timer_Do_UserCalc_Verb` basierend auf `Interval`. | +| **Leistungszuteilung** | `SetAktuelle_Leistung($power)` setzt `Power`, `Aktuelle_Leistung`, `Bezogene_Energie` und Idle. | +| **Askoheat-Stufenumrechnung** | `SetAktuelle_Leistung($power)` rechnet Watt auf eine Heizstufe von `0` bis `7` um. | +| **PowerSteps-Berechnung** | `GetCurrentData($Peak)` erstellt die verfügbaren Leistungsstufen abhängig vom Betriebsmodus. | +| **7-Stufen-Berechnung** | `Calc_Seven_Steps($power)` erzeugt Leistungsschritte von `0` bis zur maximalen Boilerleistung. | +| **Temperaturglättung** | `GetCurrentData($Peak)` berechnet optional die PT1-gefilterte Boilertemperatur. | +| **Zeitplanprüfung** | `getNextTimeAndTemperature()`, `calculateRemainingTime()` und `canBoilerReachTemperature()`. | +| **Wärmemengenberechnung** | `calculateRequiredHeat()` berechnet die benötigte Energie für eine Temperaturdifferenz. | +| **Legionellenschutz** | `GetCurrentData($Peak)` verwaltet `LegioCounter`, `Maximaltemperatur` und `Mindesttemperatur`. | +| **Idle-Logik** | `ProcessIdleCounter()` verwaltet die Sperrzeit zwischen Leistungsänderungen. | +| **Nachtprüfung** | `ist_nachts()` prüft den Zeitraum von 22:00 bis 07:00 Uhr. | + +--- + +## 8. Zukünftige Erweiterungen + +* Konfigurierbare Schwellenwerte für die Legionellenschutz-Zeitlogik. +* Frei wählbare Anzahl an Askoheat-Leistungsstufen. +* Eigene Variablenprofile für Temperatur, Leistung und Prioritäten.