Tests / test (push) Failing after 1m12s
Add opt-in SDL measurement sources and independent visualization toggles. Exclude balancing power from household telemetry and new household energy. Preserve custom views and cover measurement, migration and Symcon 8.0 behavior.
443 lines
28 KiB
Markdown
443 lines
28 KiB
Markdown
# Manager
|
|
|
|
> Status: Implementiert. Führt Hauptmanager und Peakshaving zusammen.
|
|
|
|
Der Manager liest die Netzleistung, verwaltet ausschliesslich die ausgewählten
|
|
Verbraucher und verteilt Leistung im PV- oder Peak-Betrieb. Die Prioritäten
|
|
kommen aus den Verbrauchermeldungen.
|
|
|
|
## Variablen
|
|
|
|
Die drei Regelungsvariablen `Aktiv`, `Betriebsart` und `Netzleistung` sind immer sichtbar. Die vom Manager gefuehrten Mess- und Energievariablen werden immer angelegt und archiviert, koennen aber gemeinsam ausgeblendet werden.
|
|
|
|
| Ident | Typ / Zugriff | Beschreibung |
|
|
| --- | --- | --- |
|
|
| `Aktiv` | Boolean / bedienbar | Regelung ein/aus; Start `false`. |
|
|
| `Betriebsart` | String / Anzeige | `Inaktiv`, `PV` oder `Peak`. |
|
|
| `Netzleistung` | Float / Anzeige | Aktuelle Netzleistung in W; positiv Bezug, negativ Einspeisung. |
|
|
| `PVLeistungArchiv` | Float / Logging | Normalisierte PV-Leistung in W. |
|
|
| `HausverbrauchLeistungArchiv` | Float / Logging | Normalisierter Hausverbrauch in W. |
|
|
| `NetzleistungArchiv` | Float / Logging | Normalisierte Netzleistung in W; positiv Bezug, negativ Einspeisung. |
|
|
| `BatterieleistungArchiv` | Float / Logging | Batterieleistung in W; positiv Laden, negativ Entladen. |
|
|
| `PVEnergie` | Float / Zaehler | Integrierte PV-Erzeugung in kWh. |
|
|
| `Hausenergie` | Float / Zaehler | Integrierter Hausverbrauch in kWh. |
|
|
| `NetzbezugEnergie` | Float / Zaehler | Integrierter Netzbezug in kWh. |
|
|
| `EinspeisungEnergie` | Float / Zaehler | Integrierte Einspeisung in kWh. |
|
|
| `BatterieLadenEnergie` | Float / Zaehler | Integrierte Batterieladung in kWh. |
|
|
| `BatterieEntladenEnergie` | Float / Zaehler | Integrierte Batterieentladung in kWh. |
|
|
| `NetzleistungGueltig` | Boolean / Logging | Messquelle vorhanden und aktuell. |
|
|
| `WirksameLastspitzengrenze` | Float / Logging | Aktuelle feste oder monatliche Bezugsgrenze in W. |
|
|
| `WirksameEinspeisegrenze` | Float / Logging | Anlagenweite Einspeisegrenze in W. |
|
|
| `Abregelbedarf` | Float / Logging | Aktuell erforderliche PV-Leistungsreduktion in W. |
|
|
| `Wechselrichterstatus` | String/JSON / Logging | Verteilte Grenzen und Zustand der PV-Regelung. |
|
|
| `Verteilbudget` | Float / Logging | Aktuell verfügbares Budget in W. |
|
|
| `VerbraucherAnzahl` | Integer / Logging | Anzahl zugeordneter Verbraucher. |
|
|
| `VerbraucherVerfuegbar` | Integer / Logging | Anzahl aktuell verfügbarer Verbraucher. |
|
|
| `Verbraucherstatus` | String/JSON / Logging | Letzte vollständige Meldungen. |
|
|
| `Prognosestatus` | String / Logging | `NichtVerwendet`, `Verbunden` oder `Fehler`. |
|
|
| `SDLStatus` | String / Logging | Status des SDL/VGT-Anschlusses. |
|
|
| `Lizenzstatus` | String / Logging | Status der Lizenzprüfung. |
|
|
| `Stoerueberwachungsstatus` | String / Logging | Status der externen Störüberwachung. |
|
|
| `Sammelstoerung` | Boolean / Logging | Eigene und weitergeleitete Störungen. |
|
|
| `Stoertext` | String / Logging | Lesbare Sammelmeldung. |
|
|
|
|
## Properties
|
|
|
|
| Ident | Typ | Standard / Beschreibung |
|
|
| --- | --- | --- |
|
|
| `Rolle` | Auswahl | `Alleine`; alternativ `Hauptmanager` oder `Untermanager`. |
|
|
| `NetzleistungVariableID` | Integer | `0*`; gültige Messquelle vor Regelstart. |
|
|
| `Netzleistungsfaktor` | Float | `1`; auf W und die vereinbarte Vorzeichenrichtung normieren. |
|
|
| `MesswertMaxAlter` | Integer | `60` s; auf echte Messaktualisierung bezogen. |
|
|
| `VerbraucherZuordnung` | String/JSON | `[]`; manuelle Auswahl aus Instanz-ID und Aktiv-Status. |
|
|
| `AutomatischeVerbraucherZuordnung` | String/JSON | `[]`; Auswahl aus automatisch gefundenen Verbrauchern. |
|
|
| `AutomatischeSuche` | Boolean | `true`; zeigt gefundene Verbraucher zur gezielten Auswahl. |
|
|
| `SuchbereichID` | Integer | `0`; optionaler Suchbereich für die automatische Suche. |
|
|
| `KeepAlive` | Integer | `60` s; erneuert laufende Vorgaben zyklisch. |
|
|
| `VerbraucherTimeout` | Integer | `60` s; erkennt ausgebliebene Verbrauchermeldungen. |
|
|
| `Lastspitzenmodus` | Auswahl | `Aus`; alternativ `Konstant` oder `Monatlich`. |
|
|
| `Lastspitzengrenze` | Float | Feste Grenze in W für Modus `Konstant`. |
|
|
| `Monatsgrenzen` | String/JSON | Editierbare Liste mit zwölf Monatswerten in W. |
|
|
| `SollwertSolarladen` | Float | `0` W; gewünschte Netzleistung im Solarladebetrieb. |
|
|
| `Umschaltdifferenz` | Float | `5` %; Mindestdifferenz der berechneten Sollleistungen vor Umschaltung. |
|
|
| `EinspeisebegrenzungAktiv` | Boolean | `false`; gemeinsame Exportgrenze am Netzanschlusspunkt aktivieren. |
|
|
| `Einspeisegrenze` | Float | Maximale Einspeisung der Gesamtanlage in W; `0` bedeutet Nulleinspeisung. |
|
|
| `PrognoseAktiv` | Boolean | `false`; Prognosetelemetrie und Topologiesynchronisation mit `forecast_pv` plus `forecast_load` oder `grid_schedule` aktivieren. |
|
|
| `NetzfahrplanAktiv` | Boolean | `false`; lizenzierten, tarif- und prognosebasierten Netzzielwert verwenden. |
|
|
| `NetzbezugEnergieVariableID` | Integer | Optionaler kumulativer Netzbezugszaehler. |
|
|
| `NetzeinspeisungEnergieVariableID` | Integer | Optionaler kumulativer Einspeisezaehler. |
|
|
| `NetzbezugEnergiefaktor`, `NetzeinspeisungEnergiefaktor` | Float | Umrechnung der Netzenergiezaehler nach kWh. |
|
|
| `AnlagenWechselrichter` | String/JSON | `[]`; Wechselrichter mit Typ, AC-Nennleistung, Leistungs- und Erzeugungsenergiemessung sowie optionalem Begrenzungsregister. |
|
|
| `AnlagenPVFlaechen` | String/JSON | `[]`; PV-Flaechen mit DC-Leistung, Ausrichtung und Wechselrichter-ID. |
|
|
| `AnlagenBatterien` | String/JSON | `[]`; Batteriespeicher mit Kapazitaeten, Kopplung, Leistung, SOC sowie Lade- und Entladeenergiezaehlern. |
|
|
| `PrognoseSendeintervall` | Integer | `60` s; Intervall fuer den Upload aktueller Messwerte, zulaessig sind 60 bis 3600 Sekunden. |
|
|
| `PrognoseAnschluss` | String/JSON | Verdeckte Altproperty fuer bestehende Konfigurationen. |
|
|
| `SDLAnschluss` | String/JSON | Optionaler SDL/VGT-Anschluss. |
|
|
| `SDLAktiv` | Boolean | `false`; separat gemessene SDL-/Regelenergie in der Anlagenbilanz beruecksichtigen. Keine SDL-Steuerung. |
|
|
| `SDLLeistungVariableID` | Integer | `0`; bei aktiver SDL erforderliche numerische Istleistungsquelle. |
|
|
| `SDLLeistungsfaktor` | Float | `1`; Umrechnung nach W, positiv Laden/Bezug, negativ Entladen/Abgabe. Fuer kW `1000`, bei umgekehrtem Vorzeichen negativ. |
|
|
| `SDLSOCVariableID` | Integer | `0`; optionaler separater SDL-Ladezustand in Prozent, 0 bis 100. |
|
|
| `SDLEnergieflussAnzeigen` | Boolean | `false`; SDL mit optionalem SOC als eigenen Speicher im aktivierten Energiefluss anzeigen. |
|
|
| `SDLDiagrammeAnzeigen` | Boolean | `false`; SDL-Leistung, Lade-/Entladeenergie und optionalen SOC in aktivierten Diagrammen anzeigen. |
|
|
| `Lizenzcode` | String | Im Enelix-Lizenzportal erworbener Aktivierungscode. |
|
|
| `StoermeldeAnschluss` | String/JSON | Optionaler Anschluss zur Störüberwachung. |
|
|
| `DiagnosevariablenAnzeigen` | Boolean | `false`; zusätzliche Diagnosevariablen anlegen oder entfernen. |
|
|
| `LoggingEin` | Boolean | `false`; laufende Meldungen im Debug-Fenster ausgeben. |
|
|
| `EnergieaufzeichnungAktiv` | Boolean | `true`; managergefuehrte Leistungs- und Energieaufzeichnung aktivieren. |
|
|
| `MesswerteAnzeigen` | Boolean | `false`; einzelne Manager-Messwerte in der Objektstruktur anzeigen. |
|
|
| `EnergyPieAnzeigen` | Boolean | `false`; Energy Pie unter dem Manager anlegen oder entfernen. |
|
|
| `EnergiediagrammeAnzeigen` | Boolean | `false`; native Leistungs- und Energiediagramme anlegen oder entfernen. |
|
|
| `FunFactsAnzeigen` | Boolean | `false`; responsive Energy Facts anlegen oder entfernen. |
|
|
| `EnergieflussAnzeigen` | Boolean | `false`; native Energy Distribution anlegen oder entfernen. |
|
|
| `LeistungsaufzeichnungMinuten` | Auswahl | `1`; Verdichtung auf 1 Minute, 5 Minuten oder 1 Stunde. |
|
|
| `LeistungLoeschenMonate` | Integer | `12`; Leistungswerte nach zwoelf Monaten loeschen, `0` deaktiviert die Loeschung. |
|
|
| `EnergieaufzeichnungMinuten` | Auswahl | `5`; Verdichtung auf 1 Minute, 5 Minuten oder 1 Stunde. |
|
|
| `EnergieVerdichtenMonate` | Integer | `12`; Energiezaehler nach zwoelf Monaten auf Tageswerte verdichten. |
|
|
| `EnergieLoeschenMonate` | Integer | `0`; Energiezaehler nicht loeschen. |
|
|
|
|
Es gibt keine Sollwertquellenauswahl und keine zweite Prioritätseinstellung im
|
|
Manager. Im Modus `Aus` bleibt Solarladen aktiv, nur die Peak-Begrenzung entfällt.
|
|
Die Monatsgrenzen werden in den Grundeinstellungen über eine Schaltfläche
|
|
ein- und ausgeblendet. Die automatische Verbrauchersuche kann dort erneut
|
|
ausgeführt werden, ohne andere ungespeicherte Formulareingaben zu verlieren.
|
|
|
|
## Energieaufzeichnung und Visualisierung
|
|
|
|
Sobald Netzleistung und mindestens eine PV-Istleistung in der Anlagentopologie
|
|
konfiguriert sind, tastet der Manager die Quellen minuetlich ab. PV-Leistung ist
|
|
die Summe der den PV-Flaechen zugeordneten Wechselrichter. Batterieleistung und
|
|
der kapazitaetsgewichtete SOC stammen aus den Batteriespeichern. Positive
|
|
Batterieleistung bedeutet Laden, negative Entladen. Der Hausverbrauch wird als
|
|
`PV + Netz - Batterie` bilanziert. Sind Netzbezugs-, Einspeise-, PV-Erzeugungs-
|
|
sowie gegebenenfalls Batterie-Lade- und Entladezaehler vollstaendig hinterlegt,
|
|
verwendet der Manager deren Deltas fuer die Energieaufzeichnung. Die Hausenergie
|
|
wird dann als `PV + Netzbezug + Batterieentladung - Einspeisung - Batterieladung`
|
|
berechnet. Ohne vollstaendigen Zaehlerdatensatz integriert der Manager weiterhin
|
|
die Leistungswerte. Dieselben Quellen versorgen ohne zweite Eingabe auch die
|
|
Prognosetelemetrie. Ausfallluecken ueber fuenf Minuten werden bei der
|
|
Leistungsintegration nicht nachberechnet.
|
|
|
|
Batteriespeicher bleiben als physische Komponenten samt Messquellen in der
|
|
Anlagentopologie. Ein zusaetzliches Batterieverbrauchermodul beschreibt dagegen
|
|
Regelung, Leistungsangebot und Betriebszustand; beide Rollen sind bewusst
|
|
getrennt.
|
|
|
|
Die eigenen Variablen werden automatisch im ersten Archive Control aktiviert.
|
|
Leistungen verwenden die Standardaggregation, Energievariablen den Zaehlermodus.
|
|
Standardmaessig werden Leistungen auf eine Minute verdichtet und nach zwoelf
|
|
Monaten geloescht. Energie wird auf fuenf Minuten verdichtet, nach zwoelf
|
|
Monaten auf Tageswerte reduziert und nie geloescht. Aenderungen an diesen
|
|
Regeln werden idempotent ueber die Archiv-API gesetzt und reaggregiert.
|
|
|
|
Vier Schalter im Bereich `Energieaufzeichnung` verwalten die
|
|
Visualisierungen idempotent. Beim Einschalten werden die Objekte direkt unter
|
|
dem Manager angelegt oder aktualisiert. Beim Ausschalten werden ausschliesslich
|
|
die vom Manager anhand ihrer festen Kennung und ihres Typs erkannten Objekte
|
|
entfernt beziehungsweise die native Energy Distribution ausgeblendet:
|
|
|
|
- Energy Pie aus Enelix Utils mit den vier relevanten Energiezaehlern,
|
|
- zwei native IP-Symcon-Diagrammmedien fuer Leistungen und Energien,
|
|
- responsive Energy Facts mit Solar-, Netz-, Haus- und Vergleichswerten,
|
|
- native Energy Distribution fuer PV, Netz, Haus und Batterie.
|
|
|
|
## SDL / Regelenergie
|
|
|
|
`SDL aktiv` blendet die Quellen- und Anzeigeauswahl ein. Die SDL-Istleistung
|
|
beschreibt einen **separat gemessenen AC-Zweig am selben Netzanschlusspunkt**.
|
|
Sie darf weder in der normalen Batterieleistung noch in einer PV-Leistung
|
|
enthalten sein. Eine identische Variablen-ID fuer SDL und Netz/PV/Batterie wird
|
|
abgewiesen. Ueberschneidungen in extern gebildeten Summen muss die
|
|
Anlagenkonfiguration ausschliessen. Ein gemeinsamer Speicher mit nur einem
|
|
Gesamtleistungsmesswert kann damit nicht in EMS- und SDL-Anteile zerlegt werden.
|
|
|
|
Bei aktiver SDL lautet die Hauslast `max(0, PV + Netz - Batterie - SDL)`.
|
|
Die Korrektur geschieht vor der Begrenzung auf null und unabhaengig davon,
|
|
ob SDL angezeigt wird. Diese Hauslast wird an den Prognosedienst gesendet;
|
|
Netzleistung und der kapazitaetsgewichtete SOC der normalen Batterien bleiben
|
|
unveraendert. SDL-SOC ersetzt keinen Batterie-SOC und wird nicht als
|
|
planbare EMS-Speicherkapazitaet exportiert. Ungueltige SDL-Leistungswerte
|
|
unterbrechen die Messaufzeichnung und den jeweiligen Telemetrieversand,
|
|
statt als null in die Hauslast einzugehen. Der SDL-Status ist bei aktiver
|
|
SDL auch ohne eingeschaltete Diagnosevariablen sichtbar.
|
|
|
|
`SDLLeistungArchiv` zeichnet Watt auf, `SDLSOCArchiv` gueltige Prozentwerte.
|
|
`SDLLadenEnergie` und `SDLEntladenEnergie` integrieren die getrennten Richtungen
|
|
in kWh. Die Abtastung erfolgt wie bei den anderen Leistungen minuetlich, nicht
|
|
als abrechnungsgenaue SDL-Energiemessung. Auch bei vorhandenen physikalischen
|
|
Energiezaehlern wird die Hausenergie um die im selben Intervall integrierte
|
|
SDL-Ladung vermindert und um SDL-Entladung erhoeht. Bei Messluecken ueber
|
|
fuenf Minuten, Quellenwechseln oder Zaehlerresets wird keine unvollstaendige
|
|
Hausenergie nachberechnet; Historie und bereits erfasste Zaehler bleiben erhalten.
|
|
|
|
Die Anzeigeoptionen wirken beim Anwenden direkt auf die vorhandenen
|
|
Manager-Visualisierungen. Nur die eigenen SDL-Knoten und -Datensaetze werden
|
|
ergaenzt oder entfernt. Andere Knoten, Farben, Datensaetze und sonstige
|
|
Anpassungen bleiben bestehen. Im Energiefluss verwendet SDL dieselbe W/kW-
|
|
Einheit wie die anderen Manager-Knoten; ein ungueltiger SOC wird dort nicht
|
|
als aktueller Zusatzwert angezeigt. Ohne separaten SDL-Knoten enthaelt der
|
|
Manager-Sammelknoten Batteriespeicher die normale Batterie plus SDL, damit
|
|
die dargestellte Leistungsbilanz vollstaendig bleibt. Im Leistungsdiagramm
|
|
erscheint die signierte SDL-Istleistung, im Energiediagramm erscheinen Laden
|
|
und Entladen getrennt. SOC verwendet in beiden Diagrammen eine eigene rechte
|
|
Prozentachse. Die allgemeinen Schalter fuer Energiefluss, Diagramme und
|
|
Energieaufzeichnung bleiben erforderlich.
|
|
|
|
Migration: SDL bleibt nach dem Modulupdate standardmaessig aus. Bestehende
|
|
Installationen behalten damit ihre bisherige Bilanz. Erst Quellen und
|
|
Vorzeichen pruefen, SDL aktivieren und anwenden. Historische Hauslasten oder
|
|
bereits trainierte Prognosen werden nicht rueckwirkend korrigiert; neue
|
|
Prognoseeingaben sind ab Aktivierung bereinigt. Ausschalten entfernt nur
|
|
SDL-Anzeigen, nicht die aufgezeichnete Historie. Der alte `SDLAnschluss`
|
|
bleibt lesbar; externe SDL-Regelung und Stellbefehle werden nicht veraendert.
|
|
|
|
Native Darstellungsvertraege: [Energy Distribution](https://www.symcon.de/en/service/documentation/module-reference/energy/energy-distribution/)
|
|
und [Diagramme](https://www.symcon.de/en/service/documentation/basics/media/charts/).
|
|
|
|
## Anlagenweite Einspeisebegrenzung
|
|
|
|
Die Einspeisebegrenzung ist Bestandteil von Peak Shaving und arbeitet auf der
|
|
Messung am Netzanschlusspunkt. Fuer jeden regelbaren PV- oder Hybridwechselrichter
|
|
werden die Istleistungsvariable und eine bedienbare Begrenzungsvariable
|
|
konfiguriert. Der Stellwert kann als Prozent der AC-Nennleistung oder als
|
|
absolute Leistung in Watt ausgegeben werden.
|
|
|
|
Der Manager berechnet eine einzige Grenze fuer die Gesamtanlage. Beim Abregeln
|
|
verteilt er sie nach der tatsaechlichen Erzeugung, beim Freigeben nach der
|
|
AC-Nennleistung auf alle angebotenen Wechselrichter. Jede gemessene Abweichung
|
|
wird stufenlos nachgefuehrt; ein zusaetzliches Toleranzfenster wird nicht
|
|
verwendet. Beim Abschalten des Managers oder der Funktion werden zuvor gesetzte
|
|
Grenzen kontrolliert auf die jeweilige
|
|
Nennleistung zurueckgesetzt. Wechselrichter ohne beide Register werden nicht
|
|
geregelt; sobald eines der beiden Register gesetzt ist, muessen beide gueltig
|
|
sein und das Begrenzungsregister eine IP-Symcon-Aktion besitzen.
|
|
|
|
Der intelligente Netzfahrplan verwendet die PV-, Verbrauchs- und
|
|
Netzleistungsprognose sowie Tarife und Batteriespeicher. Liegt im
|
|
Prognosezeitraum mehr PV-Ertrag als zulaessige Einspeisung vor, wird dieses
|
|
Potenzial als flexibler Verbrauch beziehungsweise Speicherladung eingeplant.
|
|
Damit werden Verbraucher in ertragreiche Zeitfenster verschoben, bevor der
|
|
harte Anlagenregler die Wechselrichter reduziert. Ein fehlender oder
|
|
abgelaufener Fahrplan fuehrt automatisch zum konfigurierten
|
|
`SollwertSolarladen` zurueck; die harte Einspeisebegrenzung bleibt unabhaengig
|
|
davon aktiv.
|
|
|
|
## Anlagentopologie und Prognoseexport
|
|
|
|
Der Manager ist die fuehrende Quelle fuer die technischen Stammdaten. Die
|
|
Konfiguration trennt Wechselrichter, PV-Flaechen und Batteriespeicher. AC-Leistung
|
|
wird am Wechselrichter, DC-Leistung an der PV-Flaeche gepflegt. Individuelle
|
|
AC-Einspeise- und Bezugsgrenzen werden nicht erfasst, weil die Begrenzung
|
|
anlagenweit am Netzanschlusspunkt erfolgt. Modulanzahl und Modulleistung sind
|
|
optional und muessen gemeinsam gesetzt werden.
|
|
|
|
PV-Flaechen und Batterien referenzieren ihren Wechselrichter ueber dessen stabile
|
|
ID. Bei `hybrid` koennen beide denselben Wechselrichter verwenden. Der Export
|
|
`ENELIX_AnlagentopologieExportieren($InstanzID)` weist dann eine gemeinsame
|
|
AC-Grenze aus, damit PV und Batterie die Nennleistung nicht unabhaengig doppelt
|
|
beanspruchen.
|
|
|
|
Der JSON-Export enthaelt die Vertragsversion `1.0`, die Lizenz-Installations-ID,
|
|
die drei Komponentenlisten, gemeinsame AC-Nennleistungen und aggregierte Summen
|
|
fuer die schrittweise Prognoseanbindung. Interne Symcon-Variablen-IDs werden
|
|
nicht exportiert. Tarif- und Variantenparameter bleiben im Prognoseportal. Bei
|
|
aktivierter Prognose wird eine nichtleere Topologie beim Speichern automatisch ueber
|
|
einen separaten, widerrufbaren Installationszugang synchronisiert. Der
|
|
Lizenzserver liefert diesen Zugang nur auf ausdrueckliche Geraeteanforderung;
|
|
der Manager entfernt ihn vor dem Speichern aus der Lease und haelt ihn in einem
|
|
internen Attribut. Der Lizenzcode wird nicht als API-Token verwendet. Ein
|
|
Synchronisationsfehler erscheint im `Prognosestatus`, blockiert die lokale
|
|
EMS-Regelung aber nicht.
|
|
|
|
Der Forecast-Schalter zeigt direkt an, ob fuer die Manager-ID eine passende
|
|
Kombination `forecast_pv` plus `forecast_load` oder `grid_schedule` vorhanden ist. Nach der Aktivierung sendet der
|
|
Manager PV-Leistung, berechneten Hausverbrauch, Netzleistung und Batterie-SOC
|
|
mit UTC-Zeitstempel im eingestellten Sendeintervall. Dieses Intervall bestimmt
|
|
also, wie oft aktuelle Messwerte zum Prognosedienst hochgeladen werden; es ist
|
|
kein Regelintervall. Das Minimum von 60 Sekunden
|
|
passt zum Rate-Limit des Lizenzportals. Die Uebertragung nutzt denselben
|
|
widerrufbaren Installationszugang wie die Topologie; Lizenzcode und Geraet Token
|
|
werden weder als Telemetriefelder noch im Debug-Log ausgegeben. Bei HTTP 401
|
|
oder 403 verwirft der Manager den Geraetezugang und fordert ihn bei der naechsten
|
|
Lizenzpruefung neu an.
|
|
|
|
Die Entscheidung und ihre Alternativen sind in
|
|
[ADR 0005](../../adr/0005-anlagentopologie-fuer-prognosen.md) dokumentiert.
|
|
|
|
## Lizenzierung
|
|
|
|
Der Manager arbeitet nur mit einer gueltigen Manager-Lizenz. Das Lizenzfeld steht
|
|
zuoberst im Konfigurationsformular. Ohne Freigabe bleibt die Instanz mit Status
|
|
`203` inaktiv und sendet keine Leistungsvorgaben.
|
|
|
|
### Voraussetzungen
|
|
|
|
- Der Auftrag im Enelix-Lizenzportal ist bezahlt und enthaelt eine aktive
|
|
Manager-Berechtigung.
|
|
- IP-Symcon erreicht `https://license.enelix.ch` ueber HTTPS (Port 443).
|
|
- Der Lizenzcode liegt im Format `ENX-XXXX-XXXX-XXXX-XXXX` vor.
|
|
|
|
### Lizenz aktivieren
|
|
|
|
1. Manager-Konfiguration in IP-Symcon oeffnen.
|
|
2. Lizenzcode im Bereich `Lizenzierung` eintragen.
|
|
3. `Lizenz pruefen und binden` ausloesen.
|
|
4. Die erfolgreiche Freigabe am angezeigten Lizenzstatus kontrollieren.
|
|
5. Die Manager-Konfiguration mit `Uebernehmen` beziehungsweise `OK` speichern,
|
|
damit der eingegebene Lizenzcode als Property erhalten bleibt.
|
|
|
|
Beim ersten Anlegen erzeugt die Manager-Instanz eine UUIDv4 als stabile
|
|
Installations-ID. Die Aktivierung sendet ausschliesslich `code` und
|
|
`installationId` per
|
|
`POST https://license.enelix.ch/api/v1/licenses/activate`. Sie benoetigt weder
|
|
Portal-Cookies noch einen CSRF-Token. Derselbe Code kann von derselben
|
|
Installation erneut abgerufen werden; die Bindung an eine andere Installation
|
|
wird vom Lizenzserver abgelehnt.
|
|
|
|
### Berechtigungen
|
|
|
|
| Berechtigung | Freigegebene Funktion |
|
|
| --- | --- |
|
|
| `manager_standard` | Manager-Grundregelung ohne Peak Shaving. |
|
|
| `manager_peak` | Bezugs- und Einspeisebegrenzung am Netzanschlusspunkt. |
|
|
| `forecast_pv` | PV-Ertragsprognose; interne Modellvarianten bleiben verborgen. |
|
|
| `forecast_load` | Verbrauchsprognose; interne Modellvarianten bleiben verborgen. |
|
|
| `grid_schedule` | Intelligenter Netzfahrplan inklusive PV- und Verbrauchsprognose sowie Vermeidung von Abregelung. |
|
|
|
|
Wird mit `manager_standard` ein Lastspitzenmodus aktiviert, bleibt der Manager
|
|
mit dem Hinweis `Peak Shaving ist nicht lizenziert` gesperrt. `manager_peak`
|
|
gilt zugleich als Berechtigung fuer die Grundregelung.
|
|
|
|
### Erneuerung und Offline-Betrieb
|
|
|
|
Die erfolgreiche Serverantwort wird als Lease in der Manager-Instanz gespeichert.
|
|
Der Manager erneuert sie ab `refreshAfter` automatisch ueber denselben
|
|
Aktivierungsendpunkt. Schlaegt eine Erneuerung fehl, wird fruehestens nach einer
|
|
Stunde erneut angefragt. Eine bereits bestaetigte Entwicklungsfreigabe bleibt
|
|
bis `offlineUntil` verwendbar. Der aktuelle Entwicklungsvertrag setzt diesen
|
|
Zeitpunkt ungefaehr 14 Tage nach Ausstellung. Danach sperrt der Manager die
|
|
Regelung, bis der Lizenzserver wieder eine gueltige Antwort liefert.
|
|
|
|
Die Installations-ID und die Lease liegen in internen Instanzattributen. Die
|
|
ID wird erst nach dem Laden bestehender Attribute initialisiert und bleibt bei
|
|
Modulupdates, Modul-Neuladen und einem normalen Neustart unveraendert. Bei einer
|
|
Migration muss trotzdem die vollstaendige Manager-Instanz mitsamt ihren
|
|
Attributen uebernommen werden. Eine neu erzeugte Instanz erhaelt eine andere
|
|
Installations-ID und kann einen bereits gebundenen Code nicht selbststaendig
|
|
uebertragen. Wurde die ID mit einer aelteren Manager-Version bereits ungewollt
|
|
geaendert, muss im Lizenzportal einmalig ein Ersatzcode erzeugt und an die nun
|
|
stabile ID gebunden werden.
|
|
|
|
### Status und Fehlerbehebung
|
|
|
|
| Anzeige / Serverstatus | Bedeutung und Massnahme |
|
|
| --- | --- |
|
|
| `Lizenzcode fehlt.` | Code eintragen, pruefen und die Konfiguration speichern. |
|
|
| `Lizenzcode ist ungueltig.` | Format und Zeichen des Codes kontrollieren. |
|
|
| HTTP `404` | Code unbekannt oder zugehoeriger Auftrag noch nicht bezahlt. |
|
|
| HTTP `409` | Code ist bereits an eine andere Installation gebunden. |
|
|
| HTTP `429` | Zu viele Aktivierungsversuche; vor dem naechsten Versuch warten. |
|
|
| `Lizenzserver nicht erreichbar` | DNS, Internetzugang, HTTPS und Systemzeit des Symcon-Systems pruefen. Eine bestehende Lease gilt nur bis `offlineUntil`. |
|
|
| `Offline-Freigabe ist abgelaufen.` | Verbindung zum Lizenzserver wiederherstellen und Lizenz erneut pruefen. |
|
|
| `Keine Prognoseberechtigung vorhanden` | Im Lizenzportal entweder PV-Ertragsprognose zusammen mit Verbrauchsprognose oder den Intelligenten Netzfahrplan ergaenzen. Anschliessend im Manager `Lizenz pruefen und binden` ausloesen, die Prognose aktivieren und die Konfiguration speichern. |
|
|
|
|
Fuer eine genauere Diagnose koennen die Diagnosevariablen eingeblendet werden.
|
|
`Lizenzstatus` zeigt dann den aktuellen Zustand. Mit aktiviertem Debug-Logging
|
|
werden Fehlermeldungen der Lizenzpruefung ausgegeben, niemals jedoch der
|
|
Lizenzcode selbst.
|
|
|
|
### Datenschutz und Entwicklungsstand
|
|
|
|
Der Lizenzcode wird als Manager-Property in der IP-Symcon-Konfiguration
|
|
gespeichert. Fuer den internen Abgleich mit der Lease verwendet der Manager
|
|
zusaetzlich nur einen SHA-256-Hash und schreibt den Code nicht ins Debug-Log.
|
|
Die aktuelle Serverantwort ist ein Entwicklungsvertrag mit
|
|
`development: true` und noch nicht kryptografisch signiert. Ein optionaler
|
|
Geraete-Public-Key sowie Challenge-, Heartbeat- oder separate
|
|
Entitlement-Endpunkte werden vom Manager derzeit bewusst nicht verwendet.
|
|
|
|
## Verteilalgorithmus
|
|
|
|
Der Manager bildet das Verteilbudget aus der aktuellen Netzleistung, dem Ziel
|
|
der aktiven Betriebsart und der aktuellen Leistung aller frisch gemeldeten
|
|
Verbraucher. Eine gültige Istleistung wird bevorzugt; fehlt sie, bleibt der im
|
|
Zustand bestätigte Sollwert konservativ reserviert.
|
|
|
|
Nicht verfügbare oder aktuell angebotlose Verbraucher behalten ihre Leistung
|
|
und erhalten keine neue Vorgabe. Jeder verfügbare, synchronisierte Verbraucher
|
|
mit einem nicht leeren Angebot erhält dagegen einen Sollwert aus diesem Angebot.
|
|
Das gilt auch bei `AenderungMoeglich=false`: Ein fixes Angebot wie `[11000]`
|
|
wird mit genau `11000 W` zugeteilt.
|
|
|
|
Die Verbraucher werden nach der gemeldeten PV- beziehungsweise Peak-Priorität
|
|
sortiert. Zuerst reserviert der Manager die richtungsneutralen erlaubten Werte
|
|
sowie die gemessene Leistung fester oder gesperrter Verbraucher.
|
|
|
|
Positives Restbudget wird innerhalb jeder Priorität schrittweise verteilt:
|
|
Zuerst kommt die kleinste nächste erreichbare **absolute Sollleistung**, nicht
|
|
die kleinste Erhöhung. Bei gleicher nächster Sollleistung entscheidet die exakt
|
|
gezählte bezogene Energie in Wh, danach stabil die Instanz-ID. Die bisherigen
|
|
2-kWh-Gruppen werden für diese Vergabe nicht mehr verwendet. Vom Budget wird nur
|
|
die Differenz zum bereits zugeteilten Sollwert abgezogen. Ein nicht finanzierbarer
|
|
Schritt wird übersprungen; andere passende Schritte und danach tiefere
|
|
Prioritäten können das verbleibende Budget nutzen.
|
|
|
|
Beispiel bei gleicher Priorität: A bietet `[0,100,200,400,800]` bei 10 kWh,
|
|
B bietet `[0,100,110,500,780,1500]` bei 12 kWh. Die Zuteilungsfolge bei
|
|
ausreichendem Budget ist `A100, B100, B110, A200, A400, B500, B780, A800, B1500`.
|
|
Die zugehörigen Gesamtbudgets sind 100, 200, 210, 310, 510, 900, 1180, 1580 und
|
|
2300 W. Energie entscheidet nur bei gleichen nächsten Leistungsstufen, nicht
|
|
mehr über die vollständige Versorgung eines Verbrauchers vor allen anderen.
|
|
|
|
Ganzzahlige Bereiche folgen derselben Reihenfolge wie einzelne Wattstufen,
|
|
werden aber über gemeinsame Leistungsniveaus effizient verarbeitet. Lücken
|
|
werden nie durch unzulässige Werte geschlossen. Bei negativem Restbudget bleibt
|
|
die bestehende Defizitregelung einschliesslich ihrer Energiegruppen unverändert.
|
|
Eine verbleibende Abweichung wird im `Verbraucherstatus` dokumentiert.
|
|
|
|
Für das Update sind keine neuen Properties oder eine Migration nötig. Bestehende
|
|
Energiezähler, Sperrzeiten und Freigaben bleiben erhalten. Nach dem Modulupdate
|
|
gilt die neue Vergabe beim nächsten Regellauf. Vor einem Update einer laufenden
|
|
Anlage Einstellungen sichern und die neuen Sollwerte kontrolliert prüfen;
|
|
die Git-Veröffentlichung allein aktualisiert keine laufende Installation.
|
|
|
|
Die Betriebsart wechselt unterhalb des Solar-Sollwerts zu `PV` und oberhalb
|
|
der wirksamen Lastspitzengrenze zu `Peak`. Zwischen den beiden Zielwerten
|
|
bleibt sie erhalten. `Umschaltdifferenz` verhindert zusätzlich einen Wechsel,
|
|
wenn sich die beiden berechneten Korrekturen nicht ausreichend unterscheiden.
|
|
|
|
## Laufzeit und Fehlerverhalten
|
|
|
|
- Netzleistungsänderungen und Verbrauchermeldungen lösen die Berechnung aus.
|
|
- Identische Sollwerte werden nur beim Keep-alive erneut gesendet.
|
|
- Diagnosevariablen und laufendes Debug-Logging werden getrennt aktiviert.
|
|
- Verbraucherpakete werden zentral geprüft und nur von aktiv zugeordneten
|
|
Absendern angenommen.
|
|
- Veraltete oder noch fehlende Verbrauchermeldungen werden nicht verteilt und
|
|
als Sammelstörung ausgewiesen.
|
|
- Bei fehlender oder veralteter Netzleistung bleibt die Regelung `Inaktiv` und
|
|
sendet keine neuen Vorgaben.
|
|
- Ohne gueltige Manager-Berechtigung bleibt der Manager mit Status `203` gesperrt.
|
|
- Die Serverantwort wird lokal gespeichert und ab `refreshAfter` erneuert. Bei
|
|
einem Verbindungsfehler gilt eine zuvor bestaetigte Entwicklungsfreigabe bis
|
|
`offlineUntil`; danach wird die Regelung wieder gesperrt.
|
|
- `manager_standard` erlaubt die Grundregelung. Ein aktiver Lastspitzenmodus
|
|
benoetigt `manager_peak`.
|
|
- Der Lizenzcode wird nie geloggt. Lokal wird fuer den Lease-Abgleich nur sein
|
|
SHA-256-Wert gespeichert.
|
|
- Die oberen Anschlüsse bleiben optional. Solange kein konkreter Adapter
|
|
implementiert ist, meldet ein aktivierter Anschluss den Status `Fehler`, ohne
|
|
die lokale EMS-Regelung zu blockieren.
|
|
|
|
## Schnittstellen
|
|
|
|
- Empfängt genau `VerbraucherdatenEmpfangen(array $daten)`.
|
|
- Sendet an jeden Verbraucher nur Kopf und `Sollleistung_W`.
|
|
- Obere Anschlüsse: siehe [Obere Anschlüsse](../../Obere-Anschluesse.md).
|
|
|
|
## Offene Punkte
|
|
|
|
- Monatliche Batteriereserve aus dem alten Peakshaving-Modul übernehmen?
|
|
- Anbieterformate für Prognose und Störüberwachung festlegen.
|
|
- Produktive signierte Lizenz-Leases nach Abschluss des Entwicklungsvertrags integrieren.
|
|
- Verhalten und Messabgrenzung bei Untermanagern im Anlagentest bestätigen.
|