Im trying to send the values of a sensor to Grafana via NodeRed with the help of SimpleJSON Plugin.
This is my NodeRed Flow
And my functions are
1st:
tmp = [];
tmp.push(parseFloat(msg.payload));
tmp.push(parseInt(new Date().getTime()));
flow.set('speed', tmp);
node.status({'text': msg.payload});
return msg;
2nd:
tmp = [];
for(var id in msg.payload.targets){
var tmp_target = {};
tmp_target['target'] = msg.payload.targets[id].target;
tmp_target['datapoints'] = [flow.get('speed')];
out.push(tmp_target);
}
msg.payload = JSON.stringify(out);
return msg;
I followed this guy's video
Video
On Grafana I get this error
Has anyone ever tried this ?
1 Like
What comes out of the 2 debugs? (I.e which http request is being executed? I ask because the top one doesn't appear to return any payload)
debugs dont seem to work. Nothing displaying
Then it's not hitting your endpoint.
In your browser, try accessing the 2 endpoints. You should see something in the debug - that's what anyone calling them would get.
From the "GET" endpoint
when Im trying to accessing POST endpoint it doesnt show anything.
Im really confused.
You'll need something like "postman" to test it.
But as you can see, your endpoint works so the other application isn't hitting that GET endpoint.
Go through the tutorial again incase you missed something perhaps?
Made a GET request with speed. I got the payload
when im tryin to post it says that out is not defined even though it is <- FIXED THAT MY MISTAKE
The payload of the "posted" message payload is empty
Also I cannot understand why Grafana gives me Bad Request
Use debug nodes to see what goes in to & out of the function before the POSTs http out
node - that will tell you why payload is empty.
But as you can see - end points do work (since you see debug messages)
As for why grafana isnt hitting your end points - you'll likely have to ask on stackexchange or a grafana forum i suspect.
The error says your second function is failing. You define an array tmo, but push to nonexistent out. Hence the out is not defined error. Either rename tmp or use tmp.
1 Like
I fixed this, I used out= as array
Assuming you are using Grafana v6.4+, you probably want to use this rather than the simpleJson addon:
how this works? I mean what modification should I do to the message.
Don't know, I've not yet had a chance to play.
I saw the manual is kind the same as the SimpleJSON. The thing is that the Grafana cannot connect to the simplejson
Grafana can connect, just tested it, however the documentation states:
Your backend needs to implement 4 urls:
/
should return 200 ok. Used for "Test connection" on the datasource config page.
/search
used by the find metric options on the query tab in panels.
/query
should return metrics based on input.
/annotations
should return annotations.
/tag-keys
should return tag keys for ad hoc filters.
/tag-values
should return tag values for ad hoc filters.
In order to make this work, your http-response node requires a header to be set to json.
Open a new tab in your browser and open the url, what do you see ?
How do I set headers on nodes
doubleclick the http-response node, click the "add" button at the bottom.
and make sure the url actually produces json out by opening a new tab and open the url.
Yeah I did that sorry. It cannot connect to grafana bad gateway.
As stated before: what do you see when you open the url in a new tab