I intend to monitor data from a PLC in the form of a bar graph. I am able to get the JSON data, but I'm new to node red and I'm having trouble extracting data from JSON in msg.payload.
At the moment, I am trying to display only 'value' of 500.
I've been looking though these forums and the documentation and so far, I have been able to show 'timestamp', and all the content of 'values', but I can't figure out a way to display only 'value'.
This is what I have so far in my function:
var obj = JSON.parse(msg.payload); // Stores JSON text as an object.
var valuee = JSON.stringify(obj.values);
msg.payload = valuee;
return msg;
Sorry if the answer is simple, I'm not very familiar with node-red yet, so if somebody could help me out, I would be grateful. Thanks!
You don't say where you are getting the data from.
If it is a JSON string then you can convert it to a javascript object ( which is what you manipulate in Node-RED using the JSON node (or the first line of your function)
But often the "input" nodes are sensible enough to output a javascript object for you.
Add a debug and you should see it will say if it is a string or an object.
I'm not sure how to explain...I'm using something called LoopEdge, I connected my PLC through that, and I have a datahub, which is where the data is coming from.
Here is my flow, if it helps explain at all.
Thank you for that link, I'll read it and try to do what you suggested.
The thing that catches a lot of people out is the fact that the inner values object is wrapped in an array which you have to deal with ([0]) before you can access the data.
I'm using something called LoopEdge with LoopFlows. Inside LoopFlows there is a way to add the node-red library. I guess this function node is part of LoopFlows rather than node-RED, but I believe (and hope) it works in the same way. Maybe I'm totally wrong... (I was suddenly given a project and I don't really have any idea about LoopEdge or node-RED I'm trying to learn but I'm limited for time, so I appreciate this forum...)