feat(workflow): publish verified forecast controls and consolidated docs
Tests / test (push) Successful in 1m1s

Approved by Daniel Haefliger for develop and beta. Author dh_Agent, authenticated account dh. Preserve published battery, charging and overall Energy Pie changes. No deployment or plant control authorization.
This commit is contained in:
dh
2026-10-08 10:02:58 +00:00
parent af69151165
commit 74a2d6c685
82 changed files with 5054 additions and 617 deletions
+180 -1
View File
@@ -2,14 +2,81 @@
Alle wesentlichen Aenderungen an Enelix EMS werden in dieser Datei dokumentiert.
## Unreleased
## Zusammengefuehrter Entwicklungsstand 2026-10-08
- V4-Zwei-Schalter-Workflow: Prognose lernen und Netzfahrplan regeln getrennt;
vorhandene Freigaben, Datenfrische und lokale Schutzgrenzen bleiben massgeblich.
Keine neue Stellfreigabe und kein Anlagenrollout durch diese Veroeffentlichung.
- Batterietimer-Korrektur d42cfb3, Ladestationskorrektur 5885681 und
PHP-8.0-Kompatibilitaet 86834bb sind in der Quellbasis enthalten.
- Manager: Energy Pie verwendet die bilanzielle Gesamtanlage inklusive SDL
unabhaengig von SDLAktiv. Kein Mischen des SDL-bereinigten Hauszaehlers mit
physischen Netzzaehlern, keine doppelte Addition von SDL-Energie. Benoetigt
zuerst Enelix Utils mit Gesamtbilanz-Unterstuetzung; Quellen, Farben, Archive,
Hauslast fuer Regelung/Prognose und Stellpfade bleiben unveraendert.
Die folgenden datierten Dokumentationsnotizen beschreiben ihren damaligen Stand;
die aktuelle Bedienung steht in docs/prognose-v4-workflow.md. Die vollstaendige
Anlagenabnahme bleibt ein eigener Auftrag.
## Dokumentationsabgleich 2026-10-08
Die Funktionsbasis `5885681` ist auf Testing und Beta veröffentlicht.
Stable enthält weiterhin nur die Grundlage `b6253f9` mit Vertrag 3.0.
Die nachfolgenden Neuerungen gelten nicht für Stable; es wurde kein neuer
Modulrelease und kein Anlagenrollout durch diesen Dokumentationsabgleich erzeugt.
### Ergänzte Neuerungen und Korrekturen
- Stand-Alone-Ladestationen: Ladepausen und Nullwerte nicht als dauerhaftes
Ladeende verriegeln; go-e-Fehler und Pico-Datenfrische prüfen. Phasenprobe
benötigt Managerbudget, 0 W ergibt keine Einphasigkeit. Frische
Dreiphasenmessung korrigiert unsichere Altwerte. `FahrzeugMaximalstrom`
und `Geraetehinweis` mit Zugriff, Einheit und Diagnosebeispielen dokumentiert.
- Forecast und SDL: Vollständige ausgewählte Eingangsprognose als `forecastPoints`;
ausführbare Netz-/Batteriepläne bleiben durch gültige Preise begrenzt.
PV, Last, SDL-Szenario, Netz, Batterie, SOC, Preise und Kosten getrennt anzeigen.
- Vorhandene Energy-Pie-Konfiguration, individuelle Flow-Knoten und Nicht-SDL-
Diagrammreihen erhalten. Bei nicht bestimmbaren Energieanteilen keine Zahlen
erfinden; ältere Utils erfordern ein Update vor der SDL-Anzeige.
- Wärmepumpen-Lizenz-/Bestelloberfläche und Kopfnavigation sind vorbereitet;
deren Auslieferung erfordert den passenden Portal-Backend-Stand.
- Go-e-Regelübergänge stabilisiert. Easee-Initialstatus, Wiederverbindung,
Wartezustände und veraltete Ladeleistung nach Stopp korrigiert.
- Festlasten nach Istleistung bilanzieren; Batterie neutral beginnen und danach
unter Berücksichtigung ihrer Priorität verteilen. Feste Leistungsangebote
zuteilen; veraltete Verbraucher blockieren andere frische Angebote nicht.
- Fahrplanvorgaben zwischen Stützstellen linear interpolieren; Netzfahrplan-
Batteriesollwert und den lokalen Rückfall getrennt behandeln.
- V4: numerische Mappingkennung stabilisiert, historische Publikationslücken
ohne Lockerung der Live-Altersgrenzen behandelt, Klassenkollision im Installer
vermieden, bestätigte Geräteabrufe und Retry verbessert, Empfängerdrossel
bei Neuinitialisierung zurückgesetzt.
- Integrierte V4-Korrekturen prüfen abgewiesene Aktionen, trennen Geräte-I/O vom
Stell-Lock, verwenden den bestätigten Cache und erneuern Pläne ohne
blockierenden HTTP-Abruf im Regeltakt.
### Bekannte offene Grenzen
Am 06.10.2026 wurden erneut blockierte Batterietimer nach Modul-Reload gemeldet;
am 07.10.2026, 20:34 Uhr Europe/Zurich, liefen die periodischen Timer laut
späterer Nachkontrolle. Ursache und Wiederholbarkeit des Reload-Problems sind
nicht geklärt. Die frühere Testfreigabe ist seit dem 07.10. abgelaufen.
Physischer Soll-/Ist-Nachlauf,
mehrere Planerneuerungen, sicherer Stopp und unabhängiger Geräte-Watchdog sind
nicht vollständig abgenommen. V4 bleibt Testbetrieb, keine Dauerfreigabe.
Der Bericht vom 06.10. meldet das Forecast-Backend mit vollständigen
Eingangsprognosen noch nicht als ausgerollt; ein späterer erfolgreicher Rollout
ist hier nicht belegt. Portal-Assets allein beheben das nicht.
Diese Angaben sind datierte Nachweise, keine Live-Prüfung dieser Sitzung.
Die [öffentliche Statusübersicht](docs/public/versionen.md) erläutert Auswirkungen
und sichere Nachkontrolle. Alte Hinweise auf 2-kWh-Gruppen weiter unten gelten
historisch; bei positivem Restbudget ersetzt sie heute die schrittweise
Leistungsverteilung. Negative Defizitregelung bleibt separat unverändert.
## Änderungen vor dem nächsten nummerierten Release
- Ladestation Stand-Alone: Ladepausen und einzelne Nullwerte verriegeln das
Fahrzeug nicht mehr als geladen. Ladeende nur mit aktuellem eindeutigen
Geraetesignal; Pico hat kein solches Voll-Signal. go-e-Fehler, Pico-Status
@@ -79,3 +146,115 @@ Alle wesentlichen Aenderungen an Enelix EMS werden in dieser Datei dokumentiert.
- Diese Version ist fuer kontrollierte Anlagen- und Feldtests bestimmt.
- Vor produktivem Einsatz sind Sicherung und anlagenspezifische Abnahme erforderlich.
- Korrekturen werden vorwaerts ueber `develop` und anschliessend `beta` verteilt.
## Quellnachweise der Funktionen und Korrekturen
Historische Commit-Titel, bei Anlagenbezug neutral zusammengefasst, enthalten
in der oben genannten Testing-/Beta-Quellbasis seit dem Stable-Grundstand. Ein späterer Commit kann früheres
Verhalten ersetzen; für die aktuelle Bedienung gelten die Modul-READMEs.
Die Liste dokumentiert Codeveröffentlichung, nicht Installation oder Feldabnahme.
| Commit | Änderung |
| --- | --- |
| [`5885681`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/5885681) | fix(charging): validate status and budget phase detection |
| [`372b997`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/372b997) | feat(forecast): integrate full forecast charts and complete SDL visualization |
| [`5687596`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/5687596) | feat(portal): prepare heat pump licensing and header navigation |
| [`9fbc52e`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/9fbc52e) | feat(manager): integrate forecast controls and merge V4 development |
| [`5437f3f`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/5437f3f) | fix(verbraucher): clear discarded power setpoints |
| [`ebec355`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/ebec355) | feat(manager): account for SDL power and SOC separately |
| [`58f91e4`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/58f91e4) | feat(manager): distribute equal-priority power stepwise |
| [`ec7182b`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/ec7182b) | fix(charger): stabilize Go-E setpoint control |
| [`37addf4`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/37addf4) | feat(manager): Energievisualisierung und Synchronisierung erweitern |
| [`ce525a1`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/ce525a1) | fix(v4): reset receiver throttle on reinit |
| [`e6aa50b`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/e6aa50b) | fix(v4): retry transient confirmed device reads |
| [`13e49ff`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/13e49ff) | feat(v4): confirm feedback with device reads |
| [`30f7652`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/30f7652) | Korrigiertes Forecast-Anlagenprofil in Betrieb nehmen (neutral zusammengefasst). |
| [`9878197`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/9878197) | feat(control): connect physical feedback to bounded V4 command and fallback paths |
| [`8eb9688`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/8eb9688) | feat(v4): consolidate audited data recovery economic replay and optional archival |
| [`6c91d6b`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/6c91d6b) | fix(accounting): stabilize numeric mapping identity across property storage |
| [`5890093`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/5890093) | fix(history): model sparse publication without relaxing live freshness |
| [`6d9aba7`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/6d9aba7) | fix(installer): avoid staged and installed capture class collision |
| [`fe3f46b`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/fe3f46b) | fix(release): include forecast test dependencies in versioned application |
| [`fc024fc`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/fc024fc) | feat(application): integrate measured-load ingestion training and planner source |
| [`44362e4`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/44362e4) | feat(observation): separate physical load and unfiltered EV-SDL model without dispatch |
| [`76f8b06`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/76f8b06) | feat(data): add passive versioned raw capture independent of control |
| [`e0e52d2`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/e0e52d2) | feat(accounting): separate physical storage and SDL with source-age validation |
| [`9394fe3`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/9394fe3) | feat(manager): add gated short-lease V4 control trial and local fallback |
| [`b5c1fa6`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/b5c1fa6) | feat(manager): receive and preview V4 shadow plans without dispatch |
| [`fc4c463`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/fc4c463) | feat(manager): transmit estimated meter samples and SOC recovery state |
| [`12174a5`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/12174a5) | fix(manager): isolate V4 active import sources from legacy counter |
| [`640fe53`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/640fe53) | feat(manager): add opt-in native V4 shadow operation telemetry |
| [`8d83b08`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/8d83b08) | feat(batterie): Nachladeleistung begrenzen |
| [`3ce9af4`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/3ce9af4) | fix(ladestation): Regeluebergaenge stabilisieren |
| [`38353ae`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/38353ae) | feat(manager): Fahrplanvorgabe linear interpolieren |
| [`cf92e76`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/cf92e76) | fix(manager): Fahrplanvorgabe linear interpolieren |
| [`add1077`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/add1077) | fix(manager): Batterie nach Prioritaet als Restverbraucher regeln |
| [`bfdcf45`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/bfdcf45) | fix(ladestation): Steuerbefehle in Diagnose erhalten |
| [`faa5dfb`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/faa5dfb) | feat(ladestation): Phasenerkennung und Schaltsperren erweitern |
| [`53fca5e`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/53fca5e) | feat(manager): Batteriesollwert aus Netzfahrplan anwenden |
| [`f611da9`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/f611da9) | fix(easee): Ereignisverbindung konsistent neu aufbauen |
| [`3939695`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/3939695) | fix(manager): Regelung und Energiefluss korrigieren |
| [`cae14cf`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/cae14cf) | fix(manager): Festlasten nach Istleistung bilanzieren |
| [`3aaa744`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/3aaa744) | fix(manager): Batterie als neutralen Restregler behandeln |
| [`fdc2007`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/fdc2007) | fix(manager): Energieausgleich aus Enelix 1 wiederherstellen |
| [`3740087`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/3740087) | fix(easee): veraltete Ladeleistung nach Ladestopp nullen |
| [`ace1821`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/ace1821) | fix(ladestation): Fahrzeugstrom nach Lernzeit begrenzen |
| [`b3b868c`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/b3b868c) | fix(ladestation): Ladeanlauf und Easee-Verbindung stabilisieren |
| [`a74f14a`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/a74f14a) | feat(warmwasser): Temperaturgrenzen konfigurierbar machen |
| [`b3bbae1`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/b3bbae1) | fix(manager): Anlagentopologie immer synchronisieren |
| [`995b704`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/995b704) | fix(manager): Prognoseberechtigungen verständlich diagnostizieren |
| [`5ff0d40`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/5ff0d40) | fix(manager): feste Leistungsangebote immer zuteilen |
| [`ccecc43`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/ccecc43) | fix(easee): wartende Ladevorgaenge starten |
| [`156591a`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/156591a) | fix(ladestation): Ladeende nach Update neu prüfen |
| [`e0814a0`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/e0814a0) | fix(ladestation): Ladeende nach Update neu prüfen |
| [`3cabf59`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/3cabf59) | fix(ladestation): Solarpause nicht als Ladeende erkennen |
| [`b86810d`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/b86810d) | fix(ladestation): Solarpause nicht als Ladeende erkennen |
| [`d1fc62d`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/d1fc62d) | fix(manager): Regelung bei veralteten Verbrauchern fortsetzen |
| [`21577c0`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/21577c0) | fix(manager): Prognoseberechtigungen verständlich diagnostizieren |
| [`aefe463`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/aefe463) | fix(easee): Wartezustand ohne Ausgangsphase zulassen |
| [`6f76e6c`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/6f76e6c) | fix(easee): Initialstatus der Ladestation laden |
| [`b111a5c`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/b111a5c) | Ladefreigabe für Ladestationen standardmäßig aktivieren |
| [`ef70856`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/ef70856) | feat: Wärmepumpenlizenz separat freischalten |
| [`cf2ce3a`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/cf2ce3a) | feat(manager): Lizenzierung und Energietopologie verfeinern |
| [`708a8ec`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/708a8ec) | feat(manager): Energieaufzeichnung und Visualisierungen integrieren |
| [`40f41a2`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/40f41a2) | fix(manager): Störungszugang zuverlässig aktivieren |
| [`2d24ce0`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/2d24ce0) | feat(manager): Störungsüberwachung ans Portal anbinden |
| [`f47c908`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/f47c908) | feat(batterie): stufenlose Leistungsbereiche unterstützen |
| [`72d96ae`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/72d96ae) | feat: Einspeisebegrenzung in Demo simulieren |
| [`dcf51bd`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/dcf51bd) | feat: anlagenweite Einspeisebegrenzung und Netzfahrplan |
| [`efa8fe6`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/efa8fe6) | feat: Prognosetelemetrie aus Demoanlage senden |
| [`f250dea`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/f250dea) | feat: Demoanlage an Prognosetopologie anbinden |
| [`1e64813`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/1e64813) | feat: Anlagentopologie mit Prognoseportal synchronisieren |
| [`dbd728d`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/dbd728d) | feat: Anlagentopologie im Manager abbilden |
| [`a67018e`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/a67018e) | fix: Waermepumpe ohne Vorgabe normal betreiben |
| [`0f1e0c9`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/0f1e0c9) | Installations-ID bei Manager-Updates erhalten |
| [`98ee569`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/98ee569) | feat: Demoanlage um Batterie und Tagesprofile erweitern |
| [`2392a9c`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/2392a9c) | feat: Lizenzkontingente im Manager durchsetzen |
| [`7845c66`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/7845c66) | feat: Wärmepumpenmodul integrieren |
| [`d730866`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/d730866) | feat: Batteriemodul ereignisbasiert integrieren |
| [`d03a7fd`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/d03a7fd) | Easee-Gateway und Ladestationsmodul implementieren |
| [`d804ba4`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/d804ba4) | Manager-Lizenzierung dokumentieren |
| [`3c71626`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/3c71626) | Verbrauchermodule und betriebsartabhängige Angebote ergänzen |
| [`7b6d1b2`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/7b6d1b2) | Manager-Lizenzierung integrieren |
| [`cf1ae5e`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/cf1ae5e) | Fix native demo tiles |
| [`3edf724`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/3edf724) | Use explicit demo timer action |
| [`abd8c7e`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/abd8c7e) | Enhance demo visualization and charts |
| [`312b76a`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/312b76a) | Add interactive Enelix demo system |
| [`5c5ef73`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/5c5ef73) | Verbraucher 1-Stufig um Mindestzeiten erweitern |
| [`49fe18c`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/49fe18c) | Wassererwaermer umfassend dokumentieren |
| [`0526854`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/0526854) | Automatische Verbrauchererkennung absichern |
| [`ecbd0a3`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/ecbd0a3) | Doppelte Verbraucher-Modul-ID entfernen |
| [`9598a28`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/9598a28) | Modulstatus und Anleitung vervollstaendigen |
| [`6c2d6dd`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/6c2d6dd) | Lastwechselsperre nur ueber Vertrag melden |
| [`d4828f1`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/d4828f1) | Verbraucher 1-Stufig eventbasiert implementieren |
| [`29cfd8c`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/29cfd8c) | Manager-Diagnose und Verbrauchersuche verbessern |
| [`92e8ec5`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/92e8ec5) | Leistungsangebot nach Lastwechsel sperren |
| [`355e716`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/355e716) | Lastwechsel ereignisbasiert sperren |
| [`1b4a788`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/1b4a788) | Manager-Konfiguration neu strukturieren |
| [`9e6a675`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/9e6a675) | Diagnosevariablen bedarfsgesteuert anlegen |
| [`4514ccb`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/4514ccb) | Wassererwaermer-Konfiguration vereinfachen |
| [`9869d99`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/9869d99) | Modulalias für Wassererwärmer bereinigen |
| [`98fb926`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/98fb926) | Modulhersteller und Anzeigenamen vereinheitlichen |
| [`7a3c436`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/7a3c436) | Verbraucher Warmwassererwaermer implementieren |
| [`0a3ece3`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/0a3ece3) | Enelix-2-Manager implementieren |
| [`578285b`](https://git.belevo.ch/ENELIX/Enelix-EMS/commit/578285b) | Obere Manager-Anschlüsse dokumentieren |