Zum Hauptinhalt springen

EdaStartProcess@1

Der Node EdaStartProcess@1 startet einen EDA-Marktprozess: Er prüft die Prozessdaten, erstellt die EDA-Anfragenachricht und sendet sie an den HttpAdapter des Ponton X/P Messengers. Prozesse mit einem geplanten Startdatum werden nur geprüft, damit die Pipeline sie speichern und später starten kann.

Unterstützt werden die Prozesse CR_REQ_PT, EC_PODLIST, CM_PODLIST, EC_REQ_ONL, EC_PRTFACT_CHANGE, CM_REV_SP und CM_REQ_ONL, siehe Prozesse. Einen Überblick über die Marktprozesse gibt das Benutzerhandbuch unter Energiegemeinschaften – Externe Integrationen.

Adapter-Voraussetzungen​

Node-Konfiguration​

Zu den Feldern path, targetPath, targetValueWriteMode und targetValueKind siehe Überblick.

transformations:
- type: EdaStartProcess@1
path: $.body.requestData # EdaProcessInfo
targetPath: $.request # EdaClientResult
# processDataPath: $.key.Values[2] # only to start a planned process
# host, user, password, isSimulationMode: optional, override the adapter configuration
PropertyTypErforderlichStandardBeschreibung
pathstringNein$Pfad zur EdaProcessInfo mit dem zu startenden Prozess
targetPathstringNein$Pfad, an den das EdaClientResult geschrieben wird
processDataPathstringNein-Pfad zu den Prozessdaten eines geplanten Prozesses; ist er gesetzt, wird der Prozess jetzt gestartet (siehe Geplante Prozesse)
hoststringNeinAdapter-KonfigurationÜberschreibt Host der Adapter-Konfiguration
userstringNeinAdapter-KonfigurationÜberschreibt User der Adapter-Konfiguration
passwordstringNeinAdapter-KonfigurationÜberschreibt Password der Adapter-Konfiguration
isSimulationModeboolNeinAdapter-KonfigurationÜberschreibt IsSimulationMode; bei true wird die Nachricht mit dem Dokumentmodus SIMU statt PROD gesendet

Die Konfigurations-Properties sind in der API-Referenz dokumentiert.

Eingabe: EdaProcessInfo​

Der Node liest ein EdaProcessInfo-Objekt aus path:

PropertyTypErforderlichBeschreibung
processNamestringJaName des EDA-Prozesses, siehe Prozesse
commentstringNeinFreitext; wird vom Node nicht verwendet, steht aber der Pipeline zur Verfügung (z. B. zum Speichern beim Prozess)
startDateDateTimeNeinGeplanter Start des Prozesses. Ist er gesetzt (und processDataPath nicht konfiguriert), wird der Prozess nur geprüft und nicht gesendet
processDataobjectJa¹Prozessspezifische Daten, siehe Prozesse

¹ Nicht nötig, wenn die Prozessdaten aus processDataPath gelesen werden.

{
"processName": "CR_REQ_PT",
"comment": "Request consumption data for January",
"processData": {
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"from": "2026-01-01T00:00:00",
"to": "2026-02-01T00:00:00"
}
}

Property-Namen werden ohne Beachtung der Groß-/Kleinschreibung zugeordnet, camelCase und PascalCase funktionieren daher beide. Enum-Werte (sector, energyDirection, interval und dataType von CM_REQ_ONL) können als Zahl oder als Name angegeben werden, z. B. "energyDirection": "Consumption" oder "energyDirection": 1. Datumswerte sind ISO-8601-Zeichenketten.

  • Wird unter path nichts gefunden, tut der Node nichts und die Pipeline läuft weiter.
  • Ist processName leer oder fehlen die Prozessdaten, schlägt der Node mit Invalid input data fehl.
  • Ein unbekannter processName lässt den Node mit Process <name> is not supported. fehlschlagen.
  • Prozessdaten, die gegen die Regeln ihres Prozesses verstoßen, lassen den Node mit Invalid input data for <processName> fehlschlagen.

Geplante Prozesse​

Der Node unterscheidet drei Fälle:

FallProzessdaten ausVerhalten
Neuer Prozess, startDate nicht gesetztprocessDataGeprüft, Nachricht erstellt und sofort gesendet
Neuer Prozess, startDate gesetztprocessDataGeplant: nur geprüft; es wird keine Nachricht erstellt oder gesendet. Das Ergebnis hat den StatusCode 200 und enthält das StartDate
processDataPath konfiguriert (Start eines geplanten Prozesses)processDataPathGeprüft, Nachricht erstellt und sofort gesendet, unabhängig von startDate

