Files
Symcon_Belevo_Energiemanage…/docs/OCPP/README.md
T

8.1 KiB

OCPP-Ladestationsmodul fuer Symcon

Stand: 2026-05-10

Diese Dokumentation fasst die lokalen Anhaenge zum neuen Symcon-Ladestationsmodul zusammen und beschreibt die Zielarchitektur fuer Ladestation_OCPP und OCPP_Server.

Zielbild

Das neue Ladestationsmodul wird konsequent OCPP-orientiert aufgebaut. Es soll die fachliche Wirkung von Ladestation_v2 erreichen, aber die alte interne Struktur nicht kopieren.

Verbindliche Grundsaetze:

  • Kommunikation zur Ladestation erfolgt OCPP-only.
  • OCPP 1.6 wird fuer Phase 1 unterstuetzt.
  • OCPP 2.0.1 wird strukturell vorbereitet.
  • OCPP 2.1 und bidirektionales Laden werden als spaetere Erweiterung vorbereitet.
  • Hersteller-Sonderfunktionen laufen nur ueber OCPP DataTransfer.
  • Keine Hersteller-HTTP-APIs, keine Hersteller-Cloud-APIs, keine OAuth-/Cloud-Token im Ladestationsmodul.
  • Der bestehende EMS-Vertrag zum Manager bleibt stabil.

Modulaufteilung

Ladestation_OCPP ist die fachliche Ladepunkt-/Connector-Instanz. Sie bildet Status, Messwerte, Managementmodi, Diagnose und EMS-Schnittstelle ab.

OCPP_Server ist ein separates Transport-Scaffold. Es bereitet WebHook/WebSocket, Routing und Frame-Puffer vor. Die Trennung ist wichtig, weil mehrere Ladepunkte an einem Transport haengen koennen.

EMS-Vertrag

Ladestation_OCPP ist ein Verbraucher des bestehenden Energiemanagers. Die folgenden Idents sind Pflicht und duerfen nicht umbenannt werden:

Ident Typ Bedeutung
Sperre_Prio Integer Prioritaet fuer Peak-Shaving
PV_Prio Integer Prioritaet fuer Solarladen
Idle Boolean Modul ist bereit fuer neue Leistungszuteilung
Aktuelle_Leistung Float aktuell wirksame Leistung in W
Bezogene_Energie Float Importenergie fuer Fairness/Bilanz
PowerSteps String JSON-Array erlaubter Leistungsstufen in W
Power Float vom Manager gesetzter Sollwert
Is_Peak_Shaving Boolean aktueller Manager-Modus
Leistung_Delta Float Soll/Ist-Abweichung in W
IdleCounter Integer Zaehler fuer Regelruhe

Pflicht-Actions:

  • GetCurrentData(bool Peak)
  • SetAktuelle_Leistung(power)
  • Do_UserCalc()

Positive Werte bedeuten Laden/Verbrauch, 0 bedeutet aus/neutral. Negative Werte sind fuer spaeteres bidirektionales Laden reserviert und in Phase 1 nicht aktiv.

Phase 1 Umfang

Phase 1 ist ein produktionsnaher Scaffold, aber noch kein fertig abgenommener OCPP-CSMS.

Sichtbar und vorbereitet:

  • OCPP 1.6 Grundgeruest.
  • OCPP 2.0.1/2.1 Adapterklassen als Struktur.
  • Manager-Anbindung mit PowerSteps.
  • Managementmodi: Nie laden, Immer laden, Konstanter Strom, Nur Solar.
  • Status-, Messwert- und Diagnosevariablen.
  • Messwertnormalisierung fuer Import/Export, Strom, Spannung, Leistung, SoC, Temperatur.
  • Transaktionsspeicher als Symcon-Attribut.
  • Fail-Safe Defaults.
  • ChargingProfile-Erzeugung als OCPP-kompatibles Datenmodell.

Noch nicht produktiv fertig:

  • echte dauerhafte WebSocket-CSMS-Verbindung mit realer Station.
  • vollstaendige OCPP-1.6/2.0.1 State Machine.
  • automatische 1p/3p-Umschaltung mit Hardwarefreigabe.
  • bidirektionales Laden.
  • Tarifoptimierung.

OCPP-Kommunikation

OCPP-Nachrichten werden intern in OCPPMessage normalisiert:

version
direction
action
uniqueId
payload
timestamp
chargePointId

Eingehend vorbereitet:

  • BootNotification
  • Heartbeat
  • StatusNotification
  • Authorize
  • StartTransaction
  • StopTransaction
  • TransactionEvent
  • MeterValues
  • DataTransfer

Ausgehend vorbereitet:

  • SetChargingProfile
  • ClearChargingProfile
  • Reset

Transport-Spike

OCPP erwartet, dass die Ladestation eine WebSocket-Verbindung zum CSMS aufbaut. Symcon muss hier die CSMS-Rolle uebernehmen.

Relevante Symcon-Optionen:

  • WebSocket Client: offizieller Symcon I/O fuer ausgehende WebSocket-Verbindungen.
  • WebHook Control: unterstuetzt WebSockets und kann Daten an Skripte oder PHP-Module weiterleiten.
  • ProcessHookData(): PHP-Modul-Einstieg fuer registrierte WebHooks.

