上一篇基础部分,介绍了Node-RED的功能,应用场景、安装、配置及基本使用。那今天将继续深入高级用法,还有初步实现原理。这样的话,就可以对Node-RED更深入的掌握,可以更加灵活应用起来。如果默认的功能如果不能满足需求,我会介绍扩展方法,大家熟悉了就可以定制自己的流式处理程序了。我已经把它移植到了边缘计算网关当中了,充当规则引擎。你们也充分发挥想象力,尽情发挥它的威力。
- 节点说明:
我们挑选一些重点的节点做下说明。
- 输入节点:flow的数据来源,入口。通过各种网络协议,手工注入,串口等方式注入数据。
- 处理节点:某些专门用来在处理数据,比如HTML解析,数据转换,拼接等等。在节点的javascript block中完成。此类节点就是处理节点。
- 输出节点:按照某种协议,规范,进行数据输出。比如可以是websocket, TCP, UDP,HTTP response。
- 社交节点:用来email收发,twitter等社交工具连接。比如可以从输入节点接收数据,通过email节点,就可以发送到163邮箱当中。
- 其它几点:比如下列表格中列出的高级节点,硬件节点等等,都是功能的封装。
节点类型 | 节点名称 | 节点说明 |
输入 | Inject | 注入节点,向flow中注入payload |
Catch | 捕获节点异常 | |
Status | 从其它节点发送状态消息 | |
MQTT | MQTT节点消息输入节点 | |
HTTP | HTTP 请求输入节点 | |
Web socket | Web socket协议输入节点 | |
TCP | TCP协议输入节点 | |
UDP | UDP协议输出节点 | |
Serial | 串口数据输入节点 | |
处理 | Template | 按照预制的模板,设置message属性,或者数据转换 |
Delay | 增加延时 | |
Function | 用户直接编写javascript处理函数。 | |
Change | 可以对payload进行搜索替换 | |
社交 | 发送邮件 | |
发送twitter消息 | ||
存储 | file | 用来将信息保存到文件当中。 |
高级 | exec | 可以设置调用执行的命令,或者脚本 |
Raspberry Pi | rpi gpio | 控制树莓派GPIO端口。输入或者输出两种 |
rpi mouse | 控制树莓派鼠标控制。 | |
rpi keyboard | 树莓派键盘控制。 |
在使用的时候,上面的Node应该可以满足的大部分应用了。
2.自定义节点
Node-Red除了系统内置的节点,还提供了自定义节点的功能,是它的一大特点。具体文档参考:
https://nodered.org/docs/creating-nodes/first-node.html
场景:当系统默认组件功能不足,用户需要个性化功能,外观设置的时候,就会用到。
可以把npm module封装为node.每个node包含两部分:
- .js 定义了server端的行为。
- .html定义了界面中编辑器的外观及帮助。
该模块可以通过npm安装到Node-Red当中。
JS文件中需要完成:
- 创建节点,注册节点类型。
2.定义如何接收消息
3.定义如何发送消息
还有如何关闭节点,在节点日志处理,国际化等操作。官方文档中做了非常详细的说明。
3.在线Node及Flow
Node-Red除了提供可视化编辑器以外,自己动手创建flow。还有一个强大的在线社区,上面已经提供大量资源。包括Node与Flow。我们在使用Node-Red的过程中,首先搜索一下是不是已经有现成的Node, Flow可以用。打开:https://flows.nodered.org 就可以访问到在线资源。比如,在工业里常用的modbus协议,我们看看如何支持:
点击进去就可以访问到该node的详细信息。告诉用户如何安装,如何使用。安装完成后,重启Node-Red就可以使用了。
4.综合例子
综合例子中我们综合MQTT输入,email节点。来看复杂一些的flow创建及执行过程。在我们日常的使用过程中,大部分就是这种场景。
- Device通过MQTT协议上报数据。
- 发送到MQTT Broker。
- 在Node-Red输入节点中,进行MQTT消息订阅,当有订阅消息收到时,会接收消息并打包到message中,经过Function节点进行处理。当超过某一阀值时,会流转到email节点。通过email节点发送通知邮件。
这就是一个典型的物联网+Node-RED应用。Node-RED充当了物联网平台的规则引擎。这是放在云端。当然把它放在硬件网关中,充当边缘计算引擎也是可以的。大家可以动手亲自试一下。要是有问题,可以留言或者自私。
今天的介绍就到这里。下一期,我将带大家深入Node-RED内部工作机制,以及源代码分析。可以帮助大家透彻了解它。 其实这个软件,大家可以充分发挥想象力,它能干的事情非常多。日常工作,可以定制为各种商业化软件。