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

这把我C 2021-01-04 10:25:54 21303

在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

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


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

debug

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

缺少图片

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

complete

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

缺少图片

catch

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

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

catch节点的设置

status

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

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

该节点的输出信息为

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

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

link out

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

commont

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

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 101 11 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
这把我C
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区