Files
Enelix-EMS/docs/module/Wassererwaermer/README.md
T
2026-09-16 05:18:01 +00:00

99 lines
4.4 KiB
Markdown

# Verbraucher Warmwassererwaermer
> Status: implementiert fuer IP-Symcon 8 und den Enelix-2-Vertrag `3.0`.
Das Modul adaptiert ausschliesslich das fruehere Modul `Boiler_x_Stufig`.
Mehrere elektrische Leistungsstufen werden exklusiv geschaltet. Der Manager
waehlt eine der aktuell angebotenen Leistungen; Mindesttemperatur, Zeitplan und
Legionellenprogramm koennen die lokale Warmwassersicherheit priorisieren.
## Sicherheit und Regelung
- Die Schaltkontakte werden mit Break-before-make geschaltet: zuerst alle aus,
danach hoechstens eine Stufe ein.
- Fehlende, veraltete oder nicht numerische Temperaturwerte schalten die
EMS-Verfuegbarkeit aus und fuehren zu einer Stoerung.
- Manager-Vorgaben werden nur angenommen, wenn sie im zuletzt gemeldeten
`Leistungswerte_W`-Angebot enthalten sind.
- Nach `VorgabeTimeout` wird eine nicht erneuerte Manager-Vorgabe ungueltig.
- Mindesttemperatur, vorausberechneter Zeitplan und Legionellenprogramm koennen
die maximale Stufe lokal erzwingen. Diese Phase wird mit
`AenderungMoeglich=false` gemeldet.
- `BoilertemperaturGlaetten` aktiviert eine PT1-Glaettung mit konfigurierbarer
Zeitkonstante.
## Properties
Zu den sechs gemeinsamen Verbraucher-Properties aus
[`Schnittstelle.md`](../../Schnittstelle.md) kommen 17 Modul-Properties hinzu.
| Ident | Typ | Standard | Beschreibung |
| --- | --- | ---: | --- |
| `LeistungsStufen` | JSON-Liste | `[]` | Stufe, positive Leistung in W und Boolean-Schaltkontakt. |
| `ZeitKonstante` | Integer | `120` | PT1-Zeitkonstante in Sekunden. |
| `Boilerfuehler_PT1` | Integer | `0` | Temperaturvariable. |
| `BoilertemperaturGlaetten` | Boolean | `false` | PT1-Glaettung aktiv. |
| `Boilervolumen` | Integer | `300` | Volumen in Litern fuer die Zeitplanprognose. |
| `Zeitplan` | JSON-Liste | `[]` | Uhrzeit und Solltemperatur. |
| `Interval` | Integer | `5` | Regelintervall in Sekunden. |
| `IdleCounterMax` | Integer | `2` | Zyklen bis zum Idle-Status. |
| `TemperaturMaxAlter` | Integer | `30` | Maximal zulaessiges Messwertalter in Sekunden. |
| `Hysterese` | Float | `5.0` | Temperaturhysterese in K. |
| `LegionellenfunktionAktiv` | Boolean | `true` | Periodische Aufheizung aktiv. |
| `LegionellenIntervallTage` | Integer | `7` | Intervall seit erfolgreichem Abschluss. |
| `LegionellenHaltezeit` | Integer | `0` | Haltezeit auf Zieltemperatur in Sekunden. |
| `LegionellenMaximaldauer` | Integer | `86400` | Abbruchzeit in Sekunden. |
| `NachtstartStunde` | Integer | `22` | Fruehester Programmstart. |
| `NachtendeStunde` | Integer | `7` | Ende des Nachtfensters. |
| `DiagnosevariablenAnzeigen` | Boolean | `false` | Blendet zehn Diagnosevariablen ein. |
`LoggingEin` aktiviert laufende Debug-Ausgaben. Der Formular-Knopf schreibt
unabhaengig davon genau einen aktuellen Statusdatensatz ins Debug-Log.
## Variablen
Standardmaessig sichtbar sind nur die acht Betriebsvariablen `Aktiv`,
`Istleistung`, `Sollleistung`, `Stoerung`, `Stoertext`, `Boilertemperatur`,
`AktiveStufe` und `BezogeneEnergie`.
Mit `EinstellungenInVisu` werden `Mindesttemperatur`, `Maximaltemperatur` und
`Legionellentemperatur` sichtbar und geprueft bedienbar. Die Reihenfolge
`Mindesttemperatur < Maximaltemperatur <= Legionellentemperatur` ist zwingend.
Mit `DiagnosevariablenAnzeigen` werden diese zehn Variablen eingeblendet:
- `Leistungsquelle`
- `SollwertGueltig`
- `Verfuegbar`
- `AenderungMoeglich`
- `TemperaturGueltig`
- `NachladenAktiv`
- `LegionellenbetriebAktiv`
- `LegioCounter`
- `Idle`
- `IdleCounter`
## Managerkommunikation
Das Modul implementiert `VerbraucherSchnittstelle::ManagerdatenEmpfangen()`.
Der Transport erfolgt wie beim Manager ueber `IPS_RequestAction` mit JSON. Der
Verbraucher besitzt keine Manager-ID-Property. Er ermittelt nur Manager, in
deren `VerbraucherZuordnung` seine Instanz aktiv eingetragen ist.
Die Rueckmeldung erfolgt ereignisbasiert und zusaetzlich alle
`Meldeintervall` Sekunden. Eine Rueckmeldung nach empfangener Vorgabe wird kurz
verzoegert, damit keine synchrone Manager-Verbraucher-Endlosschleife entsteht.
## Tests
`WarmwasserReglerTest.php` prueft Leistungsstufen, PT1, Energieberechnung,
Zeitplan und thermische Prognose. `WarmwassererwaermerModulstrukturTest.php`
prueft Metadaten, Formular, 23 Properties, Sichtbarkeit, Schnittstellenvertrag
und Break-before-make-Schaltung.
## Migration
Die Feldzuordnung und die bewusst entfallenen Enelix-1-Kommunikationsvariablen
sind in [`docs/migration/Boiler-x-Stufig.md`](../../migration/Boiler-x-Stufig.md)
dokumentiert.