IBM Node-RED安装与使用教程
1.Node-RED
Node-RED 是构建物联网(IOT, Internet of Things)应用程序的一个强大工具,其重点是简化代码块的“连接”以执行任务。它使用可视化编程方法,允许开发人员将预定义的代码块(称为“节点”,Node)连接起来执行任务。连接的节点,通常是输入节点、处理节点和输出节点的组合,当它们连接在一起时,构成一个“流”(Flows)。
Node-RED最初是IBM在2013年末开发的一个开源项目,以满足他们快速连接硬件和设备到Web服务和其他软件的需求——作为物联网的一种粘合剂,它很快发展成为一种通用的物联网编程工具。重要的是,Node-RED已经迅速形成一个重要的、不断增长的用户基础和一个活跃的开发人员社区,他们正在开发新的节点,同时允许程序员复用Node-RED代码来完成各种各样的任务。
- Node-Red是一个开源的可视化编程工具
- Node-RED由IBM开发,主要用于连接连接计算机、传感器和在线服务等协议或组件,以简化它们之间的布线工作
- Node-RED允许通过组合各部件来编写应用程序。这些部件也可以是硬件设备、Web API 、在线服务
2.Node-RED应用意义
2.1 Node-RED所属层次
Node-RED所属层次如下图:
主打的是业务逻辑层,但是也包含一些可视化展示层功能,第4部分有详细介绍
由此可见:
- Node-RED并不是取代了代码,而是简化了代码
- 人们可以利用软件块和设备块更容易连线连成有用的系统,简化了开发
- 开发者也是想通过这个新颖的形式让人们更注重于创新,而不是正在重复地做什么
3.Node-RED安装【Docker版】
3.1 下载Node-RED Docker容器
- Node-RED的1.0系列在Docker Hub上已经改名为nodered/node-red.
- Node-RED的0.20.x在Docker Hub上仍然叫nodered/node-red-docker,
docker pull nodered/node-red
3.2 运行容器
kubernetes@kubernetes-virtual-machine:~$ docker run -it -p 1880:1880 --name nodered nodered/node-red
> node-red-docker@1.0.4 start /usr/src/node-red
> node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS "--userDir" "/data"
18 Mar 07:53:36 - [info]
Welcome to Node-RED
===================
18 Mar 07:53:36 - [info] Node-RED version: v1.0.4
18 Mar 07:53:36 - [info] Node.js version: v10.19.0
18 Mar 07:53:36 - [info] Linux 4.15.0-74-generic x64 LE
18 Mar 07:53:36 - [info] Loading palette nodes
18 Mar 07:53:37 - [info] Settings file : /data/settings.js
18 Mar 07:53:37 - [info] Context store : 'default' [module=memory]
18 Mar 07:53:37 - [info] User directory : /data
18 Mar 07:53:37 - [warn] Projects disabled : editorTheme.projects.enabled=false
18 Mar 07:53:37 - [info] Flows file : /data/flows.json
18 Mar 07:53:37 - [info] Creating new flow file
18 Mar 07:53:37 - [warn]
---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.
If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.
You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------
18 Mar 07:53:37 - [info] Server now running at http://127.0.0.1:1880/
18 Mar 07:53:37 - [info] Starting flows
18 Mar 07:53:37 - [info] Started flows
客户端访问http://IP:1880,可以看到node-red 的工作界面,左侧是元素选择区,中间是画布区,右侧是信息/终端打印区,如下图:
4.使用Node-RED的准备工作
4.1 下载所需插件
操作顺序依次是:节点管理-控制面板-安装-搜索
4.2 搭建MQTT服务器
EMQ 是一个由国人开发的百万级分布式开源物联网 MQTT 消息服务器。
docker run --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d emqx/emqx
端口 所属协议
- 1883 MQTT 协议端口
- 8883 MQTT/SSL 端口
- 8083 MQTT/WebSocket 端口
- 8080 HTTP API 端口
- 18083 Dashboard 管理控制台端口
然后打开http://ip:18083即可打开界面
5.Node-RED的使用
5.1 输入与输出
1.首先拖进来输入和输出
2.配置输入节点
由于我当前选择的json模式,那需要编写一段json脚本
3.点击部署,并运行
可以看出上图输出是json模式
5.2 文件操作
这里以读文件举例
1.首先我在本地创建一个aaa.txt,并在里面写入“Hello Node-RED”
2.拖出来file in组件,注意这里演示的事读文件操作
3.拖出来function组件,用来编写文件路径
4.然后将输入和输出与其进行连接
5.部署运行即可输出文件中的内容
5.3 接口操作
1.找到http in和http response节点
2.编辑http in节点,输入接口路径url
3.将http in和http response整体连接
4.在部署之后在浏览器中运行
5.4 数据库操作
先提前创建数据表
1.拖出mysql组件并配置数据库信息
2.拖出function,编写select函数
代码段如下:
var selectTmp="select data from NodeRED_source where name='%s'";
var newMsg = {
"topic": util.format(selectTmp, msg.payload.name)
}
return newMsg;
3.连接并运行
5.5 数学公式操作
1.首先拖出计算节点
2.查看计算机点配置项
5.6 MQTT操作
1.查看当前mqtt主题有哪些
2.选取mqtt节点组件
其中mqtt in是订阅节点,mqtt out是发布节点
3.配置mqtt in节点,先选择服务器
然后配置服务器地址
4.配置主题
5.将mqtt out也同样配置
6.查看主题是否订阅成功
7,实现完整连线
8.部署运行
5.7 发邮件操作
1.找到邮件节点
2.配置邮件信息
3.连接
4.部署运行,查看邮件
5.8 可视化界面操作
1.查看dashboard区域
以上便是界面中的菜单,界面如下:
2.下面以创建自定义表单和绘制折线图为例,首先是创建表单,找到dashboard中的表单组件
填写表单信息+所属页面+调用主题
连接邮件
部署查看界面
由于表单太长,需要设置一下布局
一种是窗口设置
另一种是在布局layout中设置,推荐这一种
调整之后为:
输入信息并点击按钮,查看邮箱
3.折线图
找到随机数和折线图组件
配置折线图
配置输入节点的周期性,然后查看界面
6.Node-RED的不足分析
- 1、复杂的多功能物联网应用:纯拿Node-RED构建物联网应用,UI是瓶颈
- 2、基于流程的编程是一种并不总是最适合应用程序开发的编程模型:基于流程的编程是一个通用模型,不针对特定需求进行定位或优化,例如数据分析或交互界面开发
- 3、功能实现基础受限:Node-RED的基础技术是JavaScript,不能构建功能原型,常使用Node-RED进行整体控制
- 4、性能受限:极限数据操作性能不行
NodeRED官网:https://nodered.org/
NodeREDGITHUB:https://github.com/node-red
NodeRED英文社区:https://discourse.nodered.org/
NodeRED中文社区:https://www.iotschool.com/topics/node81