Again I need some help. I hope it will be easy for you.
I want to monitor a small PV-plant. Now I am so far, that I can get allso the current datas (energy, power).
Actually my plan is to store also the total energy produced.
InfluxDB-In-Node:
SELECT gesamtverbrauch_kWh FROM fg_b17_balkonsolar ORDER BY time DESC LIMIT 1
function:
flow.set("gesamtverbrauch_db", msg.payload.gesamtverbrauch_kWh);
if I show the debug, it says NaN, but also this did not help instead
flow.set("gesamtverbrauch_db", msg.payload.gesamtverbrauch_kWh);
This is my main function to get the data and make it ready for influxDB.
var output = msg.payload.svalue.split(";");
var i=2000;
var momentanleistung;
var gesamtverbrauch = flow.get("gesamtverbrauch_db"); //wird über flow-Variable geholt
if(output[0]==0) {
momentanleistung=0;
} else {
momentanleistung = 0.5*3600/(output[2]/1000);
}
var energieverbrauch = output[0]*1000/i;
gesamtverbrauch = gesamtverbrauch + energieverbrauch/1000;
if(msg.payload.idx==1) { //Leistungszähler=1, BME=2
msg.payload = {
//Leistungszähler 0=differenz, 1=total, 2=zeit
energieverbrauch_wh: energieverbrauch,
momentanleistung_w: momentanleistung,
gesamtverbrauch_kWh:gesamtverbrauch
}
return msg;
}
When I run it with the flow.get and flow.set(), then the flow does not work any more.
Or is there any easier way, how to get the current total energy from Influx-DB to my main function, so that I can calculate with it?
I use the MQTT-Out as debug node, as the Node-Red dubug-node does not work...
First I get the result from the InfluxDB-Request, which seems to work. In influx the field gesamtverbrauch_kWh in float.
Then I tried to convert to json first, but it did not help. [{"time":"2022-12-24T07:46:00.982Z","gesamtverbrauch_kWh":0}]
In the function I just try to make some calculations, but the result is a NaN.
flow.set("gesamtverbrauch_db", msg.payload.gesamtverbrauch_kWh);
msg.payload = Number(msg.payload.gesamtverbrauch_kWh) + 3;
return msg;
NaN
Somhow, the gesamtverbrauch_kWh seems not to be a Number, even though i tried to convert with Number().
What am I doing wrong here. I think this explains also, why it does not work when I set and get the variable and want to calculate after the get command.
The number that I get from the database is just the energy input in the public net. As I am still trying it is still 0. And the number can only grow if I get the old number and add the actual value and save the new accumulated value again.
I imagine the debug node is the most used node in the node red palette. If it is not working for you then I think there is something very odd going on that you need to track down. You will find it very hard work developing node-red flows without the debug node.
When you send things to MQTT it will just send the characters for the thing you send it - so there is no way of knowing if it should be represent a number or not so it will come back as a string. You would be much better off using the debug node to debug this... if you don't think that is working please share your thoughts so we can try to help.
Hey,
it was in fact a array and bakmans solution helped me out.
There is some problem with the debug node and node red generally, but I do not know where it comes from. Maybe the server is just too weak...But this happened also to other users before. Now it works