Zum Hauptinhalt springen

SplitConsumptionRecord@1

Der Node SplitConsumptionRecord@1 teilt Verbrauchsdaten-Nachrichten (DATEN_CRMSG), die mehr als maxHours umfassen, in mehrere kleinere Nachrichten mit jeweils höchstens maxHours. Er arbeitet auf dem EdaMessage-Array, das EdaReceiver@1 erzeugt, und wird typischerweise direkt danach eingesetzt, damit lange Lieferungen (z. B. ein Monat Viertelstundenwerte) in handhabbaren Teilen verarbeitet werden.

Adapter-Voraussetzungen​

Node-Konfiguration​

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

transformations:
- type: SplitConsumptionRecord@1
path: $.messages # array of EdaMessage objects
targetPath: $.messages
maxHours: 24 # maximum duration of one chunk in hours (default: 24)
PropertyTypErforderlichStandardBeschreibung
pathstringJa¹$Pfad zum Array der EdaMessage-Objekte
targetPathstringNein$Pfad, an den das resultierende Nachrichten-Array geschrieben wird
maxHoursintNein24Maximale Anzahl Stunden je Abschnitt; muss größer als 0 sein

¹ Der Node schlägt fehl, wenn path nicht gesetzt ist (null). Ist maxHours 0 oder negativ, schlägt der Node mit MaxHours must be greater than 0. fehl.

Verhalten​

  • Nachrichten, die keine DATEN_CRMSG sind, keinen RawContent haben oder nicht deserialisiert werden können, werden unverändert durchgereicht. Wird unter path kein Array gefunden, wird nichts geschrieben.
  • Eine DATEN_CRMSG wird nur geteilt, wenn einer ihrer Energy-Blöcke mehr als maxHours umfasst. Der Gesamtzeitraum (frühester Beginn bis spätestes Ende aller Energy-Blöcke) wird in Abschnitte zu maxHours geteilt, beginnend beim gelieferten Periodenbeginn (ohne Ausrichtung auf eine Zeitzone). Eine Energieposition gehört zu dem Abschnitt, in dem ihr DTF (von) liegt.
  • Jeder Abschnitt wird zu einer neuen EdaMessage mit eigenem RawContent (neu serialisiertes XML). Ihre MessageId (in den Headern und im XML) erhält ein Suffix _001, _002, ...; die ConversationId bleibt gleich. Abschnitte ohne Energiepositionen werden übersprungen; bleibt kein Abschnitt übrig, wird die ursprüngliche Nachricht behalten.
  • Wie bei EdaReceiver@1 sind die Energiedaten nur in RawContent enthalten, nicht in Message.

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

Vollständiges Beispiel einer Pipeline-Konfiguration​

triggers:
- type: FromPolling@1
interval: 00:01:00
transformations:
- type: EdaReceiver@1
targetPath: $.messages
- type: SplitConsumptionRecord@1
path: $.messages
targetPath: $.messages
maxHours: 24