当前位置: 首页 > web >正文

TDengine 如何使用 MQTT 采集数据?

在这里插入图片描述

MQTT 是流行的物联网数据传输协议,EMQX 是一开源的 MQTT Broker 软件,无需任何代码,只需要在 EMQX Dashboard 里使用“规则”做简单配置,即可将 MQTT 的数据直接写入 TDengine。EMQX 支持通过 发送到 Web 服务的方式保存数据到 TDengine,也在企业版上提供原生的 TDengine 驱动实现直接保存。

前置条件

要让 EMQX 能正常添加 TDengine 数据源,需要以下几方面的准备工作。

  • TDengine 集群已经部署并正常运行
  • taosAdapter 已经安装并正常运行。具体细节请参考 taosAdapter 的使用手册
  • 如果使用后文介绍的模拟写入程序,需要安装合适版本的 Node.js,推荐安装 v12

安装并启动 EMQX

用户可以根据当前的操作系统,到 EMQX 官网下载安装包,并执行安装。安装后使用 sudo emqx startsudo systemctl start emqx 启动 EMQX 服务。

注意:本文基于 EMQX v4.4.5 版本,其他版本由于相关配置界面、配置方法以及功能可能随着版本升级有所区别。

创建数据库和表

在 TDengine 中为接收 MQTT 数据创建相应数据库和表结构。进入 TDengine CLI 复制并执行以下 SQL 语句:

CREATE DATABASE test;
USE test;
CREATE TABLE sensor_data (ts TIMESTAMP, temperature FLOAT, humidity FLOAT, volume FLOAT, pm10 FLOAT, pm25 FLOAT, so2 FLOAT, no2 FLOAT, co FLOAT, sensor_id NCHAR(255), area TINYINT, coll_time TIMESTAMP);

注:表结构以博客 数据传输、存储、展现,EMQX + TDengine 搭建 MQTT 物联网数据可视化平台 为例。后续操作均以此博客场景为例进行,请你根据实际应用场景进行修改。

配置 EMQX 规则

由于 EMQX 不同版本配置界面所有不同,这里仅以 v4.4.5 为例,其他版本请参考相应官网文档。

登录 EMQX Dashboard

使用浏览器打开网址 http://IP:18083 并登录 EMQX Dashboard。初次安装用户名为 admin 密码为:public
在这里插入图片描述

创建规则(Rule)

选择左侧“规则引擎(Rule Engine)”中的“规则(Rule)”并点击“创建(Create)”按钮:

在这里插入图片描述

编辑 SQL 字段

复制以下内容输入到 SQL 编辑框:

SELECTpayload
FROM"sensor/data"

其中 payload 代表整个消息体,sensor/data 为本规则选取的消息主题。

在这里插入图片描述

新增“动作(action handler)”

在这里插入图片描述

新增“资源(Resource)”

在这里插入图片描述

选择“发送数据到 Web 服务”并点击“新建资源”按钮:

编辑“资源(Resource)”

选择“WebHook”并填写“请求 URL”为 taosAdapter 提供 REST 服务的地址,如果是本地启动的 taosadapter,那么默认地址为:

http://127.0.0.1:6041/rest/sql

其他属性请保持默认值。

在这里插入图片描述

编辑“动作(action)”

编辑资源配置,增加 Authorization 认证的键/值配对项。默认用户名和密码对应的 Authorization 值为:

Basic cm9vdDp0YW9zZGF0YQ==

相关文档请参考 TDengine REST API 文档。

在消息体中输入规则引擎替换模板:

INSERT INTO test.sensor_data VALUES(now,${payload.temperature},${payload.humidity},${payload.volume},${payload.PM10},${payload.pm25},${payload.SO2},${payload.NO2},${payload.CO},'${payload.id}',${payload.area},${payload.ts}
)

在这里插入图片描述
最后点击左下方的“Create”按钮,保存规则。

编写模拟测试程序

{{#include docs/examples/other/mock.js}}

注意:代码中 CLIENT_NUM 在开始测试中可以先设置一个较小的值,避免硬件性能不能完全处理较大并发客户端数量。

在这里插入图片描述

执行测试模拟发送 MQTT 数据

npm install mqtt mockjs --save --registry=https://registry.npm.taobao.org
node mock.js

在这里插入图片描述

验证 EMQX 接收到数据

在 EMQX Dashboard 规则引擎界面进行刷新,可以看到有多少条记录被正确接收到:

在这里插入图片描述

验证数据写入到 TDengine

使用 TDengine CLI 程序登录并查询相应数据库和表,验证数据是否被正确写入到 TDengine 中:

在这里插入图片描述

EMQX 详细使用方法请参考 EMQX 官方文档。

关于 TDengine

TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。它能安全高效地将大量设备每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,并提供 AI 智能体对数据进行预测与异常检测,提供实时的商业洞察。

http://www.xdnf.cn/news/14797.html

相关文章:

  • lambda、function基础/响应式编程基础
  • [论文阅读] 软件工程 | 微前端在电商领域的实践:一项案例研究的深度解析
  • NLP中的同义词替换及我踩的坑
  • 创客匠人视角:创始人 IP 打造为何成为知识变现的核心竞争力
  • 【算法深练】单调栈:有序入栈,及时删除垃圾数据
  • 鸿蒙5:组件监听和部分状态管理V2
  • 为何需要防爆平板?它究竟有何能耐?
  • 【龙泽科技】新能源汽车故障诊断仿真教学软件【吉利几何G6】
  • 学习使用dotnet-dump工具分析.net内存转储文件(2)
  • vue-28(服务器端渲染(SSR)简介及其优势)
  • 舵机在不同类型机器人中的应用
  • Python 数据分析与可视化 Day 10 - 数据合并与连接
  • Linux的top指令CPU占用率详解(白话版)——Linux进阶常用知识点
  • 网络缓冲区
  • uni-app项目实战笔记26--uniapp实现富文本展示
  • 展开说说:Android之ContentProvider源码浅析
  • 机器学习算法-K近邻算法-KNN
  • Linux tcp_info:监控TCP连接的秘密武器
  • Day44 预训练模型
  • OpenCV图像添加水印
  • Python 数据分析与可视化 Day 9 - 缺失值与异常值处理技巧
  • 秘窟燃战.纷魄凌霄(第二集)
  • Re:从零开始的文件分配方式(考研向)
  • 深入浅出Java NIO:原理、实战与性能优化
  • FPGA在嵌入式图像处理中的深度应用!
  • Springboot多用户博客管理系统的设计与实现0ce8q(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 【大数据】大数据产品基础篇
  • 微信小程序:实现树形结构组件
  • 用 pnpm + TurboRepo,构建多项目高效开发体系
  • 【C语言】知识总结·指针篇