节点红输出到CSV

时间:2018-06-25 14:03:45

标签: javascript node.js node-red

我有多个要尝试存储在本地磁盘上的Modbus变量。

enter image description here

我的功能脚本如下:

var msgPortBus,msgStbdBus;
if (msg.topic === 'BusVolts') {
    msgPortBus = { payload: msg.payload.Port.Bus.Volts, };
    msgStbdBus = { payload: msg.payload.STBD.Bus.Volts, };
}
msg.payload = [msgPortBus,msgStbdBus]

return msg;

我认为错误在于上面某个地方的代码中。...两个Modbus节点的主题均为'BusVolts'。

我对一个输入使用了以下代码,它为我提供了时间戳,然后提供了我希望从一个输入获得的数据,但是我不确定如何区分不同的有效负载。

msg.payload = new Date().toString() + 
    "," + msg.payload;
return msg;

先谢谢了。

编辑:错误是“类型错误:无法读取未定义的属性'Bus'”

1 个答案:

答案 0 :(得分:2)

问题是,您假设函数节点运行时它将看到一个组合的msg对象,其中包含来自两个Modbus节点的信息。事实并非如此。

该功能节点将针对来自Modbus节点的每个输出消息分别运行,因此一次仅填充msg.payload.Port.Bus.Voltsmsg.payload.STBD.Bus.Volts中的一个。

如果要在将多个节点的输出合并到功能节点之前对其进行合并,则需要查看将数据存储在Context中还是使用Join节点在处理之前将输出批处理到一个数组中。< / p>