Einleitung

ebenen_in_nodered.png

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

ebene_0_flowdaten.png

Die einzelnen Komponenten (zum Beispiel Stromzähler) fügen ihren individuellen Wert in Watt zur entsprechenden Variable des Flows hinzu. 

wirkleistungs_knoten.png

// 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).

 

 


Revision #2
Created Sat, Jul 18, 2020 12:30 AM by Thorsten Zoerner
Updated Sat, Jul 18, 2020 1:17 AM by Thorsten Zoerner