# 前言 Node-RED 是一个基于流的编程工具,由 Node.js 开发。 该工具主要用于连接物联网设备和软件应用。 但是,它不仅可以覆盖物联网,还可以覆盖标准的 web 应用。 Node-RED 正在扩展为一个无代码/低代码编程工具。 这本书涵盖了如何使用它的基础知识,包括从版本 1.2 中发布的新特性,以及高级教程。 ## 本书是写给谁的 这本书最适合那些第一次使用无代码/低代码编程工具学习软件编程的人。 Node-RED 是一个基于流的编程工具,它可以为任何软件应用轻松构建 web 应用,如物联网数据处理、标准 web 应用、web api 等。 因此,本书将帮助 web 应用开发人员和物联网工程师。 ## 本书的内容 [*第一章*](01.md#一node-red-和基于流的编程简介),*介绍 Node-RED 和基于流的编程*,告诉我们什么是 Node-RED。 内容还涉及了基于流的编程,解释了为什么开发 Node-RED 以及它的用途。 理解这个新工具 Node-RED 有助于改善我们的编程体验。 [*第二章*](02.md#二搭建开发环境),*设置开发环境*,介绍了通过安装 Node-RED 来设置开发环境。 Node.js 可以运行,如 Windows, macOS, Rasberry Pi OS 等等。 我们通过命令行或使用安装程序在每个环境中安装 Node-RED。 本章涵盖了特定操作系统的重要注意事项。 [*第三章*](03.md#三通过创建基本流来理解-node-red-特性),*通过创建基本流了解 Node-RED 特性*,教给我们 Node-RED 的基本用法。 在 Node-RED 中,各种函数与称为节点的部件一起使用。 在 Node-RED 中,我们使用称为流的概念创建应用,就像工作流一样。 我们将通过组合基本节点来创建一个示例流。 [*第四章*](04.md#四学习主要节点),*学习主要节点*,教我们如何利用更多的节点。 我们不仅会了解 Node-RED 默认提供的节点,还会了解社区在互联网上发布的各种节点如何获取和使用。 第五章,*在本地实现 Node-RED*,教给我们在本地环境(桌面环境)中利用 Node-RED 的最佳实践。 由于 Node-RED 是一个基于 Node.js 的工具,它擅长构建服务器端应用。 然而,服务器并不只是在网络之外。 通过在边缘设备(如树莓派)的本地环境的虚拟运行时中使用 Node-RED,可以更方便地使用它。 第六章,*在云中实现 Node-RED*,教给我们在云平台上利用 Node-RED 的最佳实践。 由于 Node-RED 是一个基于 Node.js 的工具,它擅长构建服务器端应用。 在任何云平台上使用 Node-RED 都可以更方便地使用它,因此我们将使用 IBM cloud 上的 Node-RED 作为云平台的用例之一。 [*第七章*](07.md#七从-node-red-调用-web-api),*从 Node-RED 调用 Web API*,教我们如何使用 Node-RED 的 Web API。 为了最大限度地提高 web 应用的吸引力,与各种 web api 链接是必要的。 它的应用开发架构在 Node-RED 中也不例外。 理解从普通 Node.js 应用调用 web API 和从 Node-RED 调用 web API 之间的区别可以帮助我们最大限度地利用 Node-RED。 [*第八章*](08.md#八在-git-中使用项目特性),*在 Git 中使用项目特性*,教我们如何在 Node-RED 中使用源代码版本控制工具。 通过 Node-RED,项目功能在版本 1 中可用。 x 和。 项目功能可以基于 Git 与各个源代码版本控制工具进行链接。 通过使用存储库对流程进行版本控制,我们的开发将会加速。 [*第九章*](09.md#九使用-node-red-创建一个-todo-应用)*create a ToDo Application with Node-RED*介绍如何使用 Node-RED 开发标准的 web 应用。 这里的 web 应用是一个简单的 ToDo 应用。 整个应用的架构非常简单,这将帮助我们理解如何使用 Node-RED 开发一个 web 应用,包括用户界面。 [*第十章*](10.md#从树莓派上的传感器模块获取传感器数据),*处理树莓派上的传感器数据*,教给我们使用 Node-RED 处理物联网数据的应用开发方法。 Node-RED 最初是用来处理物联网数据的。 因此,目前仍在使用 Node-RED 的许多用例是物联网数据处理。 Node-RED 将从传感器获取的数据传递给我们想要执行的每个进程并发布它。 [*第十一章*](11.md#十一通过在-ibm-云中创建服务器端应用来可视化数据),*通过在 IBM 云中创建一个服务器端应用可视化数据*,教我们使用 Node-RED 在云平台端处理物联网数据的应用开发方法。 我们通常使用来自任何云平台上的边缘设备的数据进行分析、可视化等。 Node-RED 处理从 MQTT 代理订阅的数据,并根据任何目的对其进行可视化。 [*第十二章*](12.md#十二利用-slack-和-ibm-watson-开发聊天机器人应用),*使用 Slack 和 IBM Watson 开发聊天机器人应用*,教我们如何创建聊天机器人应用。 乍一看,Node-RED 和聊天机器人似乎没有关联,但许多聊天机器人应用在幕后使用 Node-RED。 原因是 Node-RED 可以像工作流一样在逐个数据的基础上执行服务器端处理。 在这里,我们创建了一个在 Slack 上运行的聊天机器人,Slack 在全世界都在使用。 [*第十三章*](13.md#十三在-nodered-库中创建并发布自己的节点),*在 Node- red 库上创建并发布自己的节点*,教我们如何自己开发节点。 对于许多用例,我们可以从 node - red 库中找到处理所需的节点。 这是因为由于许多开发人员的贡献,许多节点都暴露在互联网上。 让我们通过开发我们自己的节点并将其发布到 node - red 库来帮助大量其他 node - red 用户。 ## 为了最大限度地了解这本书 你需要 Node-RED 版本 1.2 或更高,Node.js 版本 12 或更高,npm 版本 6 或更高,最好是安装在你电脑上的最新的小版本。 但这是在本地环境中运行 Node-RED 时的情况。 对于在 IBM Cloud 上运行的情况(这是本书的教程之一),它取决于云平台的环境。 所有代码示例都在 macOS、Windows 和 Raspberry Pi OS 上进行了测试,但有些章节有基于 macOS 的命令行说明。 ![](img/B16353_Preface_Table_1.jpg) **如果你正在使用这本书的数字版本,我们建议你自己输入代码或通过 GitHub 存储库访问代码(链接在下一节中)。 这样做将帮助您避免任何与复制和粘贴代码相关的潜在错误。** ## 下载示例代码文件 你可以从 GitHub 网站[https://github.com/PacktPublishing/-Practical-Node-RED-Programming](https://github.com/PacktPublishing/-Practical-Node-RED-Programming)下载这本书的示例代码文件。 如果代码有更新,它将在现有的 GitHub 存储库中更新。 我们还可以在[https://github.com/PacktPublishing/](https://github.com/PacktPublishing/)中找到丰富的图书和视频目录中的其他代码包。 检查出来! ## 下载彩色图片 我们还提供了一个 PDF 文件,其中包含了本书中使用的屏幕截图/图表的彩色图像。 你可以在这里下载:[https://static.packt-cdn.com/downloads/9781800201590_ColorImages.pdf](https://static.packt-cdn.com/downloads/9781800201590_ColorImages.pdf)。 ## 使用的约定 本书中使用了许多文本约定。 ### 文本代码: 文本中的代码:表示文本中的代码词,数据库表名,文件夹名,文件名,文件扩展名,路径名,虚拟 URL,用户输入和 Twitter 用户名。 ```c 这是一个例子: "让我们使用

