Node-RED的介绍及优点

随着物联网的不断发展,各种物联网相关的技术也在不断发展,开源的平台也有很多,其中就有一个特别优秀的项目,它就是Node-RED,这个项目是由IBM新兴技术服务团队构建的可视化物联网编排工具,可基于浏览器的流程编辑器连接设备、服务器和 API 应用。 这句对于Node-RED的介绍是来自官方的,增加了很多概念性的词语,这里稍作解释一下。 首先这个项目是有IBM公司的二名研究员创建的,旨在用于快速,低成本地搭建一个Iot平台,但后来的反正,改项目不仅仅用于构建一个物联网平台,还有很多用处。目前这个项目已经是OpenJS Foundation的一部分了。 此外他是一个可视化的项目,后台使用的是NodeJS语言,提供了Web页面,来编写Flow, 这是改项目提供的页面。
Node-Red的官网地址:https://nodered.org

Node-Red
Node-Red

Node-RED是一个编程工具,用于以新的有趣方式将硬件设备、API和在线服务连接在一起。
它提供了一个基于浏览器的编辑器,可以轻松地使用调色板中的各种节点将流连接在一起,这些节点可以一键部署到其运行时。

基于浏览器的流程编辑

Node-RED提供了一个基于浏览器的流量编辑器,可以轻松地使用调色板中的各种节点将流连接在一起。然后,只需单击一下即可将流部署到运行时。
可以使用富文本编辑器在编辑器中创建JavaScript函数。
内置库允许您保存有用的功能、模板或流程以供重复使用。

Node-Red
编辑界面
基于Node.js

轻量级运行时建立在Node.js上,充分利用其事件驱动的非阻塞模型。这使得在树莓派等低成本硬件和云端运行成为理想的选择。
Node的软件包存储库中有超过225,000个模块,可以轻松扩展调色板节点的范围以添加新功能。

社会发展

在Node-RED中创建的流使用JSON存储,JSON可以轻松导入和导出以与其他人共享。
在线流程库允许您与世界共享您的最佳流程。

Node-Red入门使用

这里推荐使用docker运行Node-Red,有官方提供的景象,可以直接使用。当然也可以通过npm安装的方式来安装Node-Red。
我这里使用的是docker

docker pull nodered/node-red
 sudo docker run -it -p 1880:1880 --name=nodered --restart=always --user=root --net=host -v /data/nodered:/data -e TZ=Asia/Shanghai nodered/node-red

打开默认带一个comment,里面是docker运行的一些说明,大致意思就是数据会存储在/home/user/node_red_data文件夹里等等。
Node-RED 截止目前共有 42 个逻辑节点,按照共通、功能、网络、序列、解析、存储分为六大类。
所有节点都可能有左右连接点,左连接点是输入,右连接点是输出,特殊节点可能有多个输入或多个输出,其实对应代码也不难理解,就是入参和出参。
下面依次介绍每个节点的功能。

共通

之后就是消费,几乎后面任何节点都可以消费,比如利用change节点来设置一些环境变量时,或者利用 template节点设置html模版时,都可以拿到这里输入的变量。如果在模版里,变量通过 {{msg.payload}}访问,如果是其它表单,甚至可以通过下拉框直接枚举选择。

然而这个节点往往用来设置静态变量,更多的输入情况是来自其它程序或者用户的,比如http in,这个后面会讲到。其实通过这种组合关系,我们可以把任意节点的输入从生产节点替换为inject节点,从而实现一些 mock效果,而inject节点也支持配置定时自动触发:

Node-Red
触发

点击部署按钮,之后执行inject,就会在控制台输出如图所示

Node-Red
输出
error.message 字符串错误消息。 
error.source.id 字符串引发错误的节点的ID。
error.source.type 字符串引发错误的节点的类型。 
error.source.name 字符串引发错误的节点的名称。(如果已设置)
功能

这里所有上级节点的值到这里都会在msg对象中,所以这里可以对msg进行处理,之后再流转到下一个节点中。

Node-Red
switch

这里输入变成由流程传入,具体的值如下图所示。

Node-Red
编辑change

最后输出结果在控制台

Node-Red
输出
网络

网络这里有很多种,http、socket、tcp、udp等,这里只介绍常用的http。

序列
解析

其实以下的解析方法都可以用function代替,只不过在API层面上已经封装好了

存储
总结

在使用function函数时,还可以使用异步的方法Promise,函数处理时会显性的存在node对象,在node中会包含很多函数处理,只要最后调用node.send(),效果与return msg一致。并且也会显性存在以下函数提供调用:

在调研Node-Red时发现,Node-Red是一个大而全的Node框架或解决方案。就BFF而言,Node-Red与GraphQL还是存在很大差距的,总结一下几点:

虽然作为BFF工具来说,Node-Red并不完美,但是对于其他方面来说,他能做的事情很多。以上就是Node-Red的全部内容,有缺点和不足点评一下吧。

本文章来源于互联网,如有侵权,请联系删除!原文地址:Node-Red

相关推荐: 5G园区+工业互联网,打开商业价值新空间

​10月31日消息,“5G使能千行百业”,这一切都将在园区发生。电信网络的飞速发展开启了万物互联时代,5G超高带宽、超低时延、全连接覆盖的网络能力更将促使业务的不断丰富。GSMA智库的调研结果显示,约有70%的运营商CEO认为,企业市场是未来5G重要的价值来源…