我正在尝试node-red,将其连接到我的MQTT代理。

输入(侦听主题)工作正常。有效负载会触发一些触发器。在下面的示例中,这将是对Web服务的查询:设置它吗?

文档在输入部分中提到:缓冲区也可以
发布。


及更高版本


payload用作已发布消息的有效负载。如果它
包含对象,则会在发送
之前将其转换为JSON字符串。如果它包含二进制缓冲区,则消息将按原样发布。


我试图在节点设置->输入中添加msg.payload{msg: {payload: 'on'}},但未携带有效负载到MQTT,如何处理传入的{payload: 'on'}



#1 楼

有效负载来自传入的消息。在MQTT-out节点中定义静态有效载荷是没有意义的。

如果您发布了一个屏幕快照,它将获取来自node-settings节点的msg.payload输出,这将是更容易识别哪个输出是哪个输出。 HTTP POST的正文。如果要添加要发布的静态有效负载,那么最简单的方法是在http-inchange节点之间添加一个http-in节点。

例如将有效负载设置为“ foo”



您可以通过从mqtt-out字段左端的下拉列表中选择类型来设置JSON对象。 />

评论


抱歉,我不太了解。我的示例是有一个触发器(一个http调用,但可能是任何东西),它将触发一条消息发送到MQTT(通过MQTT输出节点(连接到MQTT代理并发布消息))。我需要将静态有效负载发送到MQTT,这不是通过MQTT输出节点完成的吗?

– WoJ
18-3-16在20:33



好的,我知道了(以某种方式)-我需要添加一个更改节点以告知mqtt-out有关其有效负载的信息吗? (如果这样,很奇怪,有效负载未直接在mqtt-out节点上定义)

– WoJ
18 Mar 16 '18在20:35



不,该节点希望传递给负载以进行发布,而不仅仅是一次又一次地发布相同的消息。大多数(所有)Node-RED输出节点都以这种方式工作

– hardillb
18 Mar 16 '18在20:35



谢谢-我了解。静态有效负载对交换机有意义,我认为每个交换机将有一个MQTT输出。如果我理解正确,我将为所有交换机安装一个,并在上游定义一个有效负载(=取决于导致消息的路径)

– WoJ
18-3-16在20:37



您还可以在mqtt-out节点中将主题留空,并通过传入的msg传递主题

– hardillb
18年3月16日在20:38