时序数据库 TDengine 支持集成开源的物联网平台 ThingsBoard

embedded/2024/10/25 3:56:12/

Thingsboard 中“设备配置”和“设备”的关系是一对多的关系,通过设备配置为每个设备设置不同的配置,每个设备都会有一个与其关联的设备配置文件。等等,这不就是TDengine 中超级表的概念:

超级表是一种特殊的表结构,用于代表一类具有相同数据模式的数据采集点。一个超级表有多个子表,一个子表只能隶属于一个超级表。

因此,将两者有机结合起来:TDengine 中创建超级表作为“设备配置”,Thingsboard 中添加设备则自动在TDengine 中创建子表,伟大的设计殊途同归。

灵魂的碰撞

安装部署

安装过程可以直接参考官方安装教程:Installing ThingsBoard CE on Ubuntu Server | ThingsBoard Community Edition

但是有两点需要注意:

  • 请点击这里,联系我们获取适配版本。
  • 配置文件增加 TDengine 相关连接配置:
# spring.tdengine
export TDENGINE_URL=jdbc:TAOS-RS://127.0.0.1:6041/thingsboard
export TDENGINE_USERNAME=root
export TDENGINE_PASSWORD=taosdata
export TDENGINE_STR_LEN=1024
export TDENGINE_STR_COL_MAX=65517
export TDENGINE_STR_TAG_MAX=16382

操作步骤

1.创建“设备配置”

以一个车辆管理系统为例,需要记录车辆的车牌号、数据上报时间、经度、纬度、车速这几个变量。因此,我们调用接口来创建一个新的“设备配置”。

curl -X POST 'http://127.0.0.1:8080/api/deviceProfile' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer $YOUR_JWT_TOKEN_HERE' \
--data-raw '{"name": "truck","type": "DEFAULT","image": null,"defaultQueueName": null,"transportType": "DEFAULT","provisionType": "DISABLED","description": "","profileData": {"configuration": {"type": "DEFAULT"},"transportConfiguration": {"type": "DEFAULT"},"alarms": null,"provisionConfiguration": {"type": "DISABLED"}},"tableInfo": {"columns": [{"name":"longtitude","type":"double","len":10},{"name":"latitude","type":"double"},{"name":"speed","type":"float"}],"tags": [{"name":"license_plate_number","type":"nchar","len":8}]}
}'

Thingsboard 中成功创建名称为“profileStable” 的“设备配置”:

数据库中成功创建超级表:

2.添加新设备

选择已有配置“profileStable”,创建新的设备。

成功创建了一个名叫“测A88888″ 的设备,具体的子表名称可以通过“复制设备ID” 查看。

3.测试写入数据

直接通过访问令牌,调用接口发送数据

curl -X POST 'http://127.0.0.1:8080/api/v1/$YOU_DEVICE_TOKEN/telemetry' \
--header 'Content-Type: application/json' \
--data-raw '{"license_plate_number":"京A88888","longtitude":108.938744,"latitude":34.368150,"speed":60}'

界面中更新数据

数据库中也写入了最新的记录

业务展示

场景一:车辆实时定位追踪

  • 数据采集:车辆GPS定位信息每秒传输到Thingsboard。
  • 数据存储:在TDengine中创建表存储定位数据。
  • 数据展示:在Thingsboard创建地理位置图表,展示车辆实时位置。

场景二:车队维护预警

按日生成车辆每日超速次数。

  • 创建流计算:在TDengine 中创建流计算
create stream high_speed fill_history 1 into high_speed subtable(concat('tb_', device_name)) as
select_wstart as 日期,count(speed) as 超速次数,device_name as 设备名称
from`1e169050-86e6-11ef-a5cf-2de52a1b0351`
wherespeed > 90 partition by device_name interval(1d);
  • 查看流计算结果

注:本次适配没有修改原有前端页面,需要调用HTTP API 来创建设备配置。感兴趣的小伙伴可以完善一下,欢迎提交代码交流。


http://www.ppmy.cn/embedded/132230.html

相关文章

针对 el-date picker pickerOptions 快捷选项的超级方法

提供快捷的配置,支持原子组合,高级用法支持用户自定义配置项 demo import { generateShortCuts } from ./date-shortcuts.js ... pickerOptions: {shortcuts: generateShortCuts({type: day}) } ...date-shortcuts 文件 import moment from moment // …

vue使用 jsplumb 生成流程图

1、安装jsPlumb: npm install jsplumb 2、 在使用的 .vue 文件中引入 import { jsPlumb } from "jsplumb"; 简单示例: 注意:注意看 id 为"item-3"和"item-9"那条数据的连线配置 其中有几个小图片&#x…

银河麒麟(debian)下安装postgresql、postgis

1、安装postgresql、postgis sudo apt update sudo apt install postgresql postgresql-contrib sudo apt install postgis postgresql-12-postgis-32、创建一个使用postgis的数据库 sudo -i -u postgres #postgres管理员用户createdb gisdb #创建新的gisdb数据库 psql -d gi…

Mac ARM 本地运行 Mini-Omni 记录

Mini-Omni是一个开源的多模态大型语言模型,可以听、说和思考。具有实时端到端语音输入和流式音频输出的对话能力。Github 安装 conda miniconda 安装 执行 # 创建一个python环境 conda create -n omni python3.10 conda activate omni# clone项目 git clone http…

react18中如何监听localstorage的变化获取最新的本地缓存

有时候业务中会需要监听缓存的变化,实时更新页面的内容获取发送接口请求。这就要我们来监听对localstorage的修改,实时响应变化!!一下方法同样实用于vue项目。 同一个项目中不同页面的实现 实现效果 代码分析 修改localstoare的…

每天五分钟深度学习框架pytorch:从底层搭建多项式线性回归模型

本文重点 和上一节课程一样,本文我们将不使用pytorch搭建一个多项式的回归模型,来增加我们对使用pytorch搭建多项式回归模型的理解。 模型 #定义参数和模型 w=torch.randn(3,1,requires_grad=True) b=torch.randn(1,requires_grad=True) def Linear(x): return torch.mm(x…

【数据库】Mysql的锁类型

Mysql中的锁机制主要是为了保证数据的一致性和完整性,在并发的情况下起着至关重要的作用。其中锁的类型主要是分为以下几种: 按照粒度分类 全局锁:对于整个数据库实例进行枷锁,加锁后整个实例就处于只读的状态。局锁通常用于需要…

人工智能:未来生活与工作的变革力量

人工智能(AI)作为21世纪最具变革性的技术之一,正以前所未有的速度改变着我们的生活和工作方式。从医疗行业的突破性进展到企业运营的智能化,以及日常生活中各种智能产品的普及,人工智能正在成为现代社会不可或缺的一部…