鸟哥杂谈十分钟搭建自己的本地 Node-Red可拖拽图形化物联网

Posted 单片机菜鸟哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鸟哥杂谈十分钟搭建自己的本地 Node-Red可拖拽图形化物联网相关的知识,希望对你有一定的参考价值。

忘记过去,超越自己

  • ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
  • ❤️ 本篇创建记录 2022-10-16 ❤️
  • ❤️ 本篇更新记录 2022-10-16 ❤️
  • 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝
  • 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
  • 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志 🔥

目录

1. 前言

Node-RED最初是IBM在2013年末开发的一个开源项目,以满足他们快速连接硬件和设备到Web服务和其他软件的需求——作为物联网的一种粘合剂,它很快发展成为一种通用的物联网编程工具。

Node-RED 是一种编程工具,用于以新颖有趣的方式将硬件设备、API 和在线服务连接在一起。这句话会随着把这个东西用起来之后会慢慢理解。

重要的是,Node-RED已经迅速形成一个重要的、不断增长的用户基础和一个活跃的开发人员社区,他们正在开发新的节点(目前项目上也集成了非常多有用的节点,包括HTTP节点、MQTT节点以及DashBoard仪表盘等等功能),同时允许程序员复用Node-RED代码来完成各种各样的任务。

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

简单来说,Node-RED就是一个基于浏览器可以实现可视化拖拽编程物联网的工具,对于部分初学者来说是一个福音,功能上类似于OneNet的可视化仪表盘、阿里云物联网上面的可视化web页面等等。它提供了一个基于浏览器的编辑器,在浏览器中,通过将节点从调色板拖到工作区并开始将它们连接在一起来创建应用程序。只需单击一下,即可将应用程序部署回运行它的运行时。


没错,最好的学习资料:

2. Node-RED 特点

Node-RED 是一种基于流的编程工具,最初由IBM 的新兴技术服务 团队开发,现在是OpenJS 基金会的一部分。

基于流的编程,是一种将应用程序的行为描述为黑盒网络的方法,或者在 Node-RED 中称为“节点”。

  • 每个节点都有明确的用途;
  • 它被赋予了一些数据,它对这些数据做一些事情,然后将这些数据传递给它。
  • 网络负责节点之间的数据流。

2.1 基于浏览器的流程编辑

  • Node-RED 提供了一个基于浏览器的流编辑器,可以使用调色板中的各种节点轻松地将流连接在一起。然后,只需单击一下即可将流部署到运行时。
  • 可以使用富文本编辑器在编辑器中创建 javascript 函数。
  • 内置库允许您保存有用的函数、模板或流程以供重复使用。


上面的图就是后面我们会看到的大概样子,可以把左边的节点拖拽到中间做一些业务逻辑。针对物联网体系来说,我们能做的事情包括且不限于:

  • dashboard 仪表盘功能
  • 支持httpmqttwebsockettcpudp协议

2.2 基于 Node.js 构建

  • 轻量级运行时基于 Node.js(那就意味着我们需要搭建NodeJs环境了,这个也很简单,直接参考 【NodeJs-5天学习】第一天篇② —— 安装NodeJs环境以及VsCode开发工具),充分利用其事件驱动的非阻塞模型。这使得它非常适合在 Raspberry Pi (树莓派)、android手机等低成本硬件以及运行在网络边缘的云。

  • Node的软件包存储库中有超过225,000个模块,可以轻松扩展面板节点的范围以添加新功能。(相当于第三方软件库,别人写好了,直接用)

2.3 利于发展的分享生态环境

  • 在 Node-RED 中创建的流使用 JSON 存储,可以轻松导入和导出以与他人共享。
  • 在线流程库使您可以与世界分享优秀的节点。今天仍有充满活力的用户和开发人员社区,核心致力于Node-RED代码本身,同时为流库贡献节点或流。
  • 通过安装由社区创建的新节点,可以轻松扩展节点选项板,并且您创建的流可以轻松共享为 JSON 文件。

3. Node-RED 能用来做什么?

通过Node RED,物联网数据传输设备开启了一个新的时代,通过Node RED,我们在写功能时,可以通过拖拽编写好的功能,就能直接使用,然后通过节点,就能将功能与功能之间串联起来

通过这样的功能,使得开发速度更快!更容易上手。

3.1 案例一:控制LED灯


在这个简单的例子中,它是由3个节点组成。最左边不断触发一个时间流(左边节点),然后等待1s(中间节点),最后输出控制LED(右边节点)、

3.2 案例二:使用Node-RED的内置HTTP节点构建Web服务


它是由4个节点组成。第一个和最后一个节点是HTTP输入和输出节点,它们共同工作以侦听HTTP请求并发送HTTP响应。此流侦听来自任何源的HTTP请求,我们假设这里有一个常规浏览器。当它到来时,需要它查询你的Fitbit数据,然后使用一个模板节点建立一个HTTP页面,并通过对HTTP输出节点发送到网页浏览器之中。

3.3 案例三:利用dashboard构建监控UI面板

看一下别人使用dashboard制作的面板。后面我们自己也可以做出这样的效果。


4. Node-RED的局限性?

虽然它带来很多便利性,但肯定也是有局限性。
Node-RED可能并不是物联网应用程序开发的最佳工具。虽然功能强大且灵活,但并不一定是正确的解决方案。某些情况下,Node-RED可能不是首选,包括:

  • 复杂多功能物联网应用。Node-RED擅长于快速应用程序开发,并充当连接事件到动作或传感器到执行器的粘合剂。然而,当应用程序达到一定的规模时,通过Node-RED来可视化编程和管理变得非常复杂。
  • 基于流的编程是一种通用模型,并没有针对特定需求进行针对性或优化,例如数据分析或用户界面开发。目前,Node-RED对这些类型的应用程序没有具体的支持,也没有简单的方法来添加这种支持。显然,Node-RED的底层技术是JavaScript,可以利用它的能力来满足这些需求。如果要使用Node-RED来做原型开发,可行的方案是在找一种更适合任务语言中实现部分或全部应用程序,并使用Node-RED作为整体控件。

虽然有一定局限性,但是目前阶段对于初学者来说完全够用。

5. 搭建本地Node-RED运行环境

前提条件:

Node-RED基于NodeJS,所以需要搭建NodeJs环境了,这个也很简单,直接参考 【NodeJs-5天学习】第一天篇② —— 安装NodeJs环境以及VsCode开发工具

5.1 使用npm 安装 Node-RED 环境

cmd输入命令:

npm install -g node-red

5.2 启动Node-RED

cmd输入命令:

node-red


在浏览器中打开 http://localhost:1880 就可以访问Node-RED的前台界面,进行编程。


后面我们就可以根据具体情况来学习使用这个工具,完成各式各样的功能。

5.3 停止Node-RED

直接ctrl + C即可

6. 总结

本文简单介绍了Node-RED工具以及它能给我们开发物联网带来那些功能效果,先搭建好环境,然后去玩转起来,静待后续篇章。

以上是关于鸟哥杂谈十分钟搭建自己的本地 Node-Red可拖拽图形化物联网的主要内容,如果未能解决你的问题,请参考以下文章

鸟哥杂谈搭建自己的本地mqtt服务器 emqx

鸟哥杂谈十分钟使用命令行在云服务器Centos环境下搭建NodeJS环境

鸟哥杂谈三分钟完成腾讯云部署emqx,公网访问自己的mqtt服务器

鸟哥杂谈Linux环境搭建Redis

鸟哥杂谈腾讯云 CentOS8 Linux环境搭建docker

鸟哥杂谈腾讯云 CentOS8 Linux环境搭建docker