Files
Enelix/Verbraucher_1_Stufig/README.md
T

111 lines
5.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 1-Stufig
Dieses Modul integriert einfache, nicht-modulierende Verbraucher (Ein/Aus) wie klassische Heizstäbe, Wärmepumpen oder einfache Boiler in das Belevo Energiemanagement-System (Enelix). Es schaltet den Verbraucher basierend auf PV-Überschuss, Peak-Shaving-Vorgaben und einer garantierten Mindestlaufzeit während der Nachtstunden.
---
## Inhaltsverzeichnis
1. [Funktionsumfang](#1-funktionsumfang)
2. [Voraussetzungen](#2-voraussetzungen)
3. [Installation](#3-installation)
4. [Instanz anlegen & Konfiguration](#4-instanz-anlegen--konfiguration)
5. [Statusvariablen](#5-statusvariablen)
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-Stufige Steuerung:** Bietet dem Enelix-Manager exakt zwei Zustände an: `0` (Aus) oder die definierte `Leistung` (Ein).
- **Direkte Aktor-Steuerung:** Schaltet eine hinterlegte IP-Symcon Variable (`Schaltkontakt1`) direkt auf `true` oder `false`.
- **Nacht-Mindestlaufzeit:** Sichert ab, dass der Verbraucher nachts (22:00 bis 07:00 Uhr) eine definierte Mindestlaufzeit (`Mindesttlaufzeit`) erreicht. Wird diese nicht über PV-Überschuss am Tag erreicht, erzwingt das Modul die Einschaltung (Netzbezug).
- **Taktschutz (Verzögerungslogik):** Die Einstellung `Zeit_Zwischen_Zustandswechseln` blockiert für x Minuten nach einem Schaltvorgang weitere Leistungsänderungen, um das Relais oder den angeschlossenen Verbraucher vor schnellem Takten zu schützen.
- **Manager-Sperrlogik (Idle):** Ein Zähler (`IdleCounterMax`) verzögert die Rückmeldung an den Manager, bis der Verbraucher seinen Status stabil gewechselt hat.
---
## 2. Voraussetzungen
- IP-Symcon **≥ 8.0**
- Modul-URL: `https://git.belevo.ch/dh/enelix.git`
- Vorhandener und eingerichteter Enelix Manager.
- Physischer Schaltaktor (z.B. Shelly, KNX Schaltaktor) zur Steuerung des Verbrauchers.
---
## 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: **Verbraucher 1-Stufig**
### 4.2 Properties
| Name | Typ | Beschreibung |
|---|---|---|
| **BoilerLeistung** | NumberSpinner | Leistungsaufnahme des Verbrauchers unter Volllast in Watt (z.B. 6000). |
| **Mindesttlaufzeit** | NumberSpinner | Garantierte Mindestlaufzeit in Stunden, die nachts erreicht werden muss. |
| **Zeit_Zwischen_Zustandswechseln**| NumberSpinner | Taktschutz: Sperrzeit in Minuten zwischen zwei Schaltvorgängen. |
| **Schaltkontakt1** | SelectVariable | Objekt-ID der Variable, die den physischen Aktor schaltet (Boolean). |
| **Interval** | NumberSpinner | Berechnungsintervall in Sekunden (Standard: 5). |
| **IdleCounterMax** | NumberSpinner | Anzahl Intervall-Zyklen zwischen zwei Schaltvorgängen für die Manager-Freigabe. |
---
## 5. Statusvariablen
| Ident | Typ | Beschreibung |
|---|---|---|
| **IstNacht** | Boolean | Zeigt an, ob aktuell der Nacht-Modus (22:00 - 07:00) aktiv ist. |
| **DailyOnTime** | Integer | Zähler für die Laufzeit im aktuellen Zyklus (wird zu Beginn der Nacht genullt). |
| **IsTimerActive** | Boolean | Status des Taktschutzes (`true` = Statuswechsel aktuell blockiert). |
| **Aktuelle_Leistung** | Integer | Die aktuell vom Manager zugewiesene Soll-Leistung (0 oder `BoilerLeistung`). |
| **PowerSteps** | String | JSON-Array der dem Manager angebotenen Schritte (z.B. `[0, 6000]`). |
| **Idle** | Boolean | Status der Manager-Sperrzeit (`true` = bereit für neue Werte, `false` = gesperrt). |
| **Sperre_Prio** | Integer | Priorität für die Leistungszuteilung im Peak-Shaving-Modus. |
| **PV_Prio** | Integer | Priorität für die Leistungszuteilung im Solarlade-Modus. |
| **Bezogene_Energie** | Float | Rechnerisch aufsummierte Energie (Leistung × Zeit). |
| **Is_Peak_Shaving** | Boolean | Vom Manager übermittelter aktueller Betriebsmodus. |
---
## 6. WebFront / Bedienung
Im WebFront dient das Modul hauptsächlich der Visualisierung und der Prioritäten-Steuerung:
- Überwachung, ob der Nacht-Modus (`IstNacht`) aktiv ist und wie lange der Verbraucher bereits lief (`DailyOnTime`).
- Kontrolle der aktuell zugewiesenen Leistung (`Aktuelle_Leistung`) und des Taktschutzes (`IsTimerActive`).
- Anpassung der Steuerungsprioritäten (`PV_Prio`, `Sperre_Prio`).
---
## 7. Mapping auf Code-Komponenten
| Komponente | Funktion im Code (`module.php`) |
|---|---|
| **Timer-Registrierung** | `ApplyChanges()` setzt den Haupt-Berechnungstimer `Timer_Do_UserCalc_Verb`. |
| **Nacht-Erkennung** | `ist_nachts()` prüft hardcodiert die Zeitspanne 22:00 bis 07:00 Uhr. |
| **Laufzeit-Überwachung**| `GetCurrentData()` nullt `DailyOnTime` beim Wechsel von Tag zu Nacht. Die Laufzeit wird in `SetAktuelle_Leistung()` pro Intervall hochgezählt. |
| **Betriebslogik** | `GetCurrentData($Peak)` baut die `PowerSteps`. Ist es Nacht und die Mindestlaufzeit nicht erreicht, wird `[BoilerLeistung]` erzwungen. Am Tag oder nach Erreichen der Zeit wird `[0, BoilerLeistung]` für Überschussladen angeboten. |
| **Taktschutz** | `SetTimerOn()` und `ResetPowerSteps()` blockieren die Modifikation der `PowerSteps` für die Dauer von `Zeit_Zwischen_Zustandswechseln`. |
| **Aktorsteuerung** | `SetAktuelle_Leistung($power)` vergleicht die geforderte Leistung mit `BoilerLeistung` und setzt die Variable in `Schaltkontakt1` entsprechend auf `true` oder `false`. |
---
## 8. Zukünftige Erweiterungen
- **Dynamische Nachtzeiten/Stromtarife:** Konfigurierbare Start- und Endzeiten für den Nacht- bzw. Niedertarifzeitraum über die Modul-Properties (statt hardcodiert 22:00 bis 07:00 Uhr).
- **Externer Hardware-Status:** Rücklesefunktion des Aktors, um manuelle Schaltungen am Relais in der `DailyOnTime` und Energieberechnung zu berücksichtigen.