Bewertung fuer Phase 1:

  • OCPP_Server kapselt diese Frage, damit Ladestation_OCPP fachlich stabil bleibt.
  • Der produktive Rueckkanal und Dauerbetrieb muessen mit Simulator oder OCPP-1.6-Referenzstation getestet werden.
  • Ohne bestaetigten Transport wird kein externer Middleware-Dienst als Standard eingebaut.

Quellen:

Variablenkatalog

Bedienung:

  • Ladebereit
  • Managementmodus
  • Mindestladestrom
  • Konstantstrom
  • Max_Current_abs
  • SafeCurrent
  • SafeOff
  • AutomatischePhasenumschaltung
  • ManuelleSperre
  • VNB_Mode
  • VNB_Limit_A
  • VNB_Limit_W

Status:

  • OCPP_Online
  • OCPP_Version
  • ChargePointId
  • EVSEId
  • ConnectorId
  • ConnectorStatus
  • ChargingState
  • TransactionId
  • Car_detected
  • Car_is_full
  • Fahrzeugstatus
  • Is_1_ph
  • NumberPhases
  • PhaseToUse
  • AktuellerEffektivSollwert
  • AktiveFreigabequelle
  • AktiverSperrgrund
  • AktiverReduktionsgrund
  • LetzterFreigabewechsel
  • LetztesIdToken

Messwerte:

  • Ladeleistung_Effektiv
  • Entladeleistung_Effektiv
  • Strom_L1, Strom_L2, Strom_L3
  • Spannung_L1, Spannung_L2, Spannung_L3
  • Leistung_L1, Leistung_L2, Leistung_L3
  • Bezogene_Energie
  • Abgegebene_Energie
  • SoC
  • Temperatur
  • MesswertQualitaet
  • LetzterMeterValueZeitpunkt

Diagnose:

  • Kommunikationsstatus
  • LetzteMeldung
  • LetzteMeldungZeit
  • Fehlerklasse
  • AktuelleStoerung
  • WarnungAktiv
  • FehlerAktiv
  • StoerungAktiv
  • LetzterOCPPFehlercode
  • LetztesChargingProfileAccepted
  • LetzterCommandTimestamp
  • LetzterCommandStatus
  • SollIstAbweichung

Messwertnormalisierung

OCPP-Messwerte werden auf interne Symcon-Kernwerte abgebildet:

OCPP-Measurand Symcon-Wert
Power.Active.Import Ladeleistung_Effektiv
Power.Active.Export Entladeleistung_Effektiv
Energy.Active.Import.Register Bezogene_Energie
Energy.Active.Export.Register Abgegebene_Energie
Current.Import mit Phase Strom_L1/L2/L3
Voltage mit Phase Spannung_L1/L2/L3
Power.Active.Import mit Phase Leistung_L1/L2/L3
SoC SoC
Temperature Temperatur

Import und Export werden niemals saldiert. Fehlende Messwerte gelten als unbekannt, nicht als 0.

Phasenlogik

Standard-AC-Laden wird nicht als asymmetrische Einzelphasenregelung umgesetzt.

Regeln:

  • Dreiphasiges Laden nutzt einen gemeinsamen Stromwert pro aktiver Phase.
  • Einphasiges Laden wird mit numberPhases = 1 abgebildet.
  • phaseToUse wird nur verwendet, wenn Station und OCPP-Version es nachweislich unterstuetzen.
  • Automatische Phasenumschaltung ist standardmaessig aus.
  • Umschaltung unter Last ist nicht erlaubt, wenn die Station keine sichere Umschaltung garantiert.

Fail-Safe

Defaultwerte:

  • MinCurrent: 6 A
  • SafeCurrent: 6 A
  • SafeOff: 0 A
  • EMSWatchdogSeconds: 120 s
  • OCPPHeartbeatTimeoutSeconds: mindestens 90 s
  • CommandAckTimeoutSeconds: 30 s

Bei EMS-Ausfall oder OCPP-Ausfall setzt das Modul Warnungen und blockiert keine Sicherheitsgrenzen. Kritische Stoerungen fuehren zu sicherer Reduktion bis 0 A.

Test- und Abnahmekriterien

Vor produktiver Nutzung sind mindestens diese Tests noetig:

  • Modulinstallation in IP-Symcon.
  • Manager erkennt Ladestation_OCPP als Verbraucher.
  • PowerSteps reagieren auf Managementmodus, Ladefreigabe, Fahrzeugstatus und Peak.
  • OCPP-1.6-Simulator sendet BootNotification, Heartbeat, StatusNotification, MeterValues.
  • SetChargingProfile wird korrekt als OCPP-Frame erzeugt.
  • EMS-Watchdog und OCPP-Watchdog setzen klare Warnungen.
  • Kein Hersteller-HTTP oder Cloud-Token wird verwendet.

Meilensteine

  1. M1: Scaffold, EMS-Vertrag, OCPP 1.6-Grundstruktur, Transport-Spike.
  2. M2: Phasenmessung, Worst-Phase-Logik, Gruppenlimit.
  3. M3: OCPP 2.0.1 Device Model, TransactionEvent, numberPhases, phaseToUse.
  4. M4: OCPP 2.1 und bidirektionales Laden.
  5. M5: Robustheit, Watchdogs, Wiederanlauf, Testfaelle.
  6. M6: Monitoring, Betrieb, Admin-Doku.