Hi everyone,
Still being quite new ( with node-red, node.js and javascript in general) so understanding code online is not easy; I was therefore hoping to find some help over her.
I wrote some code in c++, that I managed to have it called through node.js
All good so far, but I am not really sure how to proceed next..
I do have my binding.gyp file ( where all my functions and header files are called), main.js ( and all the ones created when building my program ), ending up with a main.js file that looks like this :
Is it that you are more familiar with C++ so avoiding learning how to do this stuff natively in node-red?
TBH, unless you are doing some heavy computation or something not possible in nodejs then I would suggest you are missing out on the flexibility / dynamic programmable runtime aspect of node-red.
Well, there is a way of requiring a a non node-red js module (see here) then you can use a function node to do the require and call your code.
However, there are other options. for example...
if you built MQTT into your C++ application, you can simply use MQTT for the transfer of data. And if you send your data out in JSON format, it is a really simple task of accessing your property values without resorting to string splitting etc.
(or) you could write a custom contrib node-red node so all users could benefit from your works & install it from the palette
As this is a JS environment, you would be far better off returning a JSON string & using the JSON node to convert that back into an object with nice property names were you could simple access msg.payload.temperature and msg.payload.humidity
EDIT:
My apologies, I see you are actually trying to create a node. (should read full message before posting).
So to answer your question "with my C++ program returning a floating number( I d like to update it to return an array since my sensor returns both temperature and humidity );" - JSON is the way to go. Then in your custom node, simple do something like msg.payload = JSON.parse(sensor.calc()) to convert the JSON sent from your C++ to a native object.
EDIT2:
is there an absolute need to use C++ - is it not possible to use nodejs under the hood?
hi steve, thnx for the reply,
Yes, C++ is by far the language I'm the most familiar with, especially for the I2C readings in Linux part ( want to run my code on a BBB ), and although I'm trying to learn how to do it natively, I d feel bad having to start all over again, and will therefore try to do that as a next step once I have everything working
Once everything is working, I'll gladly share my nodes, together with my findings because I don't think(at least I hope) that I 'm the only one struggling with it.