Node-RED基础1
目录
- 一、概述
- 二、安装
- 三、基操
- 四、通讯
- 五、数据
- 六、节点
- 七、 应用
- END
一、概述
Rode-Red是什么?
- 基于Node.js的物联网开发工具,做API、通讯;
- 提供了一些基本的监控功能,可在编辑器界面中查看节点的运行状态、消息流量等信息。
- 通过安装一些额外的节点或使用外部监控工具来实现更详细的监控和管理,
例如:监控数据处理的性能指标、数据传输的成功率等。
Node.js是什么?
- 基于谷歌V8引擎的JavaScript运行环境(底层环境)点击安装

PM2是什么?
- 实时管理JavaScript应用(包括Node-red)的进程工具;
- 基于PM2部署的Node-red进行PLC(MQTT)数据采集转发可以确保其7x24h稳定运行。
二、安装
- 安装: 安装node.js,安装pm2(是什么?)
npm install pm2 -g,基于pm2安装Node-Rednpm install -g--unsafe perm node-red pm2 pm2-windows-startup pm2-windows-service; - 启动: 在命令行中输入node-red启动 Node-RED 服务(临时调试;关闭CMD窗口会停止服务)
- 自启动: 在开始菜单
C:\ProgramData\Microsoft\Windows\Start Menu路径下建立.bat文件pm2 start C:\Users\Administrator\AppData\Roaming\npm\node_modules\node-red\red.js开机自动启动服务 - 打开: 通过浏览器访问
http://localhost:1880 - 创建: 输入—响应—输出
- 运行: 点击 Node-RED 编辑器右上角的 “部署” 按钮,将流程部署到运行环境中。此时,数据管道就开始按照设定的流程运行,接收输入数据,进行处理和存储,并根据需要输出响应。
- 分析: 监控数据处理的性能指标、数据传输的成功率等。
三、基操
前提
- 运行服务
- 浏览器
http://localhost:1880

概要
- 输入:
inject -
- msg: Payload、topic、或自定义标题
-
- =值: 二进制、环境变量、数字、文本、表达式、msg、时间戳、
-
- 特别说明: JSON
{ "num": 98, "name": "小王","yes":true}…类似键值对格式(可循环嵌套);
- 特别说明: JSON
- 输出:
debug -
- msg.
Payload.name(与输入的msg标题对应)
- msg.
-
- 与调试输出相同
- 部署: 每次更改必须 部署
- 注入: 点击 输入的左边小框 该条指令即可输出内容
- 组合: 框选右击可组合命令

1. Switch选择
inject(数字)——Switch(添加域)——debug1、debug2...(选择输出)- 应用:输入的数字在相应域内选择当前域的输出

2. range缩放
inject(数字)——range(缩放)——debug- 应用:根据输入值放大或缩小其倍数并输出(模数转换)

3. delay延迟
inject(数字)——delay(延迟)——debug- 应用:延迟输出

4. trigger触发
inject(数字)——trigger(触发)——debug- 应用:触发输出

5. change更改
inject——change(增删改移消息msg.topic)——debug- 应用:对Payload消息进行操作控制、删除、修改、移动设定等;

6. loop循环
inject——function——loop===function——debug- loop 固定循环次数Fixed Count
- loop 条件判断输出Condition
- loop 遍历function对象Enumeration
- 应用:循环处理事件

7.link跳转
inject——link outlink in(link1)——Debug- 应用:省略流程的连线,视觉简化;可多个in、out互联

四、通讯
1. tcp链接
- TCP调试工具(Client、Server、UDP)
- TCP接收信息:
tcp in——debug - TCP发送信息:
tcp out——debug - 作Server:监听,只需配置端口号(IP为主机网卡地址)
- 作Client:连接,输入主机IP、端口号即可
- 应用:TCP通讯传输数据

2. UDP链接
- TCP调试助手(UDP)
- 发送信息到UDP本地:
inject——udp out(本地IP、端口) - 从UDP本地接收信息:
udp in(远程IP<网卡IP>、端口)——debug - 应用:UDP通讯传输数据

3. MQTT发布订阅
inject——mqtt out(服务端、发布主题)mqtt in——debug(服务端、订阅主题)- 客户端发布 _ 公网Server _客户端订阅
- 客户端发布 _ 私有Server _ 客户端订阅
- 可用公网Server进行练习测试,也可自己开发Server端 MQTT开发

4. http请求
http in(get)——function——http response- 输入:请求方法(查数据用GET,添新用POST;全改旧用PUT,微调用PATCH;想删干净DELETE一下。)、URL地址
- 应用:网址+URL 地址(http://localhost:1880/test);

5. modbus通讯
modbus read/write(modbus slave调试工具连接)——debugmodbus server(modbus poll调试工具连接)——debug- modbus:需要物理IP(非随意IP)

五、数据
1. MySql数据库链接
- 虚拟机安装Mysql数据库 Mysql安装; 更改主机名为任意IP 更改方法
- 主机安装Navicat客户端,测试连接成功 绝活哥; 新建数据库-表-插入测试内容;sql语句查询
inject——mysql2——debug- mysql2链接参数配置:主机名,端口,用户名,密码,数据库,表名 ; 查询语句Binds…:
select NAME FROM class1 WHERE ID=1; - 应用:链接Mysql数据库进行增删改查

2. 文件读写
inject——写入文件(路径:文件路径)inject——读取文件——debuginject——function——写入文件(msg.filename)- function:msg.filename=“C:\Intel\test1.txt”(代码中的路径不能有中文;双斜杠<单斜杠默认转译>)
- 输出:文件夹下新建文本文件,配置路径(复制粘贴路径)
- 应用:查看文件文件写入内容;查看调试窗口内容

六、节点
- 节点管理
- 搜索关键词即可安装
node-red-node-random:随机数node-red-contrib-mysql2: MySQL数据库node-red-contrib-modbus:MODBUS通讯node-red-contrib-loop:loop循环node-red-contrib-opcua:OPC UA通讯node-red-contrib-s7:S7通讯node-red-contrib-dashbored:Web控件node-red-contrib-email:邮件发送

七、 应用
1.企业微信机器人推送消息
inject——function(文本发送代码)——http request(post,API<企业微信机器人Webhook> )- 逻辑思路:时间戳触发功能块(文本发送至企业微信消息代码)到http response的请求
post的URL地址(机器人Webhook)

function4代码:群机器人配置说明
msg.payload={"msgtype": "text","text": {"content": "今日天气:29度,大部分多云,降雨概率:60%","mentioned_list":["小王","@all"],"mentioned_mobile_list":["mobilenumber","@all"]
}
}
return msg;
添加机器人:

2. 定时执行——过该时刻后5秒执行一个事件
- 记录时刻:时间戳写入文件time
- 逻辑思路:时间戳读取time文件的时间值,创建当前时间对象var newtime = new Date().Valueof(),与读取时间作差,为真执行输出;同时更新time文件的时间值

function7代码片段:
var newtime = new Date().valueOf() //获取当前时间值
if (newtime - parseInt(msg.payload) > 4*1000){ //过4S执行一次msg.Flag = true
}else{msg.Flag =false
}
function8代码片段:
msg.payload = new Date().valueOf()
3. 发送邮件
inject——send email- host:发信服务器 (SMTP),端口465
- secure:勾选
- user:发送的邮箱账号
- password:邮箱-安全设置-客户端专用密码

