A place to hold mainly reading notes, and some technical stuff occasionally. 这里主要是一些读书笔记、感悟;还有部分技术相关的内容。
目录[-]
几年前曾根据 Node-Red
官网示例进行了简单的体验,当时觉得这东西就是个玩具,拿过来玩一玩可以,不实用;但是如今发现有不少产品对其进行了集成,并做出了复杂的商业应用,这确实是极大的震撼。
使用看似简单的工具,实现真正复杂的应用。
要本地运行 Node-Red
,有 Node.js
环境就够了。
不过 Node-Red
新版的 V3.x
版本需要 Node.js
在 V14
以上,所以用惯了 NodeV10
或者 V12
的,可能需要更新下环境,这里建议使用nvm管理不同版本的Node.js。
# 列出当前已安装的Node.js,同 nvm ls
nvm list
# 列出可下载的Node.js版本号
nvm list available
# 下载安装指定版本的Node.js
nvm install 16.18.0
# 切换到指定版本的Node.js
nvm use 16.18.0
# 列出当前已安装的Node.js,同 nvm ls
nvm list
# 卸载指定版本的Node.js
nvm uninstall 16.18.0
但是要实现 OPCUA
数据订阅,发布至MQTT并落库MySQL,则还需要 OPCUA
的模拟服务器 Prosys OPC UA Simulation Server
,作为 MQTT Broker
的 EMQX
与MQTT客户端测试工具 MQTTX
,以及持久化存储 MySQL
或者时序数据库 TDengine
等工具。
如果是使用 Win7
,默认只能用到的 Node
最高版本为 V13
,需要进行以下调整。
在 Win7
系统环境变量中新建环境变量: NODE_SKIP_PLATFORM_CHECK
,值设为1。
# 全局安装
npm i -g node-red
# 运行
node-red
官方提供了两个示例流程,可以快速上手,建议阅读英文文档,因为中文网的示例程序中链接过期。
在默认的节点中不包含 OPCUA
节点,需要到节点管理(点击右上角菜单下)的市场上搜索安装,各路大神开放了各类节点;从我当前的目标出发,简单通过关键词检索了一下,基本覆盖了工业互联网设备接入的各种协议以及各类数据库的操作。
因为 IBM
这款开源系统是针对物联网行业而研发的,那么作为物联网设备上云事实上的标准通信协议, Node-Red
已默认集成了 MQTT
组件。
JavaScript
的函数能力实现。msg.payload = {
'device': msg.topic,
'plc': msg.payload,
'create_time': new Date().toLocaleString()
};
return msg;
在默认的节点中不包含 MySQL
节点,需要到节点管理的市场上搜索安装。
CREATE TABLE `plc_test` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`plc` FLOAT NULL DEFAULT NULL,
`create_time` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb4_0900_ai_ci'
ENGINE=InnoDB;
JavaScript
的函数能力实现 SQL
语句构造。let insertOne = "INSERT INTO plc_test(plc, create_time) VALUES ('%f','%s')";
msg.topic = util.format(insertOne, msg.payload.plc, msg.payload.create_time)
return msg;
数据成功写入数据库中。
通过使用可视化连线的方式,可以轻松实现数据清洗、告警分发和逻辑联动等任务,降低了系统的使用门槛。Node-Red
提供了灵活的集成能力,可以连接各种设备、传感器和应用程序,帮助用户快速构建高效的系统。此外,Node-Red
还具有可扩展性,可以轻松地添加新的节点和功能,以适应不断变化的需求。
综上,先是介绍了运行 Node-Red
所需的环境准备,包括安装 Node.js
和一些其他工具。接下来,文章介绍了 Node-Red
的安装和运行方法。在拖拉拽操作部分,介绍了如何使用 Node-Red
进行 OPCUA
数据订阅、发布至 MQTT
主题和将数据存储到 MySQL
数据库中。 Node-Red
是一个强大而灵活的工具,可以帮助你实现复杂的应用。
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!