diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 1d53b54..9d58c1f 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -21,6 +21,14 @@ 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 + composer audit --working-dir=Verbrauchskostenreport/libs --locked --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..ef892f7 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,26 @@ +# Changelog + +Alle wesentlichen Aenderungen an Enelix Utils werden in dieser Datei dokumentiert. + +## 0.1 Build 1 - Erste Beta - 2026-09-29 + +### Enthalten + +- Verbrauchskostenreport mit PDF-Ausgabe und Schweizer QR-Zahlteil nach SIX 2.3. +- Verbrauchskostenreport mit Grundlizenz sowie Strom- und Nebenzaehlerkontingenten. +- Virtuelle Batterie und VGT-Schnittstelle. +- CC100 Hardware und generisches Shelly Modul. +- Energiediagramm fuer die IP-Symcon-Kachelvisualisierung. + +### Beta-Aenderungen + +- Dezimale IP-Symcon-Farbwerte werden im Energiediagramm korrekt verarbeitet. +- Kachelabstand fuer den Symcon-Kopf und versionsabhaengiger Vollbildmodus. +- Vollstaendige PHP-, Struktur- und Symcon-Modultests fuer alle Module. +- Composer-Metadaten- und Abhaengigkeitspruefung in der CI. + +### 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 719b7b5..2befc9a 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,11 @@ Unabhaengige Zusatzmodule fuer IP-Symcon. Dieses Repository ist nicht vom Enelix ## Status -Das Repository befindet sich im Aufbau. Verbrauchskostenreport, Virtuelle -Batterie, CC100 Hardware, Energiediagramm, VGT-Schnittstelle und Shelly Modul -sind als installierbare IP-Symcon-Module enthalten. +Version 0.1 Build 1 ist die erste Beta fuer kontrollierte Anlagen- und +Feldtests. Verbrauchskostenreport, Virtuelle Batterie, CC100 Hardware, +Energiediagramm, VGT-Schnittstelle und Shelly Modul sind als installierbare +IP-Symcon-Module enthalten. Produktiver Einsatz setzt eine anlagenspezifische +Pruefung und Sicherung voraus. ## Module @@ -23,6 +25,10 @@ Punkten stehen in der [Modulübersicht](docs/module/README.md). Prognose, Lizenzierung und Störüberwachung sind keine Module dieses Repositories. Die Utils-Module bleiben auch untereinander unabhängig. +## Release-Hinweise + +Die Aenderungen der ersten Beta stehen im [Changelog](CHANGELOG.md). + ## Voraussetzungen - IP-Symcon ab Version 8.0 diff --git a/Verbrauchskostenreport/README.md b/Verbrauchskostenreport/README.md index a763d02..60a2ca7 100644 --- a/Verbrauchskostenreport/README.md +++ b/Verbrauchskostenreport/README.md @@ -19,6 +19,13 @@ Abmelden des WebHooks beim Löschen einer Instanz. - erzeugt optional einen Schweizer QR-Zahlteil - unterstützt den konfigurierbaren MWST-Ausweis +## Lizenzierung + +Der Report benoetigt eine Grundlizenz. Zusaetzlich prueft das Modul getrennte +Kontingente fuer konfigurierte Stromzaehler und Nebenzaehler. Lizenzcodes werden +zur Laufzeit gegen `https://license.enelix.ch` geprueft; Zugangsdaten oder +Lizenzcodes werden nicht im Repository gespeichert. + ## QR-Zahlteil Der QR-Zahlteil verwendet strukturierte Adressen (`S`) nach SIX SPS 2.3. @@ -30,6 +37,7 @@ Benutzer- und Zahlungsempfängeradresse benötigen Name, PLZ, Ort und ISO-2-Land | Property | Beschreibung | |---|---| +| `Lizenzcode` | Laufzeitparameter fuer die Freigabe am Lizenzdienst | | `Users` | Benutzerliste | | `PowerMeters` | Stromzählerliste | | `WaterMeters` | Nebenkostenzähler | diff --git a/composer.json b/composer.json index 087809d..918f1c5 100644 --- a/composer.json +++ b/composer.json @@ -2,6 +2,7 @@ "name": "belevo/enelix-utils", "description": "Unabhaengige Zusatzmodule fuer IP-Symcon", "type": "library", + "license": "proprietary", "require": { "php": ">=8.0" }, diff --git a/docs/module/Verbrauchskostenreport/README.md b/docs/module/Verbrauchskostenreport/README.md index e4180ad..dfa1bbb 100644 --- a/docs/module/Verbrauchskostenreport/README.md +++ b/docs/module/Verbrauchskostenreport/README.md @@ -7,6 +7,12 @@ Der Modulpräfix lautet `VKR`. Der Report wird über die Aktion `CreateReport` erstellt und im Medium `ReportPDF` bereitgestellt. +## Lizenzierung + +Die Freigabe besteht aus einer Grundlizenz und getrennten Kontingenten fuer +Stromzaehler und Nebenzaehler. Der konfigurierte Umfang darf die vom +Lizenzdienst bestaetigten Mengen nicht ueberschreiten. + ## Variablen | Technischer Ident / Anzeige | Typ / Zugriff | Beschreibung | @@ -28,6 +34,7 @@ erstellt und im Medium `ReportPDF` bereitgestellt. | Technischer Ident / Anzeige | Typ | Standard / Beschreibung | | --- | --- | --- | +| `Lizenzcode` / Lizenzcode | String | leer; wird zur Laufzeit am Lizenzdienst geprueft. | | `Users` / Benutzer | String/JSON | `[]`; Benutzerstruktur. | | `PowerMeters` / Stromzähler | String/JSON | `[]`; Zuordnungen. | | `WaterMeters` / Wasserzähler | String/JSON | `[]`; Zuordnungen. | diff --git a/docs/testing/README.md b/docs/testing/README.md index c45dbbf..ed2666f 100644 --- a/docs/testing/README.md +++ b/docs/testing/README.md @@ -43,7 +43,7 @@ werden, wenn sie vor dem Lauf nicht existierten. - `affected`: die durch geänderte Pfade ermittelten Module Verfügbare Module: `CC100Hardware`, `Energiediagramm`, `ShellyModul`, -`Verbrauchskostenreport`. +`VGTSchnittstelle`, `Verbrauchskostenreport` und `VirtuelleBatterie`. Die Utils-Module werden jeweils eigenständig und ohne Abhängigkeit zu Enelix EMS getestet. @@ -84,15 +84,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 73e2811..0302980 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 7579532..6d981be 100644 --- a/tests/LibraryMetadataTest.php +++ b/tests/LibraryMetadataTest.php @@ -16,6 +16,9 @@ final class LibraryMetadataTest extends TestCase $daten = json_decode($inhalt, true, 512, JSON_THROW_ON_ERROR); self::assertSame('Enelix Utils', $daten['name']); 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']); }