@droneblocks/node-red-dexi
Version:
You want to make sure you don't lose any of your flow development. Make sure to map the host "flows" directory to the container directory as shown below. This will store the flow on your host machine if/when the container is destroyed.
58 lines (47 loc) • 1.57 kB
JavaScript
module.exports = function(RED) {
var ROSLIB = require('roslib');
const Time = require('./Time.js');
function Ros2PublishNode(config) {
RED.nodes.createNode(this,config);
var node = this;
node.server = RED.nodes.getNode(config.server);
if (!node.server || !node.server.ros){
return;
}
var msgtype = config.messagetype
var topic = new ROSLIB.Topic({
name : config.topicname,
messageType : msgtype
});
node.on('input', (msg) => {
topic.ros = node.server.ros;
// var pubslishMsg = new ROSLIB.Message({data: msg.payload});
var new_payload = msg.payload;
// Insert timestamp in header
if (config.stampheader){
const now = Time.now();
new_payload = addHeader(new_payload, now);
}
topic.publish(new_payload);
// Pass to the next node
node.send(msg);
});
function addHeader(payload_, now_)
{
if ('header' in payload_){
payload_.header.stamp = now_;
}
else{
node.error('Cannot add stamp to header, because incoming msg does not contain a header!');
}
return payload_;
}
node.server.on('ros connected', () => {
node.status({fill:"green", shape:"dot", text:"connected"});
});
node.server.on('ros error', () => {
node.status({fill:"red",shape:"dot",text:"error"});
});
}
RED.nodes.registerType("ros2-publish", Ros2PublishNode);
};