Verbrauchermodule und betriebsartabhängige Angebote ergänzen
Tests / test (push) Successful in 42s

This commit is contained in:
dh
2026-09-21 18:46:17 +00:00
parent 7b6d1b2f07
commit 3c71626b5f
46 changed files with 4513 additions and 311 deletions
+51 -34
View File
@@ -1,46 +1,63 @@
# Ladestation Stand-Alone
> Status: Diskussionsentwurf. Eigenständiges Verbrauchermodul mit direkter
> Geräteanbindung; keine Beziehung zur Ladestation Gateway.
> Status: Implementiert. Eigenstaendiges Verbrauchermodul mit direkter
> Geraeteanbindung; keine Beziehung zur Ladestation Gateway.
## Zusätzliche Variablen
## Unterstuetzte Geraete
| Geraetetyp | Status | Steuerung |
| --- | --- | --- |
| go-e Charger, alte API | `GET /mqtt?payload=` | `alw` und `amp` |
| go-e Charger Gemini / Gemini flex | `GET /api/status` | `frc` und `amp` |
| smart-me Pico | Pico-Charging-API | Load-Management-Current-API mit Basic Auth |
Die Routen, Leistungsfaktoren und Erkennung wurden gezielt aus Enelix 1
uebernommen. Zugangsdaten werden weder als Variable noch im Diagnoseprotokoll
ausgegeben.
## Verhalten
- `FahrzeugVerbunden` entspricht bei go-e `car != 1` und bei Pico `State != 1`.
- Die Phasenerkennung verwendet wie Enelix 1 die gemessene Ladeleistung:
ueber 7500 W sind dreiphasig, sonst einphasig.
- Ein bereits verbundenes Fahrzeug gilt bei einem ermittelten Maximalstrom
unter 6 A als geladen.
- PV mit Solarladen bietet `0 W` und alle Ladestufen von 6 A bis zum
konfigurierten Maximum an.
- PV ohne Solarladen bietet ausschliesslich die Maximalleistung an.
- Peak mit Solarladen bietet nur `[0]` an und stoppt die Ladestation.
- Peak ohne Solarladen bietet `[0, ...Ladestufen]` an, damit der Manager die
Ladeleistung wie in Enelix 1 stufenweise reduzieren kann.
- Ohne gueltige Manager-Vorgabe wird bei Solarladen mit 0 A und ohne
Solarladen mit maximaler Leistung gefahren.
## Variablen
| Ident | Typ / Zugriff | Beschreibung |
| --- | --- | --- |
| `FahrzeugVerbunden` | Boolean / Anzeige | Nur bei gültigem Gerätestatus aussagekräftig. |
| `Fahrzeugstatus` | Integer / Anzeige | `0` unbekannt, `1` nicht verbunden, `2` bereit, `3` lädt, `4` voll, `5` Fehler. |
| `Ladestrom` | Float / Anzeige | Aktueller Ladestrom in A. |
| `FahrzeugVerbunden` | Boolean / Anzeige | Geraet meldet ein verbundenes Fahrzeug. |
| `FahrzeugGeladen` | Boolean / Anzeige | Enelix-1-Erkennung unter 6 A. |
| `Fahrzeugstatus` | Integer / Anzeige | `0` unbekannt, `1` getrennt, `2` bereit, `3` laedt, `4` geladen. |
| `Ladestrom` | Float / Anzeige | Aus der gemessenen Leistung ermittelter Strom in A. |
| `Phasenzahl` | Integer / Anzeige | `0` unbekannt, `1` einphasig, `3` dreiphasig. |
| `Ladefreigabe` | Boolean / lokal bedienbar | Lokale Ladeerlaubnis zusätzlich zu `Aktiv`. |
| `Solarladen` | Boolean / lokal bedienbar | Überschussorientiertes Laden ein/aus. |
| `Ladefreigabe` | Boolean / bedienbar | Nur bei `EinstellungenInVisu`; lokale Ladeerlaubnis. |
| `Solarladen` | Boolean / bedienbar | Nur bei `EinstellungenInVisu`; variable Ladestufen ein/aus. |
## Zusätzliche Properties
## Properties
| Ident | Typ | Standard / Beschreibung |
| --- | --- | --- |
| `Ladefreigabe` | Boolean | `false`. |
| `Solarladen` | Boolean | `true`. |
| `MaximalerLadestrom` | Float | `0*` A; Installations- und Gerätegrenze. |
| `Ladestromschritt` | Float | `1` A; muss vom Gerät unterstützt sein. |
| `MindestEinzeit` | Integer | `0` s. |
| `MindestAuszeit` | Integer | `0` s. |
| `Geraetetyp` | Auswahl | `Unkonfiguriert`, `GoEAlt`, `GoEGemini` oder `SmartMePico`. |
| `Geraeteadresse` | String | leer; nur für lokale Adapter. |
| `GeraeteID` | String | leer; nur falls der Adapter eine ID benötigt. |
| `Seriennummer` | String | leer; nur falls benötigt. |
| `Benutzername` | String | leer; nur falls Anmeldung benötigt. |
| `Passwort` | String | leer; vertraulich und nie als Variable/Diagnose anzeigen. |
Neben den gemeinsamen Verbraucher-Properties werden Geraetetyp, Adresse,
Pico-ID, Seriennummer, Zugangsdaten, maximaler Ladestrom, Abfrageintervall
sowie die Startwerte fuer Ladefreigabe und Solarladen konfiguriert.
Minimaler Ladestrom, frühere Umschaltabstände, Benutzervariable und externe
Sollwert-Variable entfallen. Ladefreigabe und Solarladen erscheinen nur bei
aktivem `EinstellungenInVisu` als bedienbare Variablen.
Die gemeinsamen Verbraucher- und Diagnosevariablen entsprechen der
EMS-Schnittstelle Version 4.0. `LoggingEin` steuert ausschliesslich das
laufende Debug-Protokoll.
## Zustand
## Tests
`Fahrzeugstatus`, `FahrzeugVerbunden`, `Ladefreigabe`, `Solarladen` und
`Ladestrom_A` sowie `Ladefehler` und gerätespezifische Fehler.
## Offene Punkte
- Direkte Adapter und ihre noch gültigen API-Routen bei der Implementierung prüfen.
- Lokalen Mindestladebedarf bei deaktiviertem Solarladen genau festlegen.
Die Adaptertests verwenden einen injizierten Fake-HTTP-Transport. Dadurch
werden fuer alle drei Geraetevarianten Statusantworten, URL, HTTP-Methode,
Authentisierung und Steueraufrufe geprueft, ohne ein reales Geraet anzusprechen.
Der Symcon-Funktionstest nutzt den internen, nicht im Konfigurationsformular
sichtbaren `Testmodus` und prueft zusaetzlich Fahrzeug-/Phasenerkennung,
die vier PV-/Peak-Angebote sowie die Umschaltung ueber den `Solarladen`-Button.
+130 -40
View File
@@ -1,54 +1,144 @@
# Pufferspeicher
# Verbraucher Pufferspeicher
> Status: Diskussionsentwurf.
> Status: implementiert fuer IP-Symcon 8.0+ und den Enelix-2-Vertrag `4.0`.
Regelt elektrische Heizstufen nach Pufferbedarf. Die Heizkurve verwendet einen
Fusspunkt bei 20 °C Aussentemperatur und eine Steigung:
Das Modul bindet elektrische Heizstufen eines Pufferspeichers an den
Enelix-Manager an. Die Freigabe wird aus Puffer- und Aussentemperatur,
Heizkurve, Hysterese, lokaler Aktivierung und aktueller Betriebsart berechnet.
`Solltemperatur = FusspunktVorlauftemperatur + HeizkurvenSteigung × (20 - Aussentemperatur)`
Es ist eine gezielte Adaption des Enelix-1-Moduls `Puffer_Speicher`.
Leistungsstufen, Temperaturquellen, optionale PT1-Glaettung und Heizkurve
wurden uebernommen und ueberarbeitet. Zyklische Altlogik, alte
Kommunikationsvariablen, `Idle` und `PowerSteps` als Symcon-Variable wurden
verworfen.
Anschliessend wird auf Mindest- und Maximaltemperatur begrenzt.
| Technisches Merkmal | Wert |
| --- | --- |
| Modulname | `VerbraucherPufferspeicher` |
| Alias | `Pufferspeicher` |
| Modul-ID | `{C92D5EEF-9632-47A5-9659-4B02BF40FBE9}` |
| Enelix-Vertrag | `4.0` |
## Zusätzliche Variablen
## Regelverhalten
| Ident | Typ / Zugriff | Beschreibung |
Die Solltemperatur wird berechnet als:
`FusspunktVorlauftemperatur + HeizkurvenSteigung * (20 - Aussentemperatur)`
Anschliessend wird sie auf `HeizkurveMinimaltemperatur` und
`HeizkurveMaximaltemperatur` begrenzt.
Die Einschaltschwelle wird je nach `MindesttemperaturModus` bestimmt:
- `Aus`: Solltemperatur minus Hysterese,
- `Statisch`: konfigurierte absolute Mindesttemperatur,
- `Differenz`: Solltemperatur minus konfigurierte Differenz.
Es gilt:
- im PV-Betrieb unter der Einschaltschwelle: `[0, ...Leistungsstufen]`,
- im PV-Betrieb an oder oberhalb der Einschaltschwelle: `[0]`,
- im Peakbetrieb unabhaengig von der Temperatur: `[0]`,
- bei `Aktiv=false`: immer `[0]`,
- bei ungueltigen Temperaturen: `[0]` und nicht verfuegbar.
Der Pufferspeicher ist im Peakbetrieb damit pauschal gesperrt. Beim Wechsel in
Peak wird eine aktive Stufe sicher ausgeschaltet.
## Properties
Die Properties erscheinen im Formular in dieser Reihenfolge.
### Manager und Zeitverhalten
| Ident | Standard | Beschreibung |
| --- | ---: | --- |
| `PrioritaetPV` | `0` | Prioritaet im PV-Betrieb |
| `PrioritaetPeak` | `0` | Prioritaet im Peakbetrieb |
| `Meldeintervall` | `10 s` | Vollstaendige Rueckmeldung |
| `VorgabeTimeout` | `120 s` | Gueltigkeit einer Vorgabe |
| `LastwechselSperrzeit` | `5 s` | Mindestzeit zwischen Lastwechseln |
### Pufferspeicher
| Ident | Standard | Beschreibung |
| --- | ---: | --- |
| `LeistungsStufen` | `[]` | Stufe, Leistung und Boolean-Schaltkontakt |
| `PufferfuehlerVariableID` | `0` | Integer- oder Floatvariable |
| `AussentemperaturVariableID` | `0` | Integer- oder Floatvariable |
### Heizkurve
| Ident | Standard | Beschreibung |
| --- | ---: | --- |
| `FusspunktVorlauftemperatur` | `35.0 C` | Vorlauf bei 20 C aussen |
| `HeizkurvenSteigung` | `1.0` | Anhebung je Kelvin fallender Aussentemperatur |
| `HeizkurveMinimaltemperatur` | `20.0 C` | Untere Sollwertbegrenzung |
| `HeizkurveMaximaltemperatur` | `80.0 C` | Obere Sollwertbegrenzung |
| `Hysterese` | `5.0 K` | Abstand zur Einschaltschwelle |
| `MindesttemperaturModus` | `Aus` | Aus, statisch oder Differenz |
| `Mindesttemperatur` | `20.0 C` | Wert im statischen Modus |
| `MindesttemperaturDifferenz` | `5.0 K` | Wert im Differenzmodus |
| `WaermepumpenSolltemperaturVariableID` | `0` | Optionale Quelle fuer die WP-Uebernahme |
Der Button **Wert von Waermepumpe uebernehmen** berechnet den Fusspunkt so,
dass die lokale Heizkurve beim aktuellen Aussenwert durch den aktuellen
WP-Sollwert verlaeuft. Es entsteht keine dauerhafte Laufzeitkopplung.
### Erweiterte Einstellungen
| Ident | Standard | Beschreibung |
| --- | ---: | --- |
| `TemperaturMaxAlter` | `120 s` | Maximal zulaessiges Alter beider Messwerte |
| `PuffertemperaturGlaetten` | `false` | Aktiviert PT1-Glaettung |
| `ZeitKonstante` | `120 s` | PT1-Zeitkonstante |
| `EinstellungenInVisu` | `false` | Gemeinsame Verbraucheroption |
| `DiagnosevariablenAnzeigen` | `false` | Diagnosevariablen einblenden |
| `LoggingEin` | `false` | Debug-Protokoll aktivieren |
## Variablen
Immer vorhanden:
| Ident | Typ | Beschreibung |
| --- | --- | --- |
| `Puffertemperatur` | Float / Anzeige | Aktuelle Temperatur in °C. |
| `Aussentemperatur` | Float / Anzeige | Heizkurveneingang in °C. |
| `TemperaturenGueltig` | Boolean / Anzeige | Beide Quellen sind gültig. |
| `Solltemperatur` | Float / Anzeige | Berechneter und begrenzter Sollwert in °C. |
| `Heizbedarf` | Boolean / Anzeige | Bedarf unter Berücksichtigung der Hysterese. |
| `AktiveStufe` | Integer / Anzeige | Stufenkennung; `0` bedeutet aus. |
| `FusspunktVorlauftemperatur` | Float / lokal bedienbar | Wirksamer Parameter in °C. |
| `HeizkurvenSteigung` | Float / lokal bedienbar | Anhebung pro K fallender Aussentemperatur. |
| `Mindesttemperatur` | Float / lokal bedienbar | Untere Begrenzung in °C. |
| `Maximaltemperatur` | Float / lokal bedienbar | Obere Begrenzung in °C. |
| `Hysterese` | Float / lokal bedienbar | Ein unter Soll minus Hysterese, aus bei Soll. |
| `Aktiv` | Boolean / bedienbar | Lokale Ein-/Aus-Freigabe |
| `Puffertemperatur` | Float | Aktueller, gegebenenfalls geglaetteter Wert |
| `Aussentemperatur` | Float | Heizkurveneingang |
| `Solltemperatur` | Float | Berechneter und begrenzter Sollwert |
| `Heizbedarf` | Boolean | Temperatur liegt unter der Einschaltschwelle |
## Zusätzliche Properties
Optional sichtbar sind die gemeinsamen Verbraucher-Diagnosevariablen sowie
`AktiveStufe`, `BezogeneEnergie` und `TemperaturenGueltig`.
| Ident | Typ | Standard / Beschreibung |
| --- | --- | --- |
| `FusspunktVorlauftemperatur` | Float | `0*` °C; Vorlauf bei 20 °C aussen. |
| `HeizkurvenSteigung` | Float | `0*`; mindestens 0. |
| `Mindesttemperatur` | Float | `0*` °C. |
| `Maximaltemperatur` | Float | `0*` °C. |
| `Hysterese` | Float | `1` K; grösser 0. |
| `Leistungsstufen` | String/JSON | `[]`; Stufenkennung, Leistung in W und Ausgangsbelegung. |
| `PuffertemperaturVariableID` | Integer | `0`; Temperaturquelle. |
| `AussentemperaturVariableID` | Integer | `0`; Aussentemperaturquelle. |
| `Mindestlaufzeit` | Integer | `0` s. |
| `Mindeststillstand` | Integer | `0` s. |
## Managerkommunikation
Vier bisherige Heizkurventemperaturen, beide Heizkurvenquellen, Übernahmeaktion,
Zeitplan und Zeitzone entfallen.
Das Modul implementiert `VerbraucherSchnittstelle` und Vertrag `4.0`.
Es uebernimmt zuerst die vom Manager angekuendigte Betriebsart, berechnet das
passende Leistungsangebot und meldet es mit derselben Betriebsart zurueck.
Erst danach wird eine Sollleistung angenommen.
## Zustand
Die Rueckmeldung enthaelt zusaetzlich:
`Puffertemperatur_C` und `Aussentemperatur_C` als Istwerte,
`Solltemperatur_C` als Sollwert, `Heizbedarf` als Status und `Fuehlerfehler` als
Störung.
- `Puffertemperatur_C`,
- `Aussentemperatur_C`,
- `Solltemperatur_C`,
- `Heizbedarf`,
- `AktiveStufe`,
- `Fuehlerfehler` und `Schaltfehler`.
## Offene Punkte
## Sicherheit und Schaltung
- Optionale Einbindung der Wärmepumpe beim Pufferheizen ausarbeiten.
Die Kontakte werden Break-before-make geschaltet: zuerst alle aus, danach
hoechstens eine Stufe ein. Ein Schaltfehler fuehrt zu einem Ausschaltversuch
aller Kontakte und einer Stoerungsmeldung. Hardwareseitige Verriegelungen,
Temperaturbegrenzer und Schutzorgane bleiben erforderlich.
## Tests
- `PufferspeicherReglerTest` prueft Heizkurve, Hysterese, Ein/Aus, Peak und
alle Mindesttemperatur-Modi.
- `PufferspeicherModulstrukturTest` prueft Metadaten, Properties, Formular,
Vertrag und Schaltfolge.
- Der standardisierte Symcon-Test prueft die reale Modulinstanz und ist im
gemeinsamen Manifest sowie in der Manager-Matrix registriert.
+4 -3
View File
@@ -1,7 +1,8 @@
# EMS-Module und Modulentwürfe
> Manager, Warmwassererwaermer und Verbraucher 1-Stufig sind als installierbare
> IP-Symcon-Module umgesetzt. Die weiteren Ordner enthalten Besprechungsgrundlagen.
> Manager, Warmwassererwaermer, Verbraucher 1-Stufig und Ladestation
> Stand-Alone sind als installierbare IP-Symcon-Module umgesetzt. Die weiteren
> Ordner enthalten Besprechungsgrundlagen.
Alle steuerbaren Verbraucher verwenden die gemeinsamen Datenpunkte aus der
[EMS-Schnittstelle](../Schnittstelle.md). In den Modul-READMEs stehen deshalb
@@ -15,7 +16,7 @@ nur zusätzliche Properties, Variablen, Zustände und offene Punkte.
| [Pufferspeicher](Pufferspeicher/README.md) | Heizstufen nach Heizkurve |
| [Verbraucher 1-Stufig](Verbraucher-1-Stufig/README.md) | Ein-/Aus-Verbraucher (implementiert) |
| [Wärmepumpe](Waermepumpe/README.md) | Sperrkontakt oder SG Ready |
| [Ladestation Stand-Alone](Ladestation-Stand-Alone/README.md) | Direkte Geräteanbindung |
| [Ladestation Stand-Alone](Ladestation-Stand-Alone/README.md) | Direkte Geräteanbindung (implementiert) |
| [Ladestation Gateway](Ladestation-Gateway/README.md) | Ladestation am Easee Gateway |
| [Easee Gateway](Easee-Gateway/README.md) | Gemeinsame Easee-Kommunikation |
+20 -11
View File
@@ -1,12 +1,15 @@
# Verbraucher 1-Stufig
> Status: implementiert fuer IP-Symcon 8 und den Enelix-2-Vertrag `3.0`.
> Status: implementiert fuer IP-Symcon 8 und den Enelix-2-Vertrag `4.0`.
Das Modul schaltet einen elektrischen Ein-/Aus-Verbraucher. Im freien Zustand
meldet es dem Manager das Leistungsangebot `[0, Nennleistung]`. Waerend einer
Mindest-Ein- oder Mindest-Aus-Zeit, waehrend einer ausstehenden Rueckmeldung
und bei lokal erzwungener Tagesmindestlaufzeit wird nur der aktuelle
bestaetigte Leistungswert angeboten.
Das Modul schaltet einen elektrischen Ein-/Aus-Verbraucher. Im frei
schaltbaren Zustand meldet es bei PV `[0, Nennleistung]` und bei Peak `[0]`.
Ist die Tagesmindestlaufzeit faellig, wird bei PV die Nennleistung erzwungen.
Bei Peak ist konfigurierbar, ob `[0, Nennleistung]` angeboten oder die
Nennleistung ohne Sperrmoeglichkeit erzwungen wird. Waerend einer
Mindest-Ein- oder Mindest-Aus-Zeit sowie bei einer ausstehenden Rueckmeldung
wird unabhaengig von der Betriebsart nur der aktuelle bestaetigte
Leistungswert angeboten.
## Architekturentscheidung
@@ -27,7 +30,7 @@ Regelberechnung.
## Properties
Zu den sechs gemeinsamen Verbraucher-Properties aus
[`Schnittstelle.md`](../../Schnittstelle.md) kommen acht
[`Schnittstelle.md`](../../Schnittstelle.md) kommen neun
Modul-Properties hinzu.
| Ident | Typ | Standard | Beschreibung |
@@ -37,6 +40,7 @@ Modul-Properties hinzu.
| `SchaltkontaktInvertiert` | Boolean | `false` | Kehrt die Ein-/Aus-Semantik des Aktors um. |
| `RueckmeldungVariableID` | Integer | `0` | Optionale Boolean-Rueckmeldung; `true` bedeutet physisch eingeschaltet. |
| `Mindestlaufzeit` | Integer | `0` | Geforderte Laufzeit pro lokalem Kalendertag in Sekunden, maximal 86400. |
| `PeakSperreBeiMindestlaufzeitAnbieten` | Boolean | `true` | Bietet bei faelliger Tagesmindestlaufzeit im Peakbetrieb zusaetzlich `0` als Sperre an. Bei `false` wird die Nennleistung lokal erzwungen. |
| `Mindesteinschaltdauer` | Integer | `5` | Mindestzeit in Sekunden, die ein bestaetigter Ein-Zustand gehalten wird. |
| `Mindestausschaltdauer` | Integer | `5` | Mindestzeit in Sekunden, die ein bestaetigter Aus-Zustand gehalten wird. |
| `DiagnosevariablenAnzeigen` | Boolean | `false` | Legt gemeinsame und modulspezifische Diagnosevariablen an. |
@@ -126,15 +130,20 @@ beruecksichtigt. Nur der bestaetigte Ein-Zustand zaehlt.
Ist die konfigurierte Tagesmindestlaufzeit noch nicht erreicht, wird der
Verbraucher zum spaetestmoeglichen Zeitpunkt angefordert, an dem die
Restlaufzeit bis Mitternacht noch erfuellt werden kann. Eine noch aktive
Mindestausschaltdauer hat dabei Vorrang; eine unmoegliche Restlaufzeit kann
nicht rueckwirkend nachgeholt werden.
Restlaufzeit bis Mitternacht noch erfuellt werden kann. Im PV-Betrieb wird die
Nennleistung dann lokal erzwungen. Im Peakbetrieb meldet das Modul bei
aktivierter Property `PeakSperreBeiMindestlaufzeitAnbieten` wie Enelix 1
`[0, Nennleistung]`, sodass der Manager zwischen Sperren und Nachholen der
Laufzeit waehlen kann. Ist die Property deaktiviert, wird auch im Peakbetrieb
nur die Nennleistung angeboten und lokal erzwungen. Eine noch aktive
Mindestausschaltdauer hat Vorrang; eine unmoegliche Restlaufzeit kann nicht
rueckwirkend nachgeholt werden.
## Managerkommunikation
Das Modul implementiert
`VerbraucherSchnittstelle::ManagerdatenEmpfangen()` und verwendet
ausschliesslich Vertrag `3.0`. Der Verbraucher besitzt keine
ausschliesslich Vertrag `4.0`. Der Verbraucher besitzt keine
Manager-ID-Property. Er akzeptiert nur Manager, in deren manueller oder
automatischer Verbraucherzuordnung seine Instanz aktiv eingetragen ist.
+32 -31
View File
@@ -1,12 +1,12 @@
# Verbraucher Warmwassererwaermer
> Status: implementiert fuer IP-Symcon 8.0+ und den Enelix-2-Vertrag `3.0`.
> Status: implementiert fuer IP-Symcon 8.0+ und den Enelix-2-Vertrag `4.0`.
Das Modul bindet einen elektrischen Warmwasserspeicher mit einer oder mehreren
exklusiven Leistungsstufen an den Enelix-Manager an. Der Manager kann nur eine
der aktuell angebotenen Leistungen vorgeben. Lokale Schutz- und Komfortregeln
fuer Mindesttemperatur, Maximaltemperatur, Zeitplan und Legionellenfunktion
haben Vorrang vor einer Manager-Vorgabe.
der aktuell angebotenen Leistungen vorgeben. Mindesttemperatur, Hysterese,
Zeitplan und Legionellenfunktion bestimmen dabei zustands- und
betriebsartabhaengig das Leistungsangebot.
Das Modul ist eine gezielte Adaption des Enelix-1-Moduls
`Boiler_x_Stufig`. Zyklische Altlogik und alte Kommunikationsvariablen wurden
@@ -20,7 +20,7 @@ ausschliesslich den Enelix-2-Nachrichtenvertrag.
| Modul-ID | `{B7C54AF4-AD7D-4FE4-B75D-203693906251}` |
| Modultyp | Geraeteinstanz (`3`) |
| Funktionspraefix | `ENELIX` |
| Enelix-Vertrag | `3.0` |
| Enelix-Vertrag | `4.0` |
## Funktionsumfang
@@ -65,22 +65,22 @@ Eine Neuberechnung wird insbesondere ausgeloest durch:
vollstaendige Rueckmeldung sicher. Die Lastwechselsperre verwendet einen
einmaligen Timer und loest nach ihrem Ablauf genau eine Neuberechnung aus.
Die Zielentscheidung folgt dieser Prioritaet:
Die Zielentscheidung folgt der Enelix-1-Zustandsmatrix:
1. Bei deaktivierter Instanz oder ungueltiger Temperatur ist der Verbraucher
nicht verfuegbar und wird ausgeschaltet. Eine ungueltige Konfiguration wird
bereits beim Uebernehmen mit Status `202` abgewiesen.
2. Unterschreitet die Temperatur die wirksame Mindesttemperatur oder reicht die
verbleibende Zeit bis zum naechsten Zeitplanziel rechnerisch nicht aus, wird
die hoechste Leistungsstufe lokal erzwungen.
3. Ab der wirksamen Maximaltemperatur wird ausgeschaltet.
4. Im Bereich unmittelbar unter der Maximaltemperatur wird eine bereits aktive
Stufe bis zum Erreichen der Abschaltgrenze gehalten.
5. In allen anderen Zustaenden darf der Manager zwischen `0 W` und allen
konfigurierten Leistungsstufen waehlen.
2. Unter der wirksamen Mindesttemperatur sowie in der unteren Hysterese bei
aktiver Stufe gilt: PV erzwingt die Maximalleistung, Peak bietet
`[0, ...Leistungsstufen]` an.
3. Ausserhalb dieses Mindesttemperaturbereichs bietet Peak nur `[0]` an.
4. Im PV-Betrieb werden unterhalb von `Maximaltemperatur - Hysterese` alle
Stufen angeboten. In der oberen Hysterese gilt dies nur, solange bereits
eine Stufe aktiv ist.
5. An oder oberhalb der wirksamen Maximaltemperatur wird ausgeschaltet.
Lokale Zwangsvorgaben werden mit `AenderungMoeglich=false` und einem
entsprechend eingeschraenkten `Leistungswerte_W` gemeldet.
Eine erzwungene PV-Maximalleistung wird mit `AenderungMoeglich=false`
gemeldet. Das Peak-Array bleibt dagegen durch den Manager waehlbar.
## Konfiguration
@@ -129,10 +129,11 @@ Stufe konfiguriert werden.
Der jeweils naechste Zeitplaneintrag wird fuer heute oder den folgenden Tag
ermittelt. Reicht die verbleibende Zeit bei maximaler elektrischer Leistung
rechnerisch nicht mehr aus, wird sofort die hoechste Stufe angefordert. Die
Berechnung verwendet Wasser mit `4186 J/(kg K)` und beruecksichtigt keine
Speicher- oder Leitungsverluste. Fuer Datum und Uhrzeit gilt die in IP-Symcon
eingestellte lokale Zeitzone.
rechnerisch nicht mehr aus, wird das Zeitplanziel zur wirksamen
Mindesttemperatur. Im PV-Betrieb wird dann die hoechste Stufe erzwungen, im
Peakbetrieb werden alle Stufen angeboten. Die Berechnung verwendet Wasser mit
`4186 J/(kg K)` und beruecksichtigt keine Speicher- oder Leitungsverluste. Fuer
Datum und Uhrzeit gilt die in IP-Symcon eingestellte lokale Zeitzone.
### Erweiterte sonstige Einstellungen
@@ -179,14 +180,14 @@ nur erlaubt, wenn `EinstellungenInVisu=true` gesetzt ist.
## Hysterese und lokales Nachladen
Sinkt die Temperatur unter die wirksame Mindesttemperatur, beginnt das lokale
Nachladen mit der hoechsten Leistungsstufe. Es endet, sobald mindestens
`Mindesttemperatur + Hysterese` erreicht ist. Oberhalb der wirksamen
Maximaltemperatur wird ausgeschaltet.
Sinkt die Temperatur unter die wirksame Mindesttemperatur, erzwingt PV die
hoechste Leistungsstufe; Peak bietet dagegen Aus und alle Stufen an. In der
unteren Hysterese bis `Mindesttemperatur + Hysterese` bleibt dieses Verhalten
nur erhalten, solange bereits eine Stufe aktiv ist.
Ist bereits eine Stufe aktiv und liegt die Temperatur bei mindestens
`Maximaltemperatur - Hysterese`, wird diese Stufe bis zur Abschaltgrenze
gehalten. Dadurch werden unnoetige Stufenwechsel kurz vor dem Ziel vermieden.
Im PV-Betrieb werden unter `Maximaltemperatur - Hysterese` alle Stufen
angeboten. Innerhalb der oberen Hysterese bleibt das Angebot nur bei einer
bereits aktiven Stufe erhalten. An der Maximaltemperatur wird ausgeschaltet.
## Legionellenfunktion
@@ -196,8 +197,8 @@ Die Legionellenfunktion arbeitet zweistufig:
wirksamen Maximaltemperatur. Der Manager kann die Aufheizung innerhalb des
verbleibenden Zeitfensters ermoeglichen.
2. Ab `LegionellenMaximalintervallTage` wird die Legionellentemperatur auch zur
wirksamen Mindesttemperatur. Die hoechste Stufe wird dadurch lokal
erzwungen, bis das Ziel erreicht ist.
wirksamen Mindesttemperatur. PV erzwingt dadurch die Maximalleistung; Peak
bietet das vollstaendige Stufenarray bis zum Ziel an.
Erreicht die gueltige Speichertemperatur die Legionellentemperatur, wird der
Zeitpunkt als erfolgreicher Abschluss gespeichert und das Intervall beginnt
@@ -268,7 +269,7 @@ Anzeigevariablen.
Das Modul implementiert
`VerbraucherSchnittstelle::ManagerdatenEmpfangen()` und verwendet den
Enelix-2-Vertrag `3.0`. Es besitzt keine Manager-ID-Property. Zugelassen sind
Enelix-2-Vertrag `4.0`. Es besitzt keine Manager-ID-Property. Zugelassen sind
nur Manager, in deren manueller oder automatischer Verbraucherzuordnung die
Instanz aktiv eingetragen ist.
@@ -382,7 +383,7 @@ PT1, Lastwechselsperre, Energieberechnung, thermische Prognose, Zeitplan und
Legionellengrenzen.
`WarmwassererwaermerModulstrukturTest.php` prueft Metadaten, Formular, alle 19
Properties, ereignisbasierte Lastwechselsperre, Vertrag `3.0`, bedarfsgesteuerte
Properties, ereignisbasierte Lastwechselsperre, Vertrag `4.0`, bedarfsgesteuerte
Diagnosevariablen, Legionellentemperatur, Temperatursollwerte und
Break-before-make-Schaltung.