Ein geplanter Prozess wird typischerweise von der Pipeline als Entität gespeichert (mit seinem startDate und den Prozessdaten). Eine zweite Pipeline fragt die fälligen Prozesse ab und startet sie mit einem processDataPath, der auf die gespeicherten Prozessdaten zeigt. Die Prozessdaten können als JSON-Objekt oder als JSON-Zeichenkette gespeichert sein; eine Zeichenkette wird geparst. Die Nachricht (und damit ihre Nachrichten-Id und ihr Erstellungsdatum) wird erst erstellt, wenn der Prozess tatsächlich gesendet wird. Regeln, die beim Erstellen der Nachricht geprüft werden (eine energyDirection oder ein dataType mit dem Wert Unknown), lassen den Node daher erst beim Start des geplanten Prozesses fehlschlagen.

hinweis

Ob ein Prozess geplant ist, entscheidet das startDate der EdaProcessInfo. Das startDate innerhalb der processData mancher Prozesse (z. B. EC_REQ_ONL, EC_PRTFACT_CHANGE) ist ein eigener Wert, der in die EDA-Nachricht geschrieben wird.

Ausgabe: EdaClientResult​

Der Node schreibt ein EdaClientResult nach targetPath. Im Datenkontext sind die Property-Namen in PascalCase, z. B. $.request.IsSuccess.

PropertyBeschreibung
StatusCodeHTTP-Statuscode des HttpAdapters als Zahl (z. B. 200); 200 bei einem geplanten Prozess
HeadersBeim Senden nicht gesetzt (null)
ContentAntwortinhalt des HttpAdapters
MessageDie gesendete EDA-Nachricht (MarketParticipantDirectory, ProcessDirectory); null bei einem geplanten Prozess. $.request.Message.ProcessDirectory.ConversationId ist z. B. die Konversations-Id, die die Antworten des Prozesses tragen
StartDateGeplantes Startdatum; nur bei einem geplanten Prozess gesetzt
IsSuccesstrue, wenn StatusCode ein 2xx-Statuscode ist
hinweis

Ein HTTP-Fehler des HttpAdapters lässt den Node nicht fehlschlagen. IsSuccess sollte in der Pipeline geprüft werden (z. B. mit If@1).

Das Ergebnis ist unter EdaClientResult dokumentiert, die Eingabe unter EdaProcessInfo.

Prozesse​

Alle Prozessdaten enthalten die Marktpartner-Ids von Absender und Empfänger:

PropertyTypErforderlichBeschreibung
senderstringJaMarktpartner-Id des Absenders, z. B. der Energiegemeinschaft oder des Dienstleisters
receiverstringJaMarktpartner-Id des Empfängers, in der Regel des Verteilnetzbetreibers

Fehlt sender oder receiver, können die Prozessdaten nicht gelesen werden und der Node schlägt fehl.

Die Antworten der Marktpartner werden mit EdaReceiver@1 empfangen und mit EdaParseMessage@1 ausgewertet.

CR_REQ_PT​

Fordert die Verbrauchs- oder Erzeugungsdaten eines Zählpunkts für einen Zeitraum an.

PropertyTypErforderlichBeschreibung
meteringPointstringJaZählpunktnummer
fromDateTimeJaBeginn des angeforderten Zeitraums; muss vor to liegen
toDateTimeJaEnde des angeforderten Zeitraums
sectorenumNeinElectricity (1) oder Gas (2); jeder andere Wert wird als Strom behandelt
{
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"from": "2026-01-01T00:00:00",
"to": "2026-02-01T00:00:00"
}

Nachricht: CPRequest 01.12, Nachrichtencode ANFORDERUNG_PT. Der Zeitraum wird als Ortszeit (Mitteleuropa) gesendet, die Kostenübernahme ist immer false. Antworten: ANTWORT_PT / ABLEHNUNG_PT, die Daten selbst kommen als DATEN_CRMSG.

EC_PODLIST​

Fordert die Liste der Zählpunkte einer Energiegemeinschaft an.

PropertyTypErforderlichBeschreibung
energyCommunityIdstringJaId der Energiegemeinschaft
fromDateTimeJaBeginn des angeforderten Zeitraums
toDateTimeJaEnde des angeforderten Zeitraums
{
"sender": "RC100001",
"receiver": "AT000001",
"energyCommunityId": "AT00000000000RC100001000000000001",
"from": "2026-01-01T00:00:00",
"to": "2026-12-31T00:00:00"
}

Nachricht: CPRequest 01.12, Nachrichtencode ANFORDERUNG_ECP, Sparte Strom. Die Id der Energiegemeinschaft wird im Element MeteringPoint gesendet. Antworten: SENDEN_ECP (ECMPList) / ABLEHNUNG_ECP.

