This commit is contained in:
@@ -21,6 +21,12 @@ jobs:
|
|||||||
- name: Abhaengigkeiten installieren
|
- name: Abhaengigkeiten installieren
|
||||||
run: composer install --no-interaction --no-progress --prefer-dist
|
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
|
- name: Unit-Tests und Syntaxpruefung ausfuehren
|
||||||
run: composer check
|
run: composer check
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -4,11 +4,10 @@ Energiemanagement, Manager und steuerbare Verbraucher fuer IP-Symcon.
|
|||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
Das Repository befindet sich im Aufbau. Der gemeinsame Nachrichtenvertrag, die
|
Version 0.1 Build 1 ist die erste Beta fuer kontrollierte Anlagen- und
|
||||||
Verbraucherbasis, der Manager, der mehrstufige Warmwassererwaermer, der
|
Feldtests. Der gemeinsame Nachrichtenvertrag, die Verbraucherbasis, der Manager
|
||||||
Pufferspeicher, die Batterie, der 1-stufige Verbraucher, die Ladestation
|
und alle unten aufgefuehrten Module sind implementiert. Produktiver Einsatz
|
||||||
Stand-Alone sowie das Easee Gateway mit Ladestation Gateway sind implementiert. Die weiteren
|
setzt eine anlagenspezifische Pruefung, Sicherung und Rueckfallplanung voraus.
|
||||||
Module sind als Diskussionsentwuerfe dokumentiert.
|
|
||||||
|
|
||||||
## Module
|
## Module
|
||||||
|
|
||||||
@@ -98,6 +97,7 @@ der Uebernahme in einen Freigabebranch erfolgreich sein.
|
|||||||
|
|
||||||
## Dokumentation
|
## Dokumentation
|
||||||
|
|
||||||
|
- [Changelog](CHANGELOG.md)
|
||||||
- [Zentrale Liste offener Teamentscheidungen](docs/Offene-Punkte.md)
|
- [Zentrale Liste offener Teamentscheidungen](docs/Offene-Punkte.md)
|
||||||
- [Manager-Verbraucher-Schnittstelle](docs/Schnittstelle.md)
|
- [Manager-Verbraucher-Schnittstelle](docs/Schnittstelle.md)
|
||||||
- [Batterieschnittstelle](docs/Schnittstelle-Batterie.md)
|
- [Batterieschnittstelle](docs/Schnittstelle-Batterie.md)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
"name": "belevo/enelix-ems",
|
"name": "belevo/enelix-ems",
|
||||||
"description": "Energiemanagement und steuerbare Verbraucher fuer IP-Symcon",
|
"description": "Energiemanagement und steuerbare Verbraucher fuer IP-Symcon",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
|
"license": "proprietary",
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.0"
|
"php": ">=8.0"
|
||||||
},
|
},
|
||||||
|
|||||||
+10
-14
@@ -49,7 +49,7 @@ Prioritaeten, Fehlerverhalten und ein pruefbares Ergebnis.
|
|||||||
| OP-001 | Entschieden | Lizenzierung | Betriebsort des Lizenzservers |
|
| OP-001 | Entschieden | Lizenzierung | Betriebsort des Lizenzservers |
|
||||||
| OP-002 | Erledigt | Grundeinrichtung | Generator und kostenpflichtige Ersteinrichtung |
|
| OP-002 | Erledigt | Grundeinrichtung | Generator und kostenpflichtige Ersteinrichtung |
|
||||||
| OP-003 | Offen | Lizenzportal | VGT-Integration in license.enelix.ch |
|
| 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 |
|
| OP-005 | Offen | Teststrategie | Standort fuer Feldtests |
|
||||||
|
|
||||||
## Offene Punkte
|
## Offene Punkte
|
||||||
@@ -66,19 +66,6 @@ Prioritaeten, Fehlerverhalten und ein pruefbares Ergebnis.
|
|||||||
- **Ziel-Sprint:** Offen
|
- **Ziel-Sprint:** Offen
|
||||||
- **Ergebnis/Verweis:** 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
|
### OP-005: Standort fuer Feldtests
|
||||||
|
|
||||||
- **Entscheidungsfrage:** An welchem Standort koennen die Module aus Enelix EMS
|
- **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
|
- **Ergebnis/Verweis:** Umsetzung im Lizenzportal unter
|
||||||
`https://license.enelix.ch`.
|
`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
|
## Vorlage fuer neue Punkte
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
|
|||||||
+11
-11
@@ -42,9 +42,9 @@ werden, wenn sie vor dem Lauf nicht existierten.
|
|||||||
- `single`: genau die als Auswahl übergebenen Module
|
- `single`: genau die als Auswahl übergebenen Module
|
||||||
- `affected`: die durch geänderte Pfade ermittelten Module
|
- `affected`: die durch geänderte Pfade ermittelten Module
|
||||||
|
|
||||||
Verfuegbare Module: `EaseeGateway`, `LadestationGateway`,
|
Verfuegbare Module: `Batterie`, `EaseeGateway`, `LadestationGateway`,
|
||||||
`LadestationStandAlone`, `Manager`, `Pufferspeicher`, `VerbraucherEinStufig`
|
`LadestationStandAlone`, `Manager`, `Pufferspeicher`, `VerbraucherEinStufig`,
|
||||||
und `Warmwassererwaermer`.
|
`Waermepumpe` und `Warmwassererwaermer`.
|
||||||
|
|
||||||
Der Manager-Test enthält Manager ohne Verbraucher, jeden Verbrauchertyp einzeln und alle aktuell implementierten Verbrauchertypen gemeinsam.
|
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
|
## CI-Regeln
|
||||||
|
|
||||||
Bei jedem Push laufen sämtliche PHPUnit-Tests. Auf `develop` werden zusätzlich
|
Bei jedem Push laufen sämtliche PHPUnit-Tests und die PHP-Syntaxprüfung. Die
|
||||||
die von den geänderten Pfaden betroffenen Symcon-Modultests ausgeführt. Bei
|
Symcon-Modultests werden bis zur Verfügbarkeit eines geschützten Runners auf
|
||||||
gemeinsamen Framework- oder Vertragsänderungen läuft die vollständige Suite.
|
der isolierten IP-Symcon-8.0-Instanz des Agent-Servers ausgeführt. Vor jeder
|
||||||
Für `beta` ist immer `all` vorgeschrieben.
|
Ü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`,
|
Eine spätere CI-Automatisierung benötigt einen geschützten Runner mit dem Label
|
||||||
lokalem Zugriff auf eine isolierte IP-Symcon-8.x-Instanz und den installierten
|
`symcon-8`, lokalem Zugriff auf die isolierte IP-Symcon-Instanz und den exakt
|
||||||
Repository-Stand. Ohne diesen Runner ist die Richtlinie dokumentiert, aber
|
zu prüfenden Repository-Stand.
|
||||||
nicht technisch durchsetzbar.
|
|
||||||
|
|
||||||
## Checkliste für neue Module
|
## Checkliste für neue Module
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -7,6 +7,6 @@
|
|||||||
"version": "8.0"
|
"version": "8.0"
|
||||||
},
|
},
|
||||||
"version": "0.1",
|
"version": "0.1",
|
||||||
"build": 0,
|
"build": 1,
|
||||||
"date": 0
|
"date": 1790662541
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ final class LibraryMetadataTest extends TestCase
|
|||||||
self::assertSame('Enelix EMS', $daten['name']);
|
self::assertSame('Enelix EMS', $daten['name']);
|
||||||
self::assertSame('Enelix', $daten['author']);
|
self::assertSame('Enelix', $daten['author']);
|
||||||
self::assertSame('8.0', $daten['compatibility']['version']);
|
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']);
|
self::assertMatchesRegularExpression('/^\{[0-9A-F-]{36}\}$/', $daten['id']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user