如何在功能节点中拆分多个msg.payload,节点红色

时间:2018-06-27 12:21:05

标签: javascript node-red

我有一个问题要弄清楚如何在httpin节点中(传入多个传感器有效载荷。)如何将不同的msg有效载荷分成不同的流以对其进行解码。

我的一个传感器工作正常,但是当我添加一个传感器时,不同的模型在httpin节点上的处理流程相同。

我需要将流切换,拆分或编码为另一个流,以便我可以解码第二个流中的值。


从http传入的流是:您可以看到它在同一节点上即将到来的2个传感器有效载荷

消息1:

2018-06-28 07:48:02node: 247e95ef.12b1ca
msg.payload : Object
object
DevEUI_uplink: object
Time: "2018-06-28T07:48:03.349+02:00"
DevEUI: "A81758FFFE03465E"
FPort: "5"
FCntUp: "1601"
ADRbit: "1"
MType: "2"
FCntDn: "1118"
payload_hex: "0100ed02330400d60501070df2"
mic_hex: "9071659a"
Lrcid: "00000201"
LrrRSSI: "-98.000000"
LrrSNR: "15.000000"
SpFact: "12"
SubBand: "G2"
Channel: "LC8"
DevLrrCnt: "5"
Lrrid: "00000543"
Late: "0"
LrrLAT: "56.031479"
LrrLON: "12.704159"
Lrrs: object
CustomerID: "100007213"
CustomerData: object
ModelCfg: "0"
DevAddr: "E0155F2E"

消息2:

2018-06-28 07:48:45node: 247e95ef.12b1ca
msg.payload : Object
object
DevEUI_uplink: object
Time: "2018-06-28T07:48:46.963+02:00"
DevEUI: "0018B20000001319"
FPort: "1"
FCntUp: "1"
ADRbit: "1"
MType: "4"
FCntDn: "1"
payload_hex: "8e1900000ecd"
mic_hex: "5d7ba201"
Lrcid: "00000201"
LrrRSSI: "-99.000000"
LrrSNR: "12.000000"
SpFact: "12"
SubBand: "G2"
Channel: "LC4"
DevLrrCnt: "7"
Lrrid: "00000543"
Late: "0"
LrrLAT: "56.031479"
LrrLON: "12.704159"
Lrrs: object
CustomerID: "100007213"
CustomerData: object
ModelCfg: "0"
DevAddr: "E014801D"

我的问题是,我该如何初始化第二个流并将其发送到第二个红色流节点(拆分数据)

enter image description here

1 个答案:

答案 0 :(得分:0)

鉴于工作量有限,我会猜测。

根据我们在传入消息中的可用数据中看到的,将一条消息与另一条消息区分开的唯一方法是msg.payload.DevAddr属性。假设这是唯一的,并且您知道每个设备是哪种类型的传感器,则可以在HTTP输入之后放置一个交换节点(此外,您确实需要在流中添加HTTP-Response节点以正确结束传入请求)。 / p>

交换节点将有2个输出并测试msg.payload.DevAddr属性,以确定将消息转发到哪个输出。

enter image description here

然后将2种不同的解析流连接到适当的开关输出。