16 KiB
Ladestation Stand-Alone
Status: implementiert fuer IP-Symcon 8 und den Enelix-2-Vertrag
4.0.
Das Modul bindet eine einzelne Ladestation direkt an Enelix EMS an. Es liest den Fahrzeug- und Ladezustand ueber die Geraete-API, ermittelt die Phasenzahl wie Enelix 1 und setzt den vom Manager gewaehlten Ladestrom. Es benoetigt keine Gateway-Instanz und hat keine technische Beziehung zum separaten Modul Ladestation Gateway.
Funktionsumfang
- direkte Statusabfrage und Steuerung der unterstuetzten Ladestationen,
- Fahrzeug-, Lade- und Phasenerkennung nach der Enelix-1-Logik,
- Leistungsangebote fuer PV- und Peakbetrieb,
- lokale Freigabe und Umschaltung zwischen Solar- und Normalbetrieb,
- Kommunikation mit dem Enelix Manager ueber den Nachrichtenvertrag
4.0, - optional sichtbare Diagnosevariablen und schaltbares Debug-Logging,
- automatisierte Tests mit Fake-HTTP-Transport ohne reale Ladestation.
Unterstuetzte Geraete
| Geraetetyp | Statusabfrage | Steuerung | Erforderliche Konfiguration |
|---|---|---|---|
| go-e Charger, alte API | GET /mqtt?payload= |
alw und amp |
IP-Adresse oder Hostname |
| go-e Charger Gemini / Gemini flex | GET /api/status |
frc und amp |
IP-Adresse oder Hostname |
| smart-me Pico | Pico-Charging-API | Load-Management-Current-API | Geraete-ID, Seriennummer, Benutzername und Passwort |
Bei go-e wird die lokale HTTP-API verwendet. Die Geraeteadresse wird ohne
http://, Pfad oder Parameter eingetragen. Die Pico-Anbindung verwendet HTTPS
und HTTP Basic Auth gegen api.smart-me.com. Zugangsdaten werden weder als
Variable noch im Debug-Protokoll oder im Diagnosefeld
LetzterGeraetebefehl ausgegeben.
Fahrzeug- und Phasenerkennung
Die Auswertung folgt bewusst dem Verhalten der bisherigen Enelix-1-Ladestation:
- Bei go-e gilt das Fahrzeug als verbunden, wenn
car != 1ist. Bei Pico wird entsprechendState != 1ausgewertet. - Die gemessene Leistung wird bei der alten go-e-API mit Faktor 10, bei Gemini direkt in Watt und bei Pico von kW in Watt umgerechnet.
- go-e meldet die drei Phasenstroeme einzeln. Sobald mindestens zwei Phasen Strom fuehren, wird dreiphasiges Laden direkt erkannt.
- Sind beim Anstecken noch keine belastbaren Phasenwerte vorhanden, gibt das
Modul zunaechst den konfigurierten Maximalstrom als Erkennungsstrom vor. Bis
zur abgeschlossenen Erkennung bleibt
Phasenzahl=0und das EMS-Angebot[0]. - Nach
Phasenerkennungszeitgilt wie in Enelix 1: ueber 7500 W werden drei Phasen erkannt, andernfalls eine Phase. Die erkannte Phasenzahl bleibt bis zum Ausstecken erhalten und kippt waehrend einer Ladepause nicht zurueck. - Der Ladestrom wird aus der Leistung mit
230 W/Aeinphasig beziehungsweise684 W/Adreiphasig berechnet. - Ein Ladeende wird nur nach zuvor tatsaechlich gemessener Ladeleistung
erkannt. Eine vom EMS angeordnete Solarpause gilt deshalb nicht als
FahrzeugGeladen.
Der normalisierte Fahrzeugstatus verwendet folgende Werte:
| Wert | Bedeutung |
|---|---|
0 |
unbekannt oder noch nicht ermittelt |
1 |
kein Fahrzeug verbunden |
2 |
Fahrzeug verbunden und bereit |
3 |
Fahrzeug laedt |
4 |
Fahrzeug geladen |
Leistungsregelung
Ein Leistungsangebot groesser als 0 W wird nur erzeugt, wenn das Modul
aktiviert, die Ladefreigabe gesetzt, ein Fahrzeug verbunden und das Fahrzeug
noch nicht als geladen erkannt ist. Andernfalls meldet das Modul [0] und
stoppt die Ladestation.
| Betriebsart | Solarladen | Leistungsangebot |
|---|---|---|
| PV | ein | 0 W und alle Ladestufen von 6 A bis zum konfigurierten Maximum |
| PV | aus | ausschliesslich die maximale Ladeleistung |
| Peak | ein | ausschliesslich [0]; die Ladestation wird gestoppt |
| Peak | aus | 0 W und alle Ladestufen von 6 A bis zum konfigurierten Maximum |
Die Leistungsstufen entsprechen Enelix 1: 230 W pro Ampere einphasig und
684 W pro Ampere dreiphasig. Ohne gueltige Manager-Vorgabe faehrt das Modul
bei aktivem Solarladen mit 0 A; bei ausgeschaltetem Solarladen verwendet es
die maximale angebotene Leistung.
Nach einer Leistungsaenderung wird die aktuelle Stufe fuer
ZeitZwischenZustandswechseln gehalten. Waehrend der
Mindesteinschaltdauer bleiben positive Leistungsstufen regelbar, 0 W
wird jedoch nicht angeboten. Nach dem Abschalten meldet das Modul waehrend der
Mindestausschaltdauer ausschliesslich [0]. Sicherheitsabschaltungen
durch Deaktivierung, fehlende Ladefreigabe, Ausstecken oder ein erkanntes
Ladeende greifen sofort.
Bedienung
| Ident | Wirkung |
|---|---|
Aktiv |
Gemeinsame lokale EMS-Freigabe. false setzt das Angebot auf [0] und stoppt die Ladestation. |
Ladefreigabe |
Lokale Freigabe fuer das Laden. Diese Variable ist nur mit EinstellungenInVisu=true sichtbar. |
Solarladen |
Schaltet das oben beschriebene PV-/Peak-Verhalten um. Diese Variable ist nur mit EinstellungenInVisu=true sichtbar. |
Die Properties Ladefreigabe und Solarladen definieren die Startwerte. Eine
Aenderung der jeweiligen Property wird beim Anwenden der Konfiguration in den
lokalen Zustand uebernommen. Eine Bedienung der Variablen verwirft eine noch
gueltige Manager-Vorgabe und berechnet das Leistungsangebot sofort neu.
Konfiguration
Gemeinsame EMS-Einstellungen
| Property | Typ | Standard | Beschreibung |
|---|---|---|---|
PrioritaetPV |
Integer | 0 |
Prioritaet des Verbrauchers im PV-Betrieb. |
PrioritaetPeak |
Integer | 0 |
Prioritaet des Verbrauchers im Peakbetrieb. |
Meldeintervall |
Integer | 10 s |
Intervall fuer die periodische Vollmeldung an zugeordnete Manager. |
VorgabeTimeout |
Integer | 120 s |
Gueltigkeitsdauer einer Manager-Vorgabe ohne Erneuerung. |
EinstellungenInVisu |
Boolean | false |
Blendet Ladefreigabe und Solarladen als bedienbare Variablen ein. |
LoggingEin |
Boolean | false |
Aktiviert das laufende Debug-Protokoll des Moduls. |
Ladestation und Diagnose
| Property | Typ | Standard | Beschreibung |
|---|---|---|---|
Geraetetyp |
Integer | 0 |
1 go-e alt, 2 go-e Gemini, 3 smart-me Pico; 0 ist nicht konfiguriert. |
Geraeteadresse |
String | leer | IP-Adresse oder Hostname fuer beide go-e-Varianten. |
GeraeteID |
String | leer | Geraete-ID fuer die Pico-Statusabfrage. |
Seriennummer |
String | leer | Seriennummer fuer die Pico-Stromvorgabe. |
Benutzername |
String | leer | Benutzername fuer die Pico-API. |
Passwort |
String | leer | Passwort fuer die Pico-API; im Formular als Passwortfeld dargestellt. |
MaximalerLadestrom |
Integer | 16 A |
Obergrenze der angebotenen Ladestufen; zulaessig sind 6 bis 32 A. |
Phasenerkennungszeit |
Integer | 60 s |
Dauer der Maximalstrom-Probe vor der leistungsbasierten Phasenerkennung. |
FahrzeugstromErkennungszeit |
Integer | 90 s |
Zeit, die eine stabile Stromunterschreitung anliegen muss, bevor die Fahrzeuggrenze mit 2,5 A Reserve uebernommen wird. |
ZeitZwischenZustandswechseln |
Integer | 1 min |
Mindestabstand zwischen zwei Leistungsaenderungen. |
Mindesteinschaltdauer |
Integer | 0 min |
Mindestdauer nach dem Einschalten, in der kein Abschalten auf 0 W angeboten wird. |
Mindestausschaltdauer |
Integer | 0 min |
Mindestpause nach dem Abschalten, in der nur 0 W angeboten werden. |
Abfrageintervall |
Integer | 5 s |
Intervall der Geraetestatusabfrage. |
Ladefreigabe |
Boolean | true |
Startwert der lokalen Ladefreigabe. |
Solarladen |
Boolean | true |
Startwert der lokalen Solarlogik. |
DiagnosevariablenAnzeigen |
Boolean | false |
Blendet gemeinsame und ladestationsspezifische Diagnosevariablen ein. |
Die internen Properties Testmodus und Testantwort gehoeren ausschliesslich
zum automatisierten Symcon-Funktionstest und erscheinen nicht im
Konfigurationsformular.
Variablen
Immer sichtbar:
| Ident | Typ / Zugriff | Beschreibung |
|---|---|---|
Aktiv |
Boolean / bedienbar | Lokale EMS-Freigabe; der Initialwert ist false. |
FahrzeugVerbunden |
Boolean / Anzeige | Zeigt, ob die API ein verbundenes Fahrzeug meldet. |
FahrzeugGeladen |
Boolean / Anzeige | Ergebnis der kompatiblen Enelix-1-Voll-Erkennung. |
Fahrzeugstatus |
Integer / Anzeige | Normalisierter Status von 0 bis 4. |
Ladestrom |
Float / Anzeige | Aus der gemessenen Leistung ermittelter Ladestrom in A. |
Phasenzahl |
Integer / Anzeige | 0 unbekannt, 1 einphasig oder 3 dreiphasig. |
Nur mit EinstellungenInVisu=true sichtbar und bedienbar:
LadefreigabeSolarladen
Nur mit DiagnosevariablenAnzeigen=true sichtbar:
| Ident | Beschreibung |
|---|---|
Istleistung |
Von der Ladestation gemessene Leistung in W. |
Leistungsquelle |
Immer 2 fuer eine gemessene Leistung. |
Sollleistung |
Letzte angenommene Manager-Vorgabe in W. |
SollwertGueltig |
Zeigt, ob die Vorgabe noch gueltig und im aktuellen Angebot enthalten ist. |
Verfuegbar |
Zeigt, ob die Ladestation grundsaetzlich Leistung aufnehmen kann. |
AenderungMoeglich |
Zeigt, ob das aktuelle Angebot mehr als eine Leistungsstufe enthaelt. |
Stoerung |
Sammelstatus fuer Konfigurations- und Kommunikationsfehler. |
Stoertext |
Letzte verstaendliche Fehlerbeschreibung. |
LetzterGeraetebefehl |
Letzter Steuerbefehl mit HTTP-Methode und URL ohne Zugangsdaten; Statusabfragen ueberschreiben ihn nicht. |
LeistungsangebotDiagnose |
Aktuelles Leistungsangebot als JSON-Liste in W. |
Die Regellogik speichert ihren Zustand unabhaengig von der Sichtbarkeit der Diagnosevariablen. Das Ein- oder Ausblenden veraendert daher nicht das Regelverhalten.
Managerkommunikation
Das Modul implementiert
VerbraucherSchnittstelle::ManagerdatenEmpfangen() und verwendet
ausschliesslich den Nachrichtenvertrag 4.0. Eine
separate Manager-ID wird nicht konfiguriert. Das Modul akzeptiert Vorgaben nur
von einem Manager, in dessen manueller oder automatischer
Verbraucherzuordnung die Ladestation aktiv eingetragen ist.
An den Manager werden neben den gemeinsamen Feldern diese Zustaende gemeldet:
Sollleistung_WFahrzeugVerbundenFahrzeugGeladenFahrzeugstatusPhasenzahlLadestrom_ALadefreigabeSolarladenLadefehlermit Stoertext
Eine Sollleistung wird nur angenommen, wenn sie im zuletzt berechneten
Leistungsangebot enthalten ist. Nach VorgabeTimeout ohne Erneuerung wird sie
ungueltig. Statusaenderungen werden kurz verzoegert und zusaetzlich alle
Meldeintervall Sekunden an alle zugeordneten Manager gemeldet.
Instanzstatus und Fehlerbehandlung
| Status | Bedeutung |
|---|---|
102 |
Konfiguration und letzte Geraetekommunikation sind gueltig. |
201 |
Konfiguration ungueltig, beispielsweise fehlende Adresse oder Pico-Zugangsdaten. |
202 |
Geraetekommunikation oder Antwortauswertung fehlgeschlagen. |
Bei einem Fehler meldet das Modul Verfuegbar=false,
AenderungMoeglich=false und setzt Stoerung sowie Stoertext. HTTP-Anfragen
verwenden 5 Sekunden Verbindungs- und 10 Sekunden Gesamt-Timeout. Antworten ab
HTTP-Status 400 sowie unvollstaendige oder ungueltige JSON-Antworten gelten als
Kommunikationsfehler.
Installation und Inbetriebnahme
- Im IP-Symcon Module Control den Testing-Branch
developder Bibliothekhttps://git.belevo.ch/ENELIX/Enelix-EMS.gitinstallieren oder aktualisieren. - Unter Instanz hinzufuegen nach Ladestation Stand-Alone suchen und eine Instanz anlegen.
- Den Geraetetyp auswaehlen und die dazugehoerigen Verbindungsdaten eintragen: bei go-e nur IP-Adresse oder Hostname, bei Pico Geraete-ID, Seriennummer, Benutzername und Passwort.
- Den maximal zulaessigen Ladestrom der Installation zwischen 6 und 32 A einstellen. Diese Grenze ersetzt keine elektrische Absicherung.
Abfrageintervall,Meldeintervall,VorgabeTimeoutsowie die beiden Prioritaeten festlegen.- Die gewuenschten Startwerte fuer
LadefreigabeundSolarladensetzen. - Fuer die Erstinbetriebnahme
EinstellungenInVisu,DiagnosevariablenAnzeigenund bei BedarfLoggingEinaktivieren. - Die Instanz im Manager manuell aktiv zuordnen oder bei automatischer Suche in der gefundenen Liste aktivieren.
- Zuerst ohne Fahrzeug kontrollieren, ob die Statusabfrage fehlerfrei ist.
Danach unter Aufsicht ein Fahrzeug verbinden und
Aktiveinschalten.
Fuer go-e muss IP-Symcon das Geraet im lokalen Netz per HTTP erreichen koennen.
Fuer Pico ist ausgehender HTTPS-Zugriff auf api.smart-me.com erforderlich.
Passwoerter gehoeren ausschliesslich in das dafuer vorgesehene Passwortfeld und
niemals in Repository-Dateien, Skripte oder Screenshots.
Abnahmecheckliste
- Die Instanz erreicht Status
102, undStoerungbleibtfalse. - Ohne Fahrzeug sind
FahrzeugVerbunden=false,Phasenzahl=0und das Leistungsangebot[0]. - Nach dem Anstecken wird das Fahrzeug erkannt und bei unbekannten Phasen zunaechst der konfigurierte Maximalstrom zur Erkennung angefordert.
- Nach der Erkennungszeit werden bis 7500 W eine Phase, darueber drei Phasen gespeichert. Bei go-e koennen die einzelnen Phasenstroeme die Erkennung bereits vorher abschliessen.
- Die erkannte Phasenzahl bleibt bei einer anschliessenden Ladepause stabil.
- Die gemessene Leistung wird plausibel in
IstleistungundLadestromabgebildet. Aktiv=falseoderLadefreigabe=falsestoppt die Ladestation.- PV mit
Solarladen=truebietet0 Wund die Ladestufen an. - PV mit
Solarladen=falsebietet nur die maximale Leistung an. - Peak mit
Solarladen=truestoppt die Ladestation und bietet nur[0]an. - Peak mit
Solarladen=falsebietet0 Wund die Ladestufen an. - Eine Manager-Vorgabe ausserhalb des gemeldeten Angebots wird abgewiesen.
- Leistungswechsel-, Mindest-Ein- und Mindest-Aus-Zeiten werden im gemeldeten Angebot sichtbar und vom Manager eingehalten.
- Nach Ablauf des Vorgabe-Timeouts gilt wieder das lokale Ersatzverhalten.
- Im Debug-Protokoll und in
LetzterGeraetebefehlerscheinen keine Zugangsdaten.
Fehlersuche
- Status
201: Geraetetyp und Pflichtfelder kontrollieren. Bei go-e darf die Adresse kein Protokoll, keinen Pfad und keine Parameter enthalten. Bei Pico muessen alle vier Zugangsfelder befuellt sein. - Status
202: Erreichbarkeit, DNS, lokale Firewall und API-Antwort pruefen.Stoertextenthaelt den konkreten Kommunikations- oder JSON-Fehler. - Fahrzeug wird nicht erkannt: Rohstatus der Geraete-API kontrollieren. Der
Adapter erwartet bei go-e
carundnrg[11], bei PicoStateundActiveChargingPower. - Phasenzahl bleibt laenger auf
0: Waehrend der Erkennungsphase muessen Ladestation und Fahrzeug den angeforderten Maximalstrom tatsaechlich freigeben. Bei Pico muss fuer eine sichere Dreiphasenerkennung waehrend der Erkennung mehr als 7500 W anliegen; go-e kann zusaetzlich anhand der einzelnen Phasenstroeme erkennen. - Manager-Vorgabe wird abgewiesen: aktive Zuordnung im Manager sowie
LeistungsangebotDiagnoseund die Betriebsart kontrollieren.
Tests
Die Unit- und Adaptertests verwenden einen injizierten Fake-HTTP-Transport. Damit werden fuer go-e alt, go-e Gemini und smart-me Pico Statusantworten, URL, HTTP-Methode, Authentisierung und Steueraufrufe ohne reale Hardware geprueft.
Der Symcon-Funktionstest verwendet den internen Testmodus mit simulierten
API-Antworten. Er prueft alle drei Geraetevarianten, die Maximalstrom-Probe
beim Anstecken, stabile Phasen waehrend einer Ladepause, die Schaltsperren,
Fahrzeugstrom-Erkennung, die Leistungsangebote in PV und Peak sowie die
Umschaltung ueber den Solarladen-Button.
PHP-Syntax, Struktur- und Unit-Tests des gesamten Repositorys:
composer check
Funktionstest nur fuer die Ladestation gegen IP-Symcon 8:
tests/Symcon/bin/run-symcon-tests.sh single LadestationStandAlone
Vollstaendiger Symcon-Modultestlauf:
tests/Symcon/bin/run-symcon-tests.sh all
Aufbau, Testvertrag und Ergebnisdateien sind unter
docs/testing/README.md beschrieben.