首页 > 技术知识 > 正文

在Node-RED中默认安装有42个节点,分为6大类,分别是

公共节点 用于调试,注入消息,跨流操作 功能节点 逻辑判断,函数处理,命令行执行, 网络节点 使用各种通信,http,websocket,tcp,udp 序列节点 对消息体进行格式化,分割,排序 解析节点 解析html,csv,json,xml,yaml 存储节点 读取,写入文件,监听文件目录

有些节点只有出口没有入口,有些节点有入口却没有出口,还有一些节点既有出口也有入口,也有一个节点既没有入口也没有出口。处理不同的数据,编写复杂的逻辑需要使用不同的节点. 每一个节点的配置区域底部都有一个有效单选,可以将该节点设置为失效或有效。 这次我们一起来研究一下公共节点这一模块的所有节点

该模块共有8个节点分别是

inject 手动或定期地将消息注入流中。 debug 打印流中的数据 complete 当另一个节点完成对消息的处理时触发流 catch 捕获在同一个流中的所有或指定节点引发的错误。 status 获取在同一流所有节点或指定节点的状态消息 link in 在流之间创建虚拟连线。 link out 在流之间创建虚拟连线。 comment 可用于向流添加注释的节点

让我们来一个一个地分析如何使用这些节点完成Iot中流的处理。

inject

该节点的作用是手动或定期得将消息注入流中,可以是文本,变量,表达式,时间戳等。该节点前面没有可以流入的节点,消息体只能往后流。

物联网平台Node-RED系列(三):Node-RED公共节点的使用 点击节点的前部分可以触发该节点,也可以设置该节点为循环触发。 该节点单独使用没有任何意义,我可以和debug节点放到一起来进行演示。 编写一个inject节点和debug节点,将它们连接在首尾相连.inject在前,debug在后,部署之后,点击inject节点的头部,就能在调试面板里看到被注入到消息体的内容了

物联网平台Node-RED系列(三):Node-RED公共节点的使用1

debug

该节点用于调试流中的消息体,只能用于打印,无法看到真正的堆栈,使用方法是,将该节点连接到一个可输出的节点后,配置要打印的参数,以msg开头,默认打印msg.payload。也可以打印消息体的全部内容,只需要在配置该节点时选择,与调试输入相同。此外还要注意要勾选控制台选项,只有这样才能在调试面板打印出消息体。

缺少图片

由于是web拖拽式来创建流,不是通过IDE编程的方式,所有无法通过步进的方式来调试程序。

complete

当另一个节点完成对消息的处理时会触发该节点。可以配置用于监控那些节点。没有输入,只需要将该节点拖拽到流中即可,不需要与现有流中的其他节点连线。比如我们要在发送完邮件后触发一些逻辑,就可以使用这个节点来监听发送邮件的节点。并不是所有的节点都可以被监听。 如下图我们配置complete监听inject节点的完成,触发后在debug节点打印由complete触发的调试流程

缺少图片物联网平台Node-RED系列(三):Node-RED公共节点的使用2

catch

catch节点是为了处理流中报错的节点,有时程序并不像我们想的那样健壮,也会有很多意外情况发生,这时候我们就可以使用catch节点来监听这些节点的错误信息,进行上报,或者给出友好提示。可以配置捕获那些节点的错误信息。 输出的信息为

error对象 类型 描述 error.message 字符串 错误消息。 error.source.id 字符串 引发错误的节点的ID。 error.source.type 字符串 引发错误的节点的类型。 error.source.name 字符串 引发错误的节点的名称。(如果已设置)

catch节点的设置 物联网平台Node-RED系列(三):Node-RED公共节点的使用3

status

status是用于监控某些节点的状态变化,比如http节点,tcp,udp节点,只有节点存在状态的改变,被status节点监听之后才会被触发,而想inject,debug节点是不存在状态改变的,所以即使被status监听了也不会被触发。

下面这个即使使用status监听所有节点的状态改变,但只有http节点触发了。有关http请求节点后面也会讲到。

物联网平台Node-RED系列(三):Node-RED公共节点的使用4

物联网平台Node-RED系列(三):Node-RED公共节点的使用5

该节点的输出信息为

status消息体 类型 描述 status.text 字符串 状态文本。 status.source.type 字符串 报告状态的节点的类型。 status.source.id 字符串 报告状态的节点的ID。 status.source.name 字符串 报告状态的节点的名称(如果已设置)。 link in

link in节点是用于在流之间创建连接,是为了实现将另一个流流入当前的流中,即设置当前流的上游。如果一个流存在link in节点,那么该流会被流入,对拥有 link out的流可见,也可以配置包含link out节点的流 link in 与link out 必须搭配使用, 后者为前者的上级。

link out

将当前流流出,能够配置下一级的流,或节点.只能配置含有link in的节点作为下一级或下游。 用于二个流之间的通信。 如下图

物联网平台Node-RED系列(三):Node-RED公共节点的使用6

物联网平台Node-RED系列(三):Node-RED公共节点的使用7

commont

用于备注当前流。相当于代码中的注释。不会被执行。没有输入也没有输出。

猜你喜欢