CM_PODLIST​

Ein Dienstleister für Endverbraucher gleicht seine aktiven und inaktiven Datenfreigaben mit dem Verteilnetzbetreiber ab.

PropertyTypErforderlichBeschreibung
serviceProviderIdstringJaMarktpartner-Id des Dienstleisters
fromDateTimeJaBeginn des angeforderten Zeitraums; muss vor to liegen
toDateTimeJaEnde des angeforderten Zeitraums
sectorenumNeinElectricity (1) oder Gas (2); jeder andere Wert wird als Strom behandelt
{
"sender": "EP100001",
"receiver": "AT000001",
"serviceProviderId": "EP100001",
"from": "2026-01-01T00:00:00",
"to": "2026-12-31T00:00:00",
"sector": "Electricity"
}

Nachricht: CPRequest 01.12, Nachrichtencode ANFORDERUNG_CMP. Anders als bei EC_PODLIST enthält das Element MeteringPoint die Id des Dienstleisters, nicht die Id einer Gemeinschaft. Antworten: ANTWORT_CMP (ECMPList) / ABLEHNUNG_CMP.

hinweis

Laut der Berechtigungsmatrix der Marktrollen darf CM_PODLIST nur von den Marktrollen VNB und EDL (Dienstleister für Endverbraucher) verwendet werden. Der Node prüft die Marktrolle nicht.

EC_REQ_ONL​

Meldet einen Zählpunkt bei einer Energiegemeinschaft an (Online-Anfrage).

PropertyTypErforderlichBeschreibung
meteringPointstringJaZählpunktnummer
energyCommunityIdstringJaId der Energiegemeinschaft
partitionFactorintNeinTeilnahmefaktor in Prozent (der Node akzeptiert 0–255)
energyDirectionenumJaConsumption (1) oder Production (2); Unknown (0) wird beim Erstellen der Nachricht abgewiesen
startDateDateTimeNeinDatum der Anmeldung; muss nach heute liegen. Standard: morgen
{
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"energyCommunityId": "AT00000000000RC100001000000000001",
"partitionFactor": 100,
"energyDirection": "Consumption",
"startDate": "2026-11-01T00:00:00"
}

Nachricht: CMRequest 01.30, Nachrichtencode ANFORDERUNG_ECON mit dem Anfragetyp EnergyCommunityRegistration, dem Übertragungszyklus D und einer erzeugten CMRequestId. Antworten: ANTWORT_ECON, ZUSTIMMUNG_ECON, ABSCHLUSS_ECON (ECMPList) oder ABLEHNUNG_ECON / ABBRUCH_ECON.

EC_PRTFACT_CHANGE​

Ändert den Teilnahmefaktor eines Zählpunkts in einer Energiegemeinschaft (ECMPList 01.20, EDA-Konfigurationspatch 3.7.29).

PropertyTypErforderlichBeschreibung
meteringPointstringJaZählpunktnummer
energyCommunityIdstringJaId der Energiegemeinschaft
partitionFactorintJaNeuer Teilnahmefaktor in Prozent, von 1 bis 100
startDateDateTimeJaDatum, ab dem der neue Faktor gilt; muss nach heute liegen
endDateDateTimeNeinEnde der Gültigkeit; muss nach startDate liegen. Ohne Angabe gilt die Änderung unbefristet
energyDirectionenumJaConsumption (1) oder Production (2); Unknown (0) wird beim Erstellen der Nachricht abgewiesen
dataTypestringJaDatentyp der Anfrage (MPTimeData/DataType, z. B. EnergyCommunityRegistration), höchstens 30 Zeichen
transmissionCyclestringNeinÜbertragungszyklus der Verbrauchsdaten: D, M oder V
purposestringNeinZweck der Datenfreigabe, höchstens 100 Zeichen
techCodestringNeinTechnologiecode gemäß AIB EECS Fact Sheet 5, höchstens 10 Zeichen
fuelCodestringNeinBrennstoffcode gemäß EECS, höchstens 10 Zeichen

Die Längenbeschränkungen werden nach dem Zusammenfassen von Leerraum geprüft (führender und nachfolgender Leerraum entfernt, innerer Leerraum auf ein Leerzeichen reduziert), wie es das XML-Schema festlegt.

{
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"energyCommunityId": "AT00000000000RC100001000000000001",
"partitionFactor": 50,
"startDate": "2026-11-01T00:00:00",
"energyDirection": "Production",
"dataType": "EnergyCommunityRegistration",
"transmissionCycle": "D",
"techCode": "T010100"
}

