Einleitung
Innerhalb von Node-Red sind die ebenen als einzelne Flows angelegt und fassen Schritte im Energiemanagement zusammen. Jede Ebene bietet die Möglichkeit eine eigene Erzeugung und Verbrauch zu definieren, welche zur Bildung einer Bilanz genutzt wird.
Flow Daten einer Ebene
Die einzelnen Komponenten (zum Beispiel Stromzähler) fügen ihren individuellen Wert in Watt zur entsprechenden Variable des Flows hinzu.
// msg.payload = msg.payload;
const subSUM='Consumption';
let sum = flow.get(subSUM) * 1;
if(isNaN(sum)) sum = 0;
let previous = context.get("previous") * 1;
if(isNaN(previous)) previous = 0;
if(flow.get("SaldoID") != context.get("SaldoID")) {
context.set("SaldoID",flow.get("SaldoID"));
} else {
sum -= previous;
}
sum += msg.payload;
context.set("previous",msg.payload);
flow.set(subSUM,sum);
node.status({text:msg.payload +" W"});
return msg;
Damit auch bei asynchronem Empfang der Daten immer eine Bilanz gebildet werden kann, wird mit einer SaldoId
gearbeitet, welche als Indikator für die einzelnen Komponenten dient, ob der Leistungswert bereits zur Summe (Consumption
oder Production
) hinzugefügt wurde.
In der Referenzimplementierung merkt sich der Node im eigenen Context, welche Leistung zur Summe hinzugefügt wurde (Variable previous
) sowie die SaldoId
. Sollte beim folgenden Messwert die SaldoId
gleich sein, so wird der vorherigen Messung zunächst von der Summe abgezogen (Zeile 14) und im Anschluss der aktuelle Wert hinzugefügt (Zeile 16).
No Comments