钜形不锈钢水箱 发表于 2025-1-8 00:52:19

TDengine + MQTT :车联网时序数据库如何高效接入

今世新能源汽车,作为一种内部系统极为复杂的交通工具,配备了大量传感器、导航设备、应用软件,这些传感器产生的数据都必要上报到车联网平台当中。对于这些车辆的状态数据(如车速、发动机转速等)、位置数据(经纬度等)以及用户举动数据,车联网平台必要对它们举行实时/离线盘算分析,从而为用户提升驾驶体验,提供安全保障,为厂商提供质量检测、功能优化,为交通管理部门提供流量、违章监测、甚至为城市规划提供帮助。
在车联网领域中 MQTT 是十分常见的协议,它所具备的:可以或许适应不稳定的网络环境、轻量级、低延迟等特点,使其非常适合车辆数据的上报,也是目前主流的车联网边端-云端数据交互的通讯协议。
而 TDengine 是一款从诞生之初便致力于为工业、物联网领域推动信息化改革的时序大数据平台。而车联网作为物联网的重要分支,自然也是 TDengine 主攻的领域之一。因此,在 TDengine Enterprise/TDengine Cloud 的外部数据源接入组件中,我们提供了诸如:MQTT、OPC-UA、OPC-DA 等数据直采的功能。让用户可以凭借十分简单的 Web 界面设置,无需任何一行代码,便完成车联网的位置、车辆状态、用户举动等数据的接入。
我们可以想象出如许一个场景:
通过 TDengine 的 web 界面工具,订阅 MQTT 的 “GPS” topic 们获取全部车辆的 GPS 数据,然后把“GPS” topic 和 TDengine 中创建出来的“超级表 GPS”对应起来,再把 MQTT 数据中的“车牌号”, “车型”,“汽车品牌”同 TDengine “GPS” 超级表中差别的标签映射起来。最终, MQTT 数据就可以源源不断地接入TDengine 当中了。
TDengine 的数据收罗插件就像是一个翻译官,它能理解 MQTT 数据结构映射到时序库数据结构的需求,最终把他们奥妙地结合在一起。
那么,使用 TDengine 收罗车联网上报的 MQTT 数据到底有多简单?

抽象一下,只必要如下步调:
1. 对于非 TDengine Enterprise(企业版)用户,花 3 分钟时间注册 TDengine Cloud ,https://cloud.taosdata.com/auth/login,根据提示兑换 600 元额度的免费使用。
2. 在TDengine 中提前创建好一个数据库,用于存放MQTT数据。(具体建库参数值如需自界说,可参阅:数据库 | TDengine 文档 | 涛思数据)
https://i-blog.csdnimg.cn/direct/589725951ce4428793edd17f9288604a.png
3. 确保署理插件和 MQTT server 处在同一网络,然后根据提示,逐步复制粘贴,安装署理插件并启动。
https://i-blog.csdnimg.cn/direct/8d19c69f1e534494a5183ce926ba3b40.pnghttps://i-blog.csdnimg.cn/direct/34515bf5bd7a410089d47b86eabd65c8.png
4. 新增数据源。
https://i-blog.csdnimg.cn/direct/4316f47e9dec4abfbce0a6f39b8d0539.png
5. 按顺序填写/选择:自界说的任务名称;MQTT 类型;选择刚刚创建的署理插件;填写MQTT server 的 IP 和端口。 PS:这里可以用一个免费的 MQTT server 做验证(broker.emqx.io:1883)。
https://i-blog.csdnimg.cn/direct/cea1661ecff4425a8957bdc1d6303187.png
6. 填写 MQTT 协议版本、自界说的Client ID、和必要订阅的主题(topic)以及该订阅的 QOS (Quality of Service 服务质量)级别,QOS 可选范围为0、1、2,具体写法参考示例即可。(用户名密码为选填项。)
https://i-blog.csdnimg.cn/direct/2ac0394e292d485e941ab29eeac83d23.png
7. 解析数据,在MQTT Payload 模块中设置解析 MQTT 消息:
可以点击从服务器检索,从 MQTT Broker 获得示例数据。也可以自己填写 MQTT 消息体中的示例数据,比方:{“id”: 1, “message”: “hello-word”}{“id”: 2, “message”: “hello-word”}。
https://i-blog.csdnimg.cn/direct/17f7f6c436a64614bc6b94fab3e55d1a.png
8. 获得数据之后,可以选择自界说的方式依次行止置惩罚这个json:


[*]提取出列。
[*]对提取出的列数据,通过分隔符、正则表达式等举行提取或拆分:比如把“中国-北京”拆分成“中国”和“北京” 两列。
[*]对最终的结果举行过滤:比如只取车速大于 xxx 的数据。
https://i-blog.csdnimg.cn/direct/d05de9f8bfc9475499d17a73298aacf4.png
9. 创建一个超级表,用于存储MQTT数据。然后把刚刚处置惩罚过的 MQTT 数据结构和 TDengine 的超级表做一个映射关系:这里我们可以使用各种机动的方式处置惩罚映射关系。比如设置时间戳自动生成、固定制、默认值、以及最根本的匹配。
https://i-blog.csdnimg.cn/direct/5cf5ca310f434cdc95b2a5ef2df076e9.png
10. 填写完成以上信息后,下拉到底部点击“保存并应用”按钮,即可直接启动从 MQTT 到 TDengine 的数据同步了。
https://i-blog.csdnimg.cn/direct/d87fc2958e3d48a2ab2b3ee9d20ec15b.png
11.在这里看到毗连署理和数据源任务都处于正常状态之后,就可以去TDengine 中使用 SQL 语句查抄我们的 MQTT 数据了。
https://i-blog.csdnimg.cn/direct/88089670f9a44e76a0325f09483d6cc9.pnghttps://i-blog.csdnimg.cn/direct/41e5211eea134611898b8fa71c4c25c8.png
现在,我们已经看到MQTT server 的数据正在源源不断地写入 TDengine 了。
在这个设置过程中,我们还能在 WEB 页面看到很多其他设置项,但是他们都是选填项,这部分用户可以根据实际情况填写,比如:

[*]用户名/密码,SSL 认证。
[*]Keep Alive 和 Clean Session 为具体使用时候关于空毗连开释和是否记载订阅进度的设置。
[*]署理插件的日记级别、日记保存天数、mqtt原始数据的保存设置。
现在,我们就已经轻松完成了车辆 MQTT 数据的上传。整个过程中,唯一耗时的地方,可能就在于 MQTT 数据结构和 TDengine 的超级表结构的匹配环节。假如您对 TDengine 的“超级表-子表”的数据模子十分熟悉的话,想必不会花很多时间。




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: TDengine + MQTT :车联网时序数据库如何高效接入