nodred通过modbus协议向emqx创建规则引擎写入TDengine库过程
本文将介绍通过modscan模拟设备信号数据,通过nodered读取modbus数据,发送到emqx主题上,再通过emqx将数据存储到TDEngine数据库里面。
一、emqx存储数据到TDEngine数据库
EMQX安装、卸载 以及使用 - 第四章:EMQX使用-创建规则引擎写入tDengine
二、modscan模拟设备数据
1.新建文件:
2. 建立连接
3. 设置数据自变更
双击数据项,设置属性:
三、在Node-RED上模拟Modbus通讯
3.1 nodeRed环境搭建
3.1.1 nodered安装
noddered安装参考链接NodeRed环境搭建
进入nodered:
1、cmd
2、输入:node-red
3、启动后在浏览器输入:http://localhost:1880/
即可进入nodered开发界面
3.1.2 安装modbus驱动
点击右上角,选择“节点管理”:
3.2 nodeRed使用
3.3 nodered读取modbus发送的数据
- 在左侧菜单栏中,拖拽一个 modebus 的节点到页面中,双击节点后,右侧出现一个编辑 节点的配置页面,我们根据内容提示,新建一个连接信息后,点击 Done 【完成】按钮后,即可保存该节点信息。
- 在左侧菜单栏中,拖拽一个 function的节点到页面中,双击节点后,右侧出现一个编辑 节点的配置页面,设置输出对象,点击 Done 【完成】按钮后,即可保存该节点信息。
- 添加debug,在窗口打印数据:
- 部署流程:
部署后,在窗口能看到数据输出:
3.4 nodered发送数据到emqx主题
1、mqtt介绍:了解MQTT通讯协议及通讯过程
2、参考链接:使用 Node-RED 处理 MQTT 数据
将使用 EMQ 提供的 免费公共 MQTT 服务器,该服务基于 MQTT 物联网云平台 - EMQX Cloud 创建,服务器接入信息如下:
Broker: broker-cn.emqx.io
TCP Port: 1883
WebSocket Port: 8083
- 在左侧菜单栏中,拖拽一个 modebus 的节点到页面中,双击节点后,右侧出现一个编辑 节点的配置页面,我们根据内容提示,新建一个连接信息后,点击 Done 【完成】按钮后,即可保存该节点信息。
- 在左侧菜单栏中,拖拽一个 function的节点到页面中,双击节点后,右侧出现一个编辑 节点的配置页面,设置输出对象,点击 Done 【完成】按钮后,即可保存该节点信息。
- 在左侧菜单栏中,拖拽一个 mqtt out的节点到页面中,双击节点后,右侧出现一个编辑 节点的配置页面,我们根据内容提示,新建一个连接信息后,配置一个用户接收数据的 Topic,最后保存完成后,再将其和节点进行连接,点击右上角的 Deploy【部署】 按钮,即可对当前规则应用进行在线部署。
3.5 功能测试
有两种测试方法:
- 通过客户端查看:
在完成整个流数据处理的功能编排以后,我们使用 MQTT 客户端工具 - MQTT X 来测试和验证该功能的可用性。
(1)新建一个连接,连接到刚才在 Node-RED 中配置的 MQTT 云服务地址
(2)在 MQTT X 中订阅一个在 MQTT out 节点内配置的 Topic,用于消息数据。
订阅成功后,能看到控制台输出数据:
- 在数据库端查看,通过查询表数据,判断数据是否成功插入:
四、使用操作TDEngine数据库
4.1 查询TDEngine数据
- 从左便菜单拖入”inject“节点:
该节点的作用是手动或定期得将消息注入流中,可以是文本,变量,表达式,时间戳等。该节点前面没有可以流入的节点,消息体只能往后流。
点击节点的前部分可以触发该节点,也可以设置该节点为循环触发。
- 新增”function“节点:
function可以用于操作消息体.可以通过该节点,修改或验证消息体中的数据,在编写函数中,msg对象是函数体中可以直接操作的数据,
- 添加”http request“节点:
该节点可以发送HTTP请求并返回响应。
- 新增”debug“节点:
debug节点用来查看消息体的具体内容。在“调试”侧边栏选项卡和运行时日志中显示选定的消息属性。 默认情况下,它会显示msg.payload的值,但您也可以将其设置成显示任意属性,完整消息或JSONata表达式的结果。
- 部署
(1)将各个节点连起来,从inject连接到debug
(2)点击右上角的红色按钮部署,注意修改了任何节点的配置后,都要点一下部署,新的配置才能生效。
部署完成后,点击inject节点的就会触发流,然后就可以在调试窗口看到流中的payload中的消息体。