CreateMeteringPointUpdate@1
Der Node CreateMeteringPointUpdate@1 vergleicht einen von EDA gemeldeten Zählpunkt mit den Zählpunkt-Entitäten, die bereits in der Runtime existieren, und entscheidet, ob ein neuer Zählpunkt angelegt oder welche bestehende Entität aktualisiert werden muss. Das Ergebnis ist eine Liste von MeteringPointUpdateInfo-Objekten, aus denen ein nachfolgender CreateUpdateInfo@1 die eigentlichen Entitäts-Updates erstellt.
Adapter-Voraussetzungen
Node-Konfiguration
Zu den Feldern path, targetPath, targetValueWriteMode und targetValueKind siehe Überblick.
transformations:
- type: CreateMeteringPointUpdate@1
path: $.key # metering point reported by EDA (MeteringPointInfo)
consumerPath: $.key.Consumer[0] # existing consumer metering point entity, if any
producerPath: $.key.Producer[0] # existing producer metering point entity, if any
edaMeteringPointPath: $.key.EdaMeteringPoint[0] # optional: existing EDA metering point entity
targetPath: $.meteringPointUpdates
| Property | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
path | string | Nein | $ | Pfad zum von EDA gemeldeten Zählpunkt (MeteringPointInfo, z. B. ein Eintrag von EdaMessageInfo.MeteringPoints) |
consumerPath | string | Ja | - | Pfad zur bestehenden Verbraucher-Zählpunkt-Entität; darf ins Leere zeigen |
producerPath | string | Ja | - | Pfad zur bestehenden Erzeuger-Zählpunkt-Entität; darf ins Leere zeigen |
edaMeteringPointPath | string | Nein | - | Pfad zu einer bestehenden EDA-Zählpunkt-Entität |
targetPath | string | Nein | $ | Pfad, an den die Liste der MeteringPointUpdateInfo-Objekte geschrieben wird |
Verhalten
Wird unter path kein Zählpunkt gefunden, schreibt der Node nichts. Andernfalls wird IsActive auf true gesetzt, wenn ActivatedSince heute oder früher liegt und DeactivatedSince nicht gesetzt ist. Danach gilt:
| Situation | Ergebnis |
|---|---|
| Weder Verbraucher, Erzeuger noch EDA-Zählpunkt existiert | Ein Eintrag ohne RtId: Der Zählpunkt muss angelegt werden |
| Richtung Verbrauch, Verbraucher existiert | Ein Eintrag mit der RtId des Verbrauchers |
| Richtung Verbrauch, nur ein Erzeuger existiert | Ein Eintrag mit der RtId des Erzeugers und HasWrongType: true |
| Richtung Erzeugung, Erzeuger existiert | Ein Eintrag mit der RtId des Erzeugers; ein beim Erzeuger bereits gespeicherter Erzeugungstyp (zweiter Wert der Abfragezeile, Values[1]) bleibt erhalten |
| Richtung Erzeugung, nur ein Verbraucher existiert | Ein Eintrag mit der RtId des Verbrauchers und HasWrongType: true |
| Jeder andere Fall (z. B. Richtung unbekannt oder nur ein EDA-Zählpunkt existiert) | Eine leere Liste |
Die bestehenden Entitäten werden als JSON-Objekte gelesen; der Node verwendet nur ihre RtId (und Values[1] des Erzeugers).
Ausgabe
Eine Liste von MeteringPointUpdateInfo-Objekten. Sie enthalten alle Properties von MeteringPointInfo (siehe CreateMeteringPointData@1) und zusätzlich:
| Property | Beschreibung |
|---|---|
RtId | RtId der zu aktualisierenden Entität, null für einen neuen Zählpunkt |
IsActive | true, wenn ActivatedSince heute oder früher liegt und DeactivatedSince nicht gesetzt ist; ein künftiges Deaktivierungsdatum ergibt false |
HasWrongType | true, wenn die bestehende Entität die andere Energierichtung hat |
Die Konfigurations-Properties sind in der API-Referenz dokumentiert.
Vollständiges Beispiel einer Pipeline-Konfiguration
Dieses Beispiel nimmt die Zählpunkte ausgewerteter ECMPList-Nachrichten, verknüpft sie mit den bestehenden Verbraucher- und Erzeuger-Entitäten und erstellt je Zählpunkt eine Update-Entscheidung.
triggers:
- type: FromPipelineDataEvent@1
transformations:
- type: Flatten@1
path: $.EdaMessages[*].MeteringPoints[*]
targetPath: $.MeteringPoints
- type: Join@1
path: $.MeteringPoints[*]
keyPath: $.MeteringPointNumber
joinPath: $.consumers.Rows[*] # query result with the existing consumer metering points
joinKeyPath: $.Values[0]
itemPath: $.Consumer
- type: Join@1
path: $.MeteringPoints[*]
keyPath: $.MeteringPointNumber
joinPath: $.producers.Rows[*] # query result with the existing producer metering points
joinKeyPath: $.Values[0]
itemPath: $.Producer
- type: ForEach@1
iterationPath: $.MeteringPoints
mergePath: $.update
targetPath: $.MeteringPointUpdates
transformations:
- type: CreateMeteringPointUpdate@1
path: $.key
consumerPath: $.key.Consumer[0]
producerPath: $.key.Producer[0]
targetPath: $.update