在本章中,您将了解 Node-RED 中使用的主要节点。 Node-RED 是一个开源项目,默认情况下提供一些主要节点,但是也可以根据需要从公共库导入和使用节点。
Node-RED 有很多节点。 因此,这本书不足以解释所有这些。 所以,在本章中,让我们挑选主要节点和最常用的基本节点,并学习如何使用它们,在本章中探索这些主题:
- 什么是节点?
- 如何使用节点
- 从库中获取各种节点
在本章结束时,您将掌握如何在 Node-RED 流编辑器中使用主要节点。
要在本章取得进展,你需要具备以下技术要求:
- Node-RED (v1.1.0 或更高版本)。
- 本章使用的代码可在第 04 章文件夹https://github.com/PacktPublishing/-Practical-Node-RED-Programming中找到。
让我们首先了解 node - red 中的节点到底是什么。
Node-RED 是一个使用图形用户界面(GUI)工具编程 Node.js 应用的工具。 Node-RED 还可作为 Node-RED 上编程的软件(Node-RED Flow)的执行环境。
通常,当使用 Node.js 编程时,源代码是用代码编辑器或集成开发环境(IDE)编写的。 可执行文件是通过构建编写的源代码(编译、关联依赖文件等)而生成的。
Node-RED 上的可视化编程基本上遵循相同的过程。 不同之处在于编码部分是将节点放在 node - red 上而不是编辑器上。
在 Node-RED 中,使用 Node.js 编程时使用的基本处理是由称为节点的实现部分提供的。 在普通的面向对象编程中,这些部分通常以公共部分的形式作为库文件提供。
因为 Node-RED 是一个基于 gui 的可视化编程工具,所以这些常见部分不仅仅是库文件。 这些公共部件的形状像盒子,在 Node-RED 中称为节点。 此外,除了某些节点的之外,一般情况下,节点在编程时可以将变量(参数、参数等)设置为节点属性。
换句话说,因为已经有编程部件(节点),编程只需将它们放置在 GUI 中即可完成。 下图比较了纯 Node.js 编程和 Node-RED 中的流创建:
图 4.1 - Node-RED 和 Node.js 编程
现在您已经理解了 Node-RED 和节点的概念,让我们进一步研究节点。
正如您在启动 Node-RED 时所看到的,Node-RED 流编辑器默认提供了基本的处理节点。 这称为预安装节点。
预安装节点的典型类别如下:
- 普通:包括将特定数据注入流的节点、判断处理状态的节点、输出调试日志的节点。
- 函数:这包括可以直接用 JavaScript 和 HTML 编写的节点,转换参数变量的节点,以及根据这些参数的内容进行条件分支的节点。
- 网络:这包括处理通信所需的协议处理的节点,例如 MQTT、HTTP 和 WebSockets。
当然,这里给出的例子只是少数。 实际上有更多的类别和节点。
重要提示
预安装的节点也依赖于 Node-RED 版本。 查看有关 Node-RED 版本的官方文档https://nodered.org/docs/是一个好主意。
节点像 Node-RED 流编辑器上的部件一样排列,只需连接连接线即可使用。 如前所述,除了一些节点之外,您不必自己编写代码。
基本上,流程编辑器有一个框的外观,其中有一个设置窗口。 在设置窗口中,您可以为每个节点设置所需的参数和配置:
图 4.2 -节点
这就是您需要了解的关于节点的所有概念。 在下一节中,您将学习如何实际使用节点。
在本节中,我们将学习如何使用节点。
Node-RED 中的可视化编程与其他可视化编程工具略有不同,因为它使用基于流程的编程。 但请放心,这一点也不难。 如果您实际上创建了一些简单的流,那么您应该能够掌握如何使用 Node-RED 中的节点。
因此,现在让我们使用一些典型的预安装节点创建一个示例流。 树莓派、Windows 和 macOS 系统的环境是相同的。 请使用您最喜欢的环境。
让我们介绍用于创建流的节点。 您可以选择所有节点,并将它们从公共类别放置到调色板上。
在公共类别中创建一个包含节点的示例流。 以下四个节点:
- 注入节点
- 完成节点
- catch节点
- 调试节点
如下图所示放置并连接节点:
图 4.3 -常见类别节点的流程
这里的inject节点中的数据是简单的 JSON 数据。 双击放置的inject节点打开设置面板,设置 JSON 数据。 请参阅以下资料:
笔名:“町”}
您可以在inject节点中更改您想要发送的 JSON 数据。 另外,您应该为完整的节点设置属性。 打开设置面板并设置一个节点来监视状态。
设置每个节点的参数如下:
-
The inject node:
请将第一个参数设置为msg。 有效负载与以下 JSON:
{"name": "Taiji"}
你可以在这里设置任意值:
图 4.4 -插入数据的注入节点
-
The complete node:
检查Properties选项卡的第一个选项,查看inject节点的状态:
图 4.5 -用于监视状态的完整节点
其他节点的属性不需要更改。
设置更改后,需要部署并单击inject节点的按钮。 在此之后,您可以在右侧面板的debug选项卡中看到 JSON 数据。
你可以从这本书的 GitHub 回购https://github.com/PacktPublishing/-Practical-Node-RED-Programming/blob/master/Chapter04/common-flows.json得到流的定义。
在本节中,我们将学习如何使用功能类别中的一些主要节点,并将使用这些节点创建流。
使用函数类别中的节点创建示例流。 这里,我们将使用以下 6 个节点:
- 注入节点
- 功能节点
- 交换机节点
- 改变节点
- 模板节点
- 调试节点
放置并连接节点,如下图所示:
图 4.6 -功能类别节点的流程
请按照以下步骤进行流程:
-
将注入节点和调试节点放在调色板上。 这两个节点可以使用它们的默认参数。 这里不需要更改设置。
-
在调色板上放置一个函数节点。
-
Open the settings panel of the function node and enter the following code:
//生成随机数
var min = 1 ;
var max = 10 ;
var a = Math.floor( Math.random() * (max + 1 - min) ) + min ;
//设置随机数为 message
味精。 有效载荷=一个;
/ /返回消息
返回味精;
-
After coding, click on Done to save the settings:
图 4.7 -功能节点设置
-
将开关节点置于面板上,然后打开开关节点的设置面板,设置值规则如下:
-
**<**字段:6
-
The > field: 5
这应该如下所示:
-
图 4.8 -交换机节点设置
如果输入参数是5 或更少,输出路线是1**,如果输入参数是6 以上,输出路线是【T6 2】。 这意味着下一个节点取决于输入参数的数量。**
**1. Place two template nodes on the palette.
前面的函数是**开关**节点,因此数据分割取决于输出的结果。
-
Open the settings panel of each template node and enter the following code for the first template node connected to output route 1 of the switch node:
这个数字很小:{{payload}} !
添加前面的代码后,模板节点看起来如下截图所示:
图 4.9 -第一个模板节点设置
-
Enter the following code for the second template node, which is connected to output route 2 of the switch node:
这个数字很大:{{payload}} !
它看起来就像下面的截图:
图 4.10 -第二个模板节点设置
-
将更改节点放在面板上,打开更改节点的设置面板,查看规则下面的设置框。
-
Select string from the drop-down menu in the box next to to and enter the desired character string in the text box next to this. Here, it says It has been changed to string data!. Please refer to the following screenshot:
图 4.11 -更改节点设置
-
更改设置后,需要部署并单击inject节点的按钮。
一旦你这样做了,你可以在右边面板的调试选项卡中看到数据,如下所示:
图 4.12 -在调试选项卡中显示结果
第一个调试消息是默认的inject节点值,作为时间戳。 第二个是更改节点后放置的调试节点的调试消息。 最后一个取决于随机数,由模板节点格式化。
你可以从这本书的 GitHub 回购https://github.com/PacktPublishing/-Practical-Node-RED-Programming/blob/master/Chapter04/function-flows.json得到流的定义。
接下来,让我们了解默认情况下没有提供的节点。
您可以获得由 Node-RED 贡献者开发的中的几个更有吸引力的节点,并将它们安装到 Node-RED 流编辑器中。 您可以找到新的节点,共享您的流,并查看其他人使用 Node-RED 做了什么。 在本节中,我们将学习如何从 Node-RED 库中获取其他几个节点。 让我们首先访问 Node-RED 库站点:https://flows.nodered.org/。 在下面的截图中,你可以看到 Node-RED 库如何运行:
图 4.13 - Node-RED Library
在您自己的 Node-RED 环境的流编辑器中使用这个库很容易。 让我们看看如何从库中安装一个节点:
-
从侧栏菜单中选择管理面板。 您将看到用户设置面板打开,选择调色板选项卡。
-
Type watson in the search field, or the name of any other node you want to use. If you find the node you want, click the Install button:
图 4.14 -打开 User Settings 面板,找到你想要使用的节点
-
After clicking on the Install button, a pop-up window will appear, on which you will need to click on Install once again.
当您这样做并且安装完成后,您将看到一个弹出消息,显示Nodes 被添加到面板。
这是所有! 您可以看到您在面板中安装的所有节点,如下图所示:
图 4.15 -您已安装的节点被添加到您的调色板
提示
你可以在 Node-RED Library 网站上搜索有用的节点。 可以通过关键字进行搜索,并根据最近添加的内容、下载数量和评级对结果进行排序。 我建议先按下载数量排序,因为被许多开发者下载的节点可能非常有用:https://flows.nodered.org/search?type=node&sort=downloads。
现在,您已经成为了一个优秀的 Node-RED 用户,并且掌握了如何使用使用 Node-RED 流编辑器来创建一些流(应用)。
在本章中,您已经学习了如何在 node - red 流编辑器中使用每个主要节点。 您已经成功创建了 Node-RED 流! 您在这里创建的流步骤是您将来创建各种流需要执行的大部分步骤。
本章的重点是每个节点都有自己独特的特性。 通过像拼图一样将这些组合在一起,我们可以通过创建流创建一个类似于常规编程的应用。
在下一章中,让我们为物联网边缘设备创建一个更实用的示例流(应用)。**