Nachricht: ECMPList 01.20, Nachrichtencode ANFORDERUNG_CPF. Prozessdatum, DateFrom und DateActivate sind startDate; DateTo ist endDate oder 9999-12-31. ECType und ECDisModel werden nicht gesendet. Antworten: ANTWORT_CPF / ABLEHNUNG_CPF.

CM_REV_SP​

Der Dienstleister hebt eine bestehende Datenfreigabe auf.

PropertyTypErforderlichBeschreibung
meteringPointstringJaZählpunktnummer
consentIdstringJaId der aufzuhebenden Zustimmung
endDateDateTimeNeinEnde der Zustimmung; darf nicht in der Vergangenheit liegen. Standard: morgen
energyCommunityIdstringNeinId der Energiegemeinschaft; nicht Teil der gesendeten Nachricht
sectorenumNeinElectricity (1) oder Gas (2); andere Werte werden als Strom gesendet
{
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"consentId": "AT000001000000000000000000000001",
"endDate": "2026-11-01T00:00:00"
}

Nachricht: CMRevoke 01.10, Nachrichtencode AUFHEBUNG_CCMS. Antworten: ANTWORT_CCMS / ABLEHNUNG_CCMS.

hinweis

CM_REV_SP ist der einzige ausgehende Aufhebungsprozess. Aufhebungen durch den Kunden (CM_REV_CUS) oder durch den Netzbetreiber (CM_REV_IMP) werden nur empfangen, als AUFHEBUNG_CCMC und AUFHEBUNG_CCMI, und mit EdaParseMessage@1 ausgewertet.

CM_REQ_ONL​

Fordert eine Datenfreigabe des Endkunden an (Online-Anfrage).

PropertyTypErforderlichBeschreibung
meteringPointstringJaZählpunktnummer
purposestringJaZweck der Datenfreigabe; wird bei Anfragen von Messdaten gesendet
dataTypeenumJaMeteringData (1) oder MasterData (2); Unknown (0) wird beim Erstellen der Nachricht abgewiesen
startDateDateTimeJa²Beginn der Zustimmung. Standard: heute
consentIdstringJa²Id einer bestehenden Zustimmung; wird nur bei Anfragen von Stammdaten gesendet
endDateDateTimeNeinEnde der Zustimmung
intervalenumNeinMessintervall für Messdaten: QuarterHourly (0, Standard), Hourly (1), Daily (2), Variable (3)
sectorenumNeinElectricity (1) oder Gas (2); andere Werte werden als Strom gesendet

² Mindestens eines von startDate und consentId muss gesetzt sein.

{
"sender": "EP100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"dataType": "MeteringData",
"interval": "QuarterHourly",
"purpose": "Energy monitoring",
"startDate": "2026-11-01T00:00:00",
"endDate": "2027-10-31T00:00:00"
}

Nachricht: CMRequest 01.30, Nachrichtencode ANFORDERUNG_CCMO mit einer erzeugten CMRequestId. Bei Messdaten werden das Messintervall (QH, H, D, V), der Übertragungszyklus D und der Zweck gesendet. Antworten: ANTWORT_CCMO, ZUSTIMMUNG_CCMO / ABLEHNUNG_CCMO.

Vollständiges Beispiel einer Pipeline-Konfiguration​

Dieses Beispiel empfängt einen Prozess über HTTP, startet ihn (oder prüft ihn nur, wenn er geplant ist) und gibt das Ergebnis zurück.

triggers:
- type: FromHttpRequest@1
path: /startProcess
method: POST
transformations:
- type: EdaStartProcess@1
path: $.body.requestData
targetPath: $.request
- type: If@1
description: request successful
path: $.request.IsSuccess
operator: Equals
value: true
valueType: Boolean
transformations:
- type: Logger@1
message: EDA process started or planned

Dieses zweite Beispiel startet fällige geplante Prozesse. Die Abfrage liefert den Prozessnamen in Values[0] und die gespeicherten Prozessdaten in Values[2].

triggers:
- type: FromPolling@1
interval: 00:10:00
transformations:
- type: DateTime@1
operation: Now
targetPath: $.Now
- type: GetQueryById@1
targetPath: $.query
queryRtId: 000000000000000000000003 # planned processes
fieldFilters:
- attributePath: startTime
operator: LessEqualThan
comparisonValuePath: $.Now
- type: ForEach@1
iterationPath: $.query.Rows
maxDegreeOfParallelism: 1
transformations:
- type: SetPrimitiveValue@1
valueType: String
targetPath: $.process.processName
valuePath: $.key.Values[0]
- type: EdaStartProcess@1
path: $.process
processDataPath: $.key.Values[2]
targetPath: $.request