首页 > 解决方案 > 如何在一个函数节点中拆分多个 msg.payloads,节点红色

问题描述

我有一个问题要弄清楚如何在 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"

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

在此处输入图像描述

标签: javascriptnode-red

解决方案


鉴于要处理的信息量有限,我会猜测一下。

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

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

在此处输入图像描述

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


推荐阅读