Node-Red的子流程,就好比一段代码里的公共模块,你可以在任意的流程中使用这段公共模块从而实现复用。
本文是基于Node-Red 3.0.0.Beta版本来描述的,通过下面一个例子来说明。
例子目标
(1)创建一个子流程,该子流程的功能是将一个输入的字符串转换为小写并通过MQTT发送到指定的主题里。
(2)创建2个Inject来模拟输入字符串,并调用上面的子流程,分别将其小写发布到A主题和B主题。
1、创建子流程
(1) 新建子流程
新建子流程后,默认为Subflow 1界面,我们在这可以改名为“发布消息到MQTT指定主题”。
(2)配置输入参数
因为我们的目标是需要处理输入的字符串,所以是需要输入数据流的,因此接下来就是选择有1个输入,选择后会出现一个input操作如下。
双击input,可以看到如下页面,其中环境变量你可以理解为配置输入参数,添加了环境变量,外部调用时才可以带入这个参数值。我们在这添加一个叫“TOPIC”的环境变量。
(3)编辑模块功能
拉一个function节点来实现小写转换
拉取1个MQTT OUT节点,设置好broker。
注意:主题需要采用环境变量${TOPIC}的方式来写,这个TOPIC就是我们刚才双击input后创建的。
然后连起来,子流程的最后效果如下
2、调用子流程
新建一个流程,拉一个Inject来模拟输入一个字符串,比如我们模拟输入一个“ABCD”。
把我们刚创建的“发布消息到MQTT指定主题”子流程拉进来, 并配置下TOPIC,我们在这设为test
连接好节点后,部署下,然后可以点击Inject触发下测试。
测试效果(我使用的是MQTTX)