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
| Property | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
path | string | Nein | $ | Pfad zur EdaProcessInfo mit dem zu startenden Prozess |
targetPath | string | Nein | $ | Pfad, an den das EdaClientResult geschrieben wird |
processDataPath | string | Nein | - | Pfad zu den Prozessdaten eines geplanten Prozesses; ist er gesetzt, wird der Prozess jetzt gestartet (siehe Geplante Prozesse) |
host | string | Nein | Adapter-Konfiguration | Überschreibt Host der Adapter-Konfiguration |
user | string | Nein | Adapter-Konfiguration | Überschreibt User der Adapter-Konfiguration |
password | string | Nein | Adapter-Konfiguration | Überschreibt Password der Adapter-Konfiguration |
isSimulationMode | bool | Nein | Adapter-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:
| Property | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
processName | string | Ja | Name des EDA-Prozesses, siehe Prozesse |
comment | string | Nein | Freitext; wird vom Node nicht verwendet, steht aber der Pipeline zur Verfügung (z. B. zum Speichern beim Prozess) |
startDate | DateTime | Nein | Geplanter Start des Prozesses. Ist er gesetzt (und processDataPath nicht konfiguriert), wird der Prozess nur geprüft und nicht gesendet |
processData | object | Ja¹ | 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
pathnichts gefunden, tut der Node nichts und die Pipeline läuft weiter. - Ist
processNameleer oder fehlen die Prozessdaten, schlägt der Node mitInvalid input datafehl. - Ein unbekannter
processNamelässt den Node mitProcess <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:
| Fall | Prozessdaten aus | Verhalten |
|---|---|---|
Neuer Prozess, startDate nicht gesetzt | processData | Geprüft, Nachricht erstellt und sofort gesendet |
Neuer Prozess, startDate gesetzt | processData | Geplant: 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) | processDataPath | Geprü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.
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.
| Property | Beschreibung |
|---|---|
StatusCode | HTTP-Statuscode des HttpAdapters als Zahl (z. B. 200); 200 bei einem geplanten Prozess |
Headers | Beim Senden nicht gesetzt (null) |
Content | Antwortinhalt des HttpAdapters |
Message | Die 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 |
StartDate | Geplantes Startdatum; nur bei einem geplanten Prozess gesetzt |
IsSuccess | true, wenn StatusCode ein 2xx-Statuscode ist |
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:
| Property | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
sender | string | Ja | Marktpartner-Id des Absenders, z. B. der Energiegemeinschaft oder des Dienstleisters |
receiver | string | Ja | Marktpartner-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.
| Property | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
meteringPoint | string | Ja | Zählpunktnummer |
from | DateTime | Ja | Beginn des angeforderten Zeitraums; muss vor to liegen |
to | DateTime | Ja | Ende des angeforderten Zeitraums |
sector | enum | Nein | Electricity (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.
| Property | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
energyCommunityId | string | Ja | Id der Energiegemeinschaft |
from | DateTime | Ja | Beginn des angeforderten Zeitraums |
to | DateTime | Ja | Ende 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.
| Property | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
serviceProviderId | string | Ja | Marktpartner-Id des Dienstleisters |
from | DateTime | Ja | Beginn des angeforderten Zeitraums; muss vor to liegen |
to | DateTime | Ja | Ende des angeforderten Zeitraums |
sector | enum | Nein | Electricity (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.
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).
| Property | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
meteringPoint | string | Ja | Zählpunktnummer |
energyCommunityId | string | Ja | Id der Energiegemeinschaft |
partitionFactor | int | Nein | Teilnahmefaktor in Prozent (der Node akzeptiert 0–255) |
energyDirection | enum | Ja | Consumption (1) oder Production (2); Unknown (0) wird beim Erstellen der Nachricht abgewiesen |
startDate | DateTime | Nein | Datum 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).
| Property | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
meteringPoint | string | Ja | Zählpunktnummer |
energyCommunityId | string | Ja | Id der Energiegemeinschaft |
partitionFactor | int | Ja | Neuer Teilnahmefaktor in Prozent, von 1 bis 100 |
startDate | DateTime | Ja | Datum, ab dem der neue Faktor gilt; muss nach heute liegen |
endDate | DateTime | Nein | Ende der Gültigkeit; muss nach startDate liegen. Ohne Angabe gilt die Änderung unbefristet |
energyDirection | enum | Ja | Consumption (1) oder Production (2); Unknown (0) wird beim Erstellen der Nachricht abgewiesen |
dataType | string | Ja | Datentyp der Anfrage (MPTimeData/DataType, z. B. EnergyCommunityRegistration), höchstens 30 Zeichen |
transmissionCycle | string | Nein | Übertragungszyklus der Verbrauchsdaten: D, M oder V |
purpose | string | Nein | Zweck der Datenfreigabe, höchstens 100 Zeichen |
techCode | string | Nein | Technologiecode gemäß AIB EECS Fact Sheet 5, höchstens 10 Zeichen |
fuelCode | string | Nein | Brennstoffcode 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.
| Property | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
meteringPoint | string | Ja | Zählpunktnummer |
consentId | string | Ja | Id der aufzuhebenden Zustimmung |
endDate | DateTime | Nein | Ende der Zustimmung; darf nicht in der Vergangenheit liegen. Standard: morgen |
energyCommunityId | string | Nein | Id der Energiegemeinschaft; nicht Teil der gesendeten Nachricht |
sector | enum | Nein | Electricity (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.
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).
| Property | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
meteringPoint | string | Ja | Zählpunktnummer |
purpose | string | Ja | Zweck der Datenfreigabe; wird bei Anfragen von Messdaten gesendet |
dataType | enum | Ja | MeteringData (1) oder MasterData (2); Unknown (0) wird beim Erstellen der Nachricht abgewiesen |
startDate | DateTime | Ja² | Beginn der Zustimmung. Standard: heute |
consentId | string | Ja² | Id einer bestehenden Zustimmung; wird nur bei Anfragen von Stammdaten gesendet |
endDate | DateTime | Nein | Ende der Zustimmung |
interval | enum | Nein | Messintervall für Messdaten: QuarterHourly (0, Standard), Hourly (1), Daily (2), Variable (3) |
sector | enum | Nein | Electricity (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