From 18c34b32e73b586b06b2e2bd15aea5eeddb09aab Mon Sep 17 00:00:00 2001 From: dh_Agent Date: Tue, 29 Sep 2026 06:25:26 +0000 Subject: [PATCH] chore(release): erste Beta vorbereiten --- .gitea/workflows/ci.yml | 6 ++++++ CHANGELOG.md | 26 ++++++++++++++++++++++++++ README.md | 10 +++++----- composer.json | 1 + docs/Offene-Punkte.md | 24 ++++++++++-------------- docs/testing/README.md | 22 +++++++++++----------- library.json | 4 ++-- tests/LibraryMetadataTest.php | 3 +++ 8 files changed, 64 insertions(+), 32 deletions(-) create mode 100644 CHANGELOG.md diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 1d53b54..0fa89a7 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -21,6 +21,12 @@ jobs: - name: Abhaengigkeiten installieren run: composer install --no-interaction --no-progress --prefer-dist + - name: Composer-Metadaten pruefen + run: composer validate --strict + + - name: Abhaengigkeiten auf Sicherheitsmeldungen pruefen + run: composer audit --no-interaction + - name: Unit-Tests und Syntaxpruefung ausfuehren run: composer check diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..c6ea0c2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,26 @@ +# Changelog + +Alle wesentlichen Aenderungen an Enelix EMS werden in dieser Datei dokumentiert. + +## 0.1 Build 1 - Erste Beta - 2026-09-29 + +### Enthalten + +- Enelix Manager mit PV- und Peak-Betrieb, Priorisierung und Diagnose. +- Anlagenweite Einspeisebegrenzung, Netzfahrplan und Prognosetopologie. +- Batterie, Warmwassererwaermer, Pufferspeicher und Waermepumpe. +- Verbraucher 1-Stufig sowie Easee Gateway und beide Ladestationsvarianten. +- Lizenzpruefung fuer Manager und einzeln freischaltbare Verbrauchermodule. +- Idempotente Demoanlage fuer Installation und Integrationstests. + +### Beta-Aenderungen + +- Stufenlose Leistungsbereiche fuer Batteriespeicher. +- Ladefreigabe neuer Ladestationsinstanzen standardmaessig aktiviert. +- Vollstaendige PHP-, Struktur- und Symcon-Modultests fuer alle Module. + +### Hinweise + +- 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. diff --git a/README.md b/README.md index 1e0497c..3646ade 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,10 @@ Energiemanagement, Manager und steuerbare Verbraucher fuer IP-Symcon. ## Status -Das Repository befindet sich im Aufbau. Der gemeinsame Nachrichtenvertrag, die -Verbraucherbasis, der Manager, der mehrstufige Warmwassererwaermer, der -Pufferspeicher, die Batterie, der 1-stufige Verbraucher, die Ladestation -Stand-Alone sowie das Easee Gateway mit Ladestation Gateway sind implementiert. Die weiteren -Module sind als Diskussionsentwuerfe dokumentiert. +Version 0.1 Build 1 ist die erste Beta fuer kontrollierte Anlagen- und +Feldtests. Der gemeinsame Nachrichtenvertrag, die Verbraucherbasis, der Manager +und alle unten aufgefuehrten Module sind implementiert. Produktiver Einsatz +setzt eine anlagenspezifische Pruefung, Sicherung und Rueckfallplanung voraus. ## Module @@ -98,6 +97,7 @@ der Uebernahme in einen Freigabebranch erfolgreich sein. ## Dokumentation +- [Changelog](CHANGELOG.md) - [Zentrale Liste offener Teamentscheidungen](docs/Offene-Punkte.md) - [Manager-Verbraucher-Schnittstelle](docs/Schnittstelle.md) - [Batterieschnittstelle](docs/Schnittstelle-Batterie.md) diff --git a/composer.json b/composer.json index 3f16439..a1caf76 100644 --- a/composer.json +++ b/composer.json @@ -2,6 +2,7 @@ "name": "belevo/enelix-ems", "description": "Energiemanagement und steuerbare Verbraucher fuer IP-Symcon", "type": "library", + "license": "proprietary", "require": { "php": ">=8.0" }, diff --git a/docs/Offene-Punkte.md b/docs/Offene-Punkte.md index b85968b..4ab2aa5 100644 --- a/docs/Offene-Punkte.md +++ b/docs/Offene-Punkte.md @@ -49,7 +49,7 @@ Prioritaeten, Fehlerverhalten und ein pruefbares Ergebnis. | OP-001 | Entschieden | Lizenzierung | Betriebsort des Lizenzservers | | OP-002 | Erledigt | Grundeinrichtung | Generator und kostenpflichtige Ersteinrichtung | | OP-003 | Offen | Lizenzportal | VGT-Integration in license.enelix.ch | -| OP-004 | Offen | Lizenzierung | Lizenzmodell des Verbrauchskostenreports | +| OP-004 | Entschieden | Lizenzierung | Lizenzmodell des Verbrauchskostenreports | | OP-005 | Offen | Teststrategie | Standort fuer Feldtests | ## Offene Punkte @@ -66,19 +66,6 @@ Prioritaeten, Fehlerverhalten und ein pruefbares Ergebnis. - **Ziel-Sprint:** Offen - **Ergebnis/Verweis:** Offen -### OP-004: Lizenzmodell des Verbrauchskostenreports - -- **Entscheidungsfrage:** Soll der Verbrauchskostenreport nach dem Lizenzmodell - des Managers oder mit einer einzigen, von der Anzahl angeschlossener Zaehler - unabhaengigen Modullizenz angeboten werden? -- **Kontext:** Fuer den Verbrauchskostenreport muss zwischen dem Lizenzmodell des - Managers und einer zaehlerunabhaengigen Modullizenz entschieden werden. -- **Auswirkung:** Die Entscheidung legt fest, ob die Anzahl angeschlossener - Zaehler den Lizenzumfang des Verbrauchskostenreports beeinflusst. -- **Verantwortlich:** Offen -- **Ziel-Sprint:** Offen -- **Ergebnis/Verweis:** Offen - ### OP-005: Standort fuer Feldtests - **Entscheidungsfrage:** An welchem Standort koennen die Module aus Enelix EMS @@ -114,6 +101,15 @@ Prioritaeten, Fehlerverhalten und ein pruefbares Ergebnis. - **Ergebnis/Verweis:** Umsetzung im Lizenzportal unter `https://license.enelix.ch`. +### OP-004: Lizenzmodell des Verbrauchskostenreports + +- **Entscheidung:** Der Verbrauchskostenreport verwendet eine Grundlizenz sowie + getrennte Kontingente fuer Stromzaehler und Nebenzaehler. Die Anzahl der + konfigurierten Zaehler wird bei der Lizenzpruefung beruecksichtigt. +- **Status:** Entschieden und implementiert +- **Ergebnis/Verweis:** Enelix Utils, Commit `1f945be` und + `Verbrauchskostenreport/module.php`. + ## Vorlage fuer neue Punkte ```markdown diff --git a/docs/testing/README.md b/docs/testing/README.md index 71fe623..7f91d9b 100644 --- a/docs/testing/README.md +++ b/docs/testing/README.md @@ -42,9 +42,9 @@ werden, wenn sie vor dem Lauf nicht existierten. - `single`: genau die als Auswahl übergebenen Module - `affected`: die durch geänderte Pfade ermittelten Module -Verfuegbare Module: `EaseeGateway`, `LadestationGateway`, -`LadestationStandAlone`, `Manager`, `Pufferspeicher`, `VerbraucherEinStufig` -und `Warmwassererwaermer`. +Verfuegbare Module: `Batterie`, `EaseeGateway`, `LadestationGateway`, +`LadestationStandAlone`, `Manager`, `Pufferspeicher`, `VerbraucherEinStufig`, +`Waermepumpe` und `Warmwassererwaermer`. Der Manager-Test enthält Manager ohne Verbraucher, jeden Verbrauchertyp einzeln und alle aktuell implementierten Verbrauchertypen gemeinsam. @@ -85,15 +85,15 @@ Zusätzlich schreibt der Runner die Zusammenfassung in das IP-Symcon-Log. ## CI-Regeln -Bei jedem Push laufen sämtliche PHPUnit-Tests. Auf `develop` werden zusätzlich -die von den geänderten Pfaden betroffenen Symcon-Modultests ausgeführt. Bei -gemeinsamen Framework- oder Vertragsänderungen läuft die vollständige Suite. -Für `beta` ist immer `all` vorgeschrieben. +Bei jedem Push laufen sämtliche PHPUnit-Tests und die PHP-Syntaxprüfung. Die +Symcon-Modultests werden bis zur Verfügbarkeit eines geschützten Runners auf +der isolierten IP-Symcon-8.0-Instanz des Agent-Servers ausgeführt. Vor jeder +Übernahme nach `beta` ist ein erfolgreicher Lauf im Modus `all` verbindlich. +Der erzeugte JSON- und JUnit-Bericht gehört zum Freigabenachweis. -Die Symcon-Jobs benötigen einen geschützten Runner mit dem Label `symcon-8`, -lokalem Zugriff auf eine isolierte IP-Symcon-8.x-Instanz und den installierten -Repository-Stand. Ohne diesen Runner ist die Richtlinie dokumentiert, aber -nicht technisch durchsetzbar. +Eine spätere CI-Automatisierung benötigt einen geschützten Runner mit dem Label +`symcon-8`, lokalem Zugriff auf die isolierte IP-Symcon-Instanz und den exakt +zu prüfenden Repository-Stand. ## Checkliste für neue Module diff --git a/library.json b/library.json index 54e04d1..ffe38d9 100644 --- a/library.json +++ b/library.json @@ -7,6 +7,6 @@ "version": "8.0" }, "version": "0.1", - "build": 0, - "date": 0 + "build": 1, + "date": 1790662541 } diff --git a/tests/LibraryMetadataTest.php b/tests/LibraryMetadataTest.php index 53b5e8b..126b723 100644 --- a/tests/LibraryMetadataTest.php +++ b/tests/LibraryMetadataTest.php @@ -17,6 +17,9 @@ final class LibraryMetadataTest extends TestCase self::assertSame('Enelix EMS', $daten['name']); self::assertSame('Enelix', $daten['author']); self::assertSame('8.0', $daten['compatibility']['version']); + self::assertSame('0.1', $daten['version']); + self::assertSame(1, $daten['build']); + self::assertGreaterThan(0, $daten['date']); self::assertMatchesRegularExpression('/^\{[0-9A-F-]{36}\}$/', $daten['id']); } }