IBM Node-RED 安装与使用教程

IBM Node-RED安装与使用教程

1.Node-RED

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/960b7cb0-7ad3-4bfe-9c5e-2b32d8a813c2.png?x-oss-process=image/resize ,w_1920)

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安装与使用教程]( https://cdn.iotschool.com/photo/2020/c7959378-4b96-4740-b080-499c5d0362af.png?x-oss-process=image/resize ,w_1920)

主打的是业务逻辑层,但是也包含一些可视化展示层功能,第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安装与使用教程]( https://cdn.iotschool.com/photo/2020/6d38e2d0-8bc9-4ddf-af12-5348f8fe9ce1.png?x-oss-process=image/resize ,w_1920)

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

4.1 下载所需插件

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/6240fd5a-99df-47e1-8904-2b8db7ea4f52.png?x-oss-process=image/resize ,w_1920)

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安装与使用教程]( https://cdn.iotschool.com/photo/2020/c1668c9d-6d70-482a-948b-39337bcff78e.png?x-oss-process=image/resize ,w_1920)

5.Node-RED的使用

5.1 输入与输出

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/a0ce34be-f238-4b77-b8a2-b6d343253dca.png?x-oss-process=image/resize ,w_1920)

2.配置输入节点

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/ed9304a6-3f46-4c4c-b2ef-e11a66a820b4.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/b45de0c5-721f-4d4b-95af-2eb58118469e.png?x-oss-process=image/resize ,w_1920)

3.点击部署,并运行

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/8488c544-008b-4377-a4f3-777e5fee66f3.png?x-oss-process=image/resize ,w_1920)

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

5.2 文件操作

这里以读文件举例
1.首先我在本地创建一个aaa.txt,并在里面写入“Hello Node-RED”

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/0dfda9f7-15ef-4698-b117-f5d6745b1bcf.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/6a81475b-14d7-49a7-a9a4-53e8c3540ba3.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/cc43be1e-29e1-4638-9a17-4701b031b22b.png?x-oss-process=image/resize ,w_1920)

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/a6382f55-3f2f-4010-bbbf-33daaddbba52.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/677dfee8-6df5-4203-b743-1e547452ff1e.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/9460cfa9-6294-469c-a819-5a201e697b5f.png?x-oss-process=image/resize ,w_1920)

5.3 接口操作

1.找到http in和http response节点

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/a9388d00-093a-4502-8e31-c0bb04dbbd66.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/f950c013-cfb5-47da-bfc7-f425b757e884.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/a2e32591-b4a9-4585-8da4-64a58a736316.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/850466cc-12e7-4780-8fd3-a213c963428b.png?x-oss-process=image/resize ,w_1920)

5.4 数据库操作

先提前创建数据表

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/f3977d35-df4e-4aef-aec2-87ab7ebc898e.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/80611ba7-7627-4ddd-94c8-47bce7308377.png?x-oss-process=image/resize ,w_1920)

2.拖出function,编写select函数

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/178d7f7d-ef66-4ea2-9d8a-3e9d4f0f1ed7.png?x-oss-process=image/resize ,w_1920)

代码段如下:

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安装与使用教程]( https://cdn.iotschool.com/photo/2020/016dd216-143a-4d2c-b719-896ea7c8adea.png?x-oss-process=image/resize ,w_1920)

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/8e8674b9-d417-47b7-a180-577355f7f8c9.png?x-oss-process=image/resize ,w_1920)

5.5 数学公式操作

1.首先拖出计算节点

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/f7543808-36fd-432a-af9b-2cef70afaf45.png?x-oss-process=image/resize ,w_1920)

2.查看计算机点配置项

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/db1b02ca-5d95-48c8-a27e-abd8e6166756.png?x-oss-process=image/resize ,w_1920)

5.6 MQTT操作
1.查看当前mqtt主题有哪些

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/1e03b2f9-4853-4df2-9e54-e71d21976b9c.png?x-oss-process=image/resize ,w_1920)

2.选取mqtt节点组件

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/c8cb9df3-ae04-4e87-95b8-a00328a7e8c9.png?x-oss-process=image/resize ,w_1920)

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

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/788606e2-4ed3-4e6e-9538-8855b5b21e1f.png?x-oss-process=image/resize ,w_1920)

然后配置服务器地址

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/3791616a-4aaa-4034-9a76-da0367006a78.png?x-oss-process=image/resize ,w_1920)