标签

将页面标题附加到正文." ``` 代码块的设置如下: ```javascript //生成随机数 var min = 1 ; var max = 10 ; var a = Math.floor( Math.random() * (max + 1 - min) ) + min ; // set random number to message msg.payload = a; // return message return msg; ``` 任何命令行输入或输出都以以下方式编写: ```javascript $ node --version v12.18.1 $ npm –version 6.14.5 ``` ### 粗体: 表示新术语、重要词汇或屏幕上显示的文字。例如菜单或对话框中的文字在文本中会以这种形式呈现。示例如下:“选择姓名和付款方案后,点击**选择地区**按钮。” 提示或重要注意事项 显示为以下形式 ![alt text](image.png) ## 联系 我们欢迎读者的反馈。 **一般反馈**:如果您对本书的任何方面有疑问,请在邮件主题中提及书名,并发送电子邮件至**customercare@packtpub.com**。 **Errata**:尽管我们已尽一切努力确保内容的准确性,但错误还是会发生。 如果您在本书中发现了错误,请向我们报告,我们将不胜感激。 请访问[www.packtpub.com/support/errata](http://www.packtpub.com/support/errata),选择您的图书,点击勘误表提交链接,并输入详细信息。 :如果您在互联网上发现任何形式的我们的作品的非法拷贝,如果您能提供我们的地址或网站名称,我们将不胜感激。 请通过**copyright@packt.com**与我们联系,并附上资料链接。 **如果你有兴趣成为一名作者**:如果你有一个你擅长的话题,并且你有兴趣写作或写一本书,请访问[authors.packtpub.com](http://authors.packtpub.com)。 ## 评论 请留下评论。 一旦你阅读和使用这本书,为什么不在你购买它的网站上留下评论? 潜在的读者可以看到并使用您的公正意见来做出购买决定,我们在 Packt 可以理解您对我们的产品的看法,我们的作者可以看到您对他们的书的反馈。 谢谢你! 更多关于 packt.com 的信息,请访问[packt.com](http://packt.com)。