Thingsboard 中“設(shè)備配置”和“設(shè)備”的關(guān)系是一對多的關(guān)系,通過設(shè)備配置為每個(gè)設(shè)備設(shè)置不同的配置,每個(gè)設(shè)備都會(huì)有一個(gè)與其關(guān)聯(lián)的設(shè)備配置文件。等等,這不就是TDengine 中超級表的概念:
超級表是一種特殊的表結(jié)構(gòu),用于代表一類具有相同數(shù)據(jù)模式的數(shù)據(jù)采集點(diǎn)。一個(gè)超級表有多個(gè)子表,一個(gè)子表只能隸屬于一個(gè)超級表。
因此,將兩者有機(jī)結(jié)合起來:TDengine 中創(chuàng)建超級表作為“設(shè)備配置”,Thingsboard 中添加設(shè)備則自動(dòng)在TDengine 中創(chuàng)建子表,偉大的設(shè)計(jì)殊途同歸。

靈魂的碰撞
安裝部署
安裝過程可以直接參考官方安裝教程:https://thingsboard.io/docs/user-guide/install/ubuntu/
但是有兩點(diǎn)需要注意:
- 請點(diǎn)擊這里,聯(lián)系我們獲取適配版本。
- 配置文件增加 TDengine 相關(guān)連接配置:
# 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
操作步驟
- 創(chuàng)建“設(shè)備配置”
以一個(gè)車輛管理系統(tǒng)為例,需要記錄車輛的車牌號、數(shù)據(jù)上報(bào)時(shí)間、經(jīng)度、緯度、車速這幾個(gè)變量。因此,我們調(diào)用接口來創(chuàng)建一個(gè)新的“設(shè)備配置”。
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 中成功創(chuàng)建名稱為“profileStable” 的“設(shè)備配置”:

數(shù)據(jù)庫中成功創(chuàng)建超級表:

- 添加新設(shè)備
選擇已有配置“profileStable”,創(chuàng)建新的設(shè)備。

成功創(chuàng)建了一個(gè)名叫“測A88888″ 的設(shè)備,具體的子表名稱可以通過“復(fù)制設(shè)備ID” 查看。

- 測試寫入數(shù)據(jù)
直接通過訪問令牌,調(diào)用接口發(fā)送數(shù)據(jù)
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}'
界面中更新數(shù)據(jù)

數(shù)據(jù)庫中也寫入了最新的記錄

業(yè)務(wù)展示
場景一:車輛實(shí)時(shí)定位追蹤
- 數(shù)據(jù)采集:車輛GPS定位信息每秒傳輸?shù)絋hingsboard。
- 數(shù)據(jù)存儲(chǔ):在TDengine中創(chuàng)建表存儲(chǔ)定位數(shù)據(jù)。
- 數(shù)據(jù)展示:在Thingsboard創(chuàng)建地理位置圖表,展示車輛實(shí)時(shí)位置。

場景二:車隊(duì)維護(hù)預(yù)警
按日生成車輛每日超速次數(shù)。
- 創(chuàng)建流計(jì)算:在TDengine 中創(chuàng)建流計(jì)算
create stream high_speed fill_history 1 into high_speed subtable(concat('tb_', device_name)) as
select
_wstart as 日期,
count(speed) as 超速次數(shù),
device_name as 設(shè)備名稱
from
`1e169050-86e6-11ef-a5cf-2de52a1b0351`
where
speed > 90 partition by device_name interval(1d);
- 查看流計(jì)算結(jié)果

注:本次適配沒有修改原有前端頁面,需要調(diào)用HTTP API 來創(chuàng)建設(shè)備配置。感興趣的小伙伴可以完善一下,歡迎提交代碼交流。



互聯(lián)網(wǎng).png)



-1.png)




.png)


證.png)


伙伴.png)
伙伴.png)
伙伴.png)