4.配置主题
![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/cd57759d-0d26-49ba-9ead-a404bedf35e3.png?x-oss-process=image/resize ,w_1920)

5.将mqtt out也同样配置

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/466ca3d2-fd06-4150-9e54-db0b12d7acbc.png?x-oss-process=image/resize ,w_1920)

7,实现完整连线

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/360075c6-9d3c-4fed-9af8-e437bfd8f2f1.png?x-oss-process=image/resize ,w_1920)

8.部署运行

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/c10c46ee-a250-4548-a13c-fee986e8cc5d.png?x-oss-process=image/resize ,w_1920)

5.7 发邮件操作

1.找到邮件节点

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/3b19d444-d095-45ad-af03-c50fac4d1683.png?x-oss-process=image/resize ,w_1920)

2.配置邮件信息

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/4a855447-28ea-49f8-a74f-40e0df50bd8b.png?x-oss-process=image/resize ,w_1920)

3.连接

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/60d074bf-a597-4fb1-a9c4-025185518b9f.png?x-oss-process=image/resize ,w_1920)

4.部署运行,查看邮件

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/c7a74e95-0d8d-435d-bf61-6c9145377a98.png?x-oss-process=image/resize ,w_1920)

5.8 可视化界面操作

1.查看dashboard区域

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/8d164e77-1c36-4d5c-94a3-45fba21913e2.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/f7c4b58a-9176-4891-b62d-b7f7a2cd69c8.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/5f902729-f45e-4ab1-a0a8-285a86047336.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/d6e2a075-447b-4787-b6e6-c5d6e34dbd6c.png?x-oss-process=image/resize ,w_1920)

连接邮件

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/dfe4b3c1-1bd7-4467-82a1-2e83be8dfc15.png?x-oss-process=image/resize ,w_1920)

部署查看界面

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/f677bc87-c3fa-4e2b-afd3-f588cb13148a.png?x-oss-process=image/resize ,w_1920)

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

一种是窗口设置

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/8c3c2051-93d5-4909-beca-63d97aaeec0c.png?x-oss-process=image/resize ,w_1920)

另一种是在布局layout中设置,推荐这一种
![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/5d8446ba-3c4a-4dbb-bf39-7446394f8e76.png?x-oss-process=image/resize ,w_1920)

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/cce54f5f-7f41-4ae2-9340-1c7a6ac89147.png?x-oss-process=image/resize ,w_1920)

调整之后为:

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/53a00680-6e9c-4692-8ca4-2fd36b68d4a2.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/2d3cfa04-57f3-4b76-b077-e7313b4dad7b.png?x-oss-process=image/resize ,w_1920)

3.折线图

找到随机数和折线图组件

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/947edb1c-098c-465d-b5f3-a6b0686518ea.png?x-oss-process=image/resize ,w_1920)

配置折线图

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/26e3c844-d923-4128-9fd9-d855546bc0a3.png?x-oss-process=image/resize ,w_1920)

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

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/0a2ef3c3-7abe-4aed-b35f-4d16b0097b4e.png?x-oss-process=image/resize ,w_1920)

![IBM Node-RED安装与使用教程]( https://cdn.iotschool.com/photo/2020/1542238b-7278-4282-a3f9-614fd274c7f9.png?x-oss-process=image/resize ,w_1920)

6.Node-RED的不足分析

  • 1、复杂的多功能物联网应用:纯拿Node-RED构建物联网应用,UI是瓶颈
  • 2、基于流程的编程是一种并不总是最适合应用程序开发的编程模型:基于流程的编程是一个通用模型,不针对特定需求进行定位或优化,例如数据分析或交互界面开发
  • 3、功能实现基础受限:Node-RED的基础技术是JavaScript,不能构建功能原型,常使用Node-RED进行整体控制
  • 4、性能受限:极限数据操作性能不行

原文链接:https://blog.csdn.net/fnFenNuDManMan/article/details/104834919

NodeRED官网:https://nodered.org/

NodeREDGITHUB:https://github.com/node-red

NodeRED英文社区:https://discourse.nodered.org/

NodeRED中文社区:https://www.iotschool.com/topics/node81

NodeRED中文社区QQ群:8604461

![iotschool]( https://cdn.iotschool.com/photo/2020/af4b0b1d-bbd4-4582-8406-2692e2baf1f5.png?x-oss-process=image/resize ,w_1920)

posted @ 2020-06-23 10:47  ThingsKit物联网平台  阅读(10634)  评论(0)    收藏  举报
物联网平台 云腾五洲