That worked perfectly. Thanks for the fast response. But now my functions not working properly.
I will explain my goal first:
I want to grab the meter reading I receive in the morning and write that value to the database. Then the values should be updated, but a difference should always be calculated to calculate the daily consumption of electricity.
I have developed the following 3 scripts to achieve this.
Script 1:
// Greifen Sie auf msg.payload zu, um den Wert zu extrahieren
var currentCounter = parseFloat(msg.payload);
msg.currentCounter = currentCounter;
return msg;
Script 2:
var currentDate = new Date().toISOString().split('T')[0]; // Das aktuelle Datum ohne Uhrzeit extrahieren
// Überprüfen Sie, ob bereits ein erster Zählerstand für heute im Kontext gespeichert ist
if (context.get('firstCounter_' + currentDate) === undefined) {
// Wenn nicht, speichern Sie den aktuellen Zählerstand als ersten Zählerstand des Tages
context.set('firstCounter_' + currentDate, msg.payload);
}
return msg;
Script 3:
// Greifen Sie auf msg.payload zu, um den Wert zu extrahieren
var currentCounter = parseFloat(msg.payload);
// Speichern Sie den aktuellen Zählerstand in einer Flussvariable (flow context)
var previousCounter = flow.get("previousCounter") || 0;
// Berechnen Sie den Tagesverbrauch
var dailyConsumption = currentCounter - previousCounter;
// Speichern Sie den aktuellen Zählerstand als vorherigen Zählerstand für die nächste Berechnung
flow.set("previousCounter", currentCounter);
// Fügen Sie den Tagesverbrauch zur Nachricht hinzu, wenn gewünscht
msg.dailyConsumption = dailyConsumption;
return msg;
Unfortunately, my plan doesn't seem to be that easy to implement or I think just too hard.
Can you help me here as well? I'm an absolute beginner with NodeRed (since 2 days in use) because I wanted to try to make my PV yield or power consumption visible by means of Grafana.
Regards,
Tobias