IBM Node-RED安装与使用教程

1.Node-RED

Node-RED 是构建物联网(IOT, Internet of Things)应用程序的一个强大工具,其重点是简化代码块的“连接”以执行任务。它使用可视化编程方法,允许开发人员将预定义的代码块(称为“节点”,Node)连接起来执行任务。连接的节点,通常是输入节点、处理节点和输出节点的组合,当它们连接在一起时,构成一个“流”(Flows)。

IBM Node-RED 安装与使用教程_物联网

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所属层次如下图:

IBM Node-RED 安装与使用教程_服务器_02

主打的是业务逻辑层,但是也包含一些可视化展示层功能,第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 的工作界面,左侧是元素选择区,中间是画布区,右侧是信息/终端打印区,如下图:

IBM Node-RED 安装与使用教程_物联网_03

4.使用Node-RED的准备工作

4.1 下载所需插件

操作顺序依次是:节点管理-控制面板-安装-搜索

IBM Node-RED 安装与使用教程_物联网_04

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即可打开界面

IBM Node-RED 安装与使用教程_docker_05

5.Node-RED的使用

5.1 输入与输出

1.首先拖进来输入和输出

IBM Node-RED 安装与使用教程_服务器_06

2.配置输入节点

IBM Node-RED 安装与使用教程_服务器_07

由于我当前选择的json模式,那需要编写一段json脚本

IBM Node-RED 安装与使用教程_服务器_08

3.点击部署,并运行

IBM Node-RED 安装与使用教程_服务器_09

可以看出上图输出是json模式

5.2 文件操作

这里以读文件举例

1.首先我在本地创建一个aaa.txt,并在里面写入“Hello Node-RED”

IBM Node-RED 安装与使用教程_服务器_10

2.拖出来file in组件,注意这里演示的事读文件操作

IBM Node-RED 安装与使用教程_服务器_11

3.拖出来function组件,用来编写文件路径

IBM Node-RED 安装与使用教程_物联网_12

IBM Node-RED 安装与使用教程_服务器_13

4.然后将输入和输出与其进行连接

IBM Node-RED 安装与使用教程_docker_14

5.部署运行即可输出文件中的内容

IBM Node-RED 安装与使用教程_服务器_15

5.3 接口操作

1.找到http in和http response节点

IBM Node-RED 安装与使用教程_服务器_16

2.编辑http in节点,输入接口路径url

IBM Node-RED 安装与使用教程_服务器_17

3.将http in和http response整体连接

IBM Node-RED 安装与使用教程_服务器_18

4.在部署之后在浏览器中运行

IBM Node-RED 安装与使用教程_docker_19

5.4 数据库操作

先提前创建数据表

IBM Node-RED 安装与使用教程_物联网_20

1.拖出mysql组件并配置数据库信息

IBM Node-RED 安装与使用教程_物联网_21

2.拖出function,编写select函数

IBM Node-RED 安装与使用教程_服务器_22

代码段如下:

var selectTmp="select data from NodeRED_source where name='%s'";

var newMsg = {
"topic": util.format(selectTmp, msg.payload.name)
}

return newMsg;

3.连接并运行

IBM Node-RED 安装与使用教程_物联网_23

IBM Node-RED 安装与使用教程_服务器_24

5.5 数学公式操作

1.首先拖出计算节点

IBM Node-RED 安装与使用教程_docker_25

2.查看计算机点配置项

IBM Node-RED 安装与使用教程_服务器_26

5.6 MQTT操作

1.查看当前mqtt主题有哪些

IBM Node-RED 安装与使用教程_物联网_27

2.选取mqtt节点组件

IBM Node-RED 安装与使用教程_服务器_28

其中mqtt in是订阅节点,mqtt out是发布节点

3.配置mqtt in节点,先选择服务器

IBM Node-RED 安装与使用教程_物联网_29

然后配置服务器地址

IBM Node-RED 安装与使用教程_服务器_30

4.配置主题

IBM Node-RED 安装与使用教程_物联网_31

5.将mqtt out也同样配置

6.查看主题是否订阅成功

IBM Node-RED 安装与使用教程_服务器_32

7,实现完整连线

IBM Node-RED 安装与使用教程_docker_33

8.部署运行

IBM Node-RED 安装与使用教程_docker_34

5.7 发邮件操作

1.找到邮件节点

IBM Node-RED 安装与使用教程_服务器_35

2.配置邮件信息

IBM Node-RED 安装与使用教程_物联网_36

3.连接

IBM Node-RED 安装与使用教程_物联网_37

4.部署运行,查看邮件

IBM Node-RED 安装与使用教程_服务器_38

5.8 可视化界面操作

1.查看dashboard区域

IBM Node-RED 安装与使用教程_服务器_39

以上便是界面中的菜单,界面如下:

IBM Node-RED 安装与使用教程_服务器_40

2.下面以创建自定义表单和绘制折线图为例,首先是创建表单,找到dashboard中的表单组件

IBM Node-RED 安装与使用教程_物联网_41

填写表单信息+所属页面+调用主题

IBM Node-RED 安装与使用教程_物联网_42

连接邮件

IBM Node-RED 安装与使用教程_服务器_43

部署查看界面

IBM Node-RED 安装与使用教程_docker_44

由于表单太长,需要设置一下布局

一种是窗口设置

IBM Node-RED 安装与使用教程_服务器_45

另一种是在布局layout中设置,推荐这一种

IBM Node-RED 安装与使用教程_服务器_46

IBM Node-RED 安装与使用教程_物联网_47

调整之后为:

IBM Node-RED 安装与使用教程_docker_48

输入信息并点击按钮,查看邮箱

IBM Node-RED 安装与使用教程_docker_49

3.折线图

找到随机数和折线图组件

IBM Node-RED 安装与使用教程_物联网_50

配置折线图

IBM Node-RED 安装与使用教程_物联网_51

配置输入节点的周期性,然后查看界面

IBM Node-RED 安装与使用教程_服务器_52

IBM Node-RED 安装与使用教程_服务器_53

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​