現(xiàn)代新能源汽車,作為一種內部系統(tǒng)極為復雜的交通工具,配備了大量傳感器、導航設備、應用軟件,這些傳感器產生的數(shù)據(jù)都需要上報到車聯(lián)網(wǎng)平臺當中。對于這些車輛的狀態(tài)數(shù)據(jù)(如車速、發(fā)動機轉速等)、位置數(shù)據(jù)(經(jīng)緯度等)以及用戶行為數(shù)據(jù),車聯(lián)網(wǎng)平臺需要對它們進行實時/離線計算分析,從而為用戶提升駕駛體驗,提供安全保障,為廠商提供質量檢測、功能優(yōu)化,為交通管理部門提供流量、違章監(jiān)測、甚至為城市規(guī)劃提供幫助。
在車聯(lián)網(wǎng)領域中 MQTT 是十分常見的協(xié)議,它所具備的:能夠適應不穩(wěn)定的網(wǎng)絡環(huán)境、輕量級、低延遲等特點,使其非常適合車輛數(shù)據(jù)的上報,也是目前主流的車聯(lián)網(wǎng)邊端-云端數(shù)據(jù)交互的通訊協(xié)議。
而 TDengine 是一款從誕生之初便致力于為工業(yè)、物聯(lián)網(wǎng)領域推動信息化改革的時序大數(shù)據(jù)平臺。而車聯(lián)網(wǎng)作為物聯(lián)網(wǎng)的重要分支,自然也是 TDengine 主攻的領域之一。因此,在 TDengine Enterprise/TDengine Cloud 的外部數(shù)據(jù)源接入組件中,我們提供了諸如:MQTT、OPC-UA、OPC-DA 等數(shù)據(jù)直采的功能。讓用戶可以憑借十分簡單的 Web 界面配置,無需任何一行代碼,便完成車聯(lián)網(wǎng)的位置、車輛狀態(tài)、用戶行為等數(shù)據(jù)的接入。
我們可以想象出這樣一個場景:
通過 TDengine 的 web 界面工具,訂閱 MQTT 的 “GPS” topic 們獲取全部車輛的 GPS 數(shù)據(jù),然后把“GPS” topic 和 TDengine 中創(chuàng)建出來的“超級表 GPS”對應起來,再把 MQTT 數(shù)據(jù)中的“車牌號”, “車型”,“汽車品牌”同 TDengine “GPS” 超級表中不同的標簽映射起來。最終, MQTT 數(shù)據(jù)就可以源源不斷地接入TDengine 當中了。
TDengine 的數(shù)據(jù)采集插件就像是一個翻譯官,它能理解 MQTT 數(shù)據(jù)結構映射到時序庫數(shù)據(jù)結構的需求,最終把他們巧妙地結合在一起。
那么,使用 TDengine 采集車聯(lián)網(wǎng)上報的 MQTT 數(shù)據(jù)到底有多簡單?
抽象一下,只需要如下步驟:
1. 對于非 TDengine Enterprise(企業(yè)版)用戶,花 3 分鐘時間注冊 TDengine Cloud ,https://cloud.taosdata.com/auth/login,根據(jù)提示兌換 600 元額度的免費使用。
2. 在TDengine 中提前創(chuàng)建好一個數(shù)據(jù)庫,用于存放MQTT數(shù)據(jù)。(具體建庫參數(shù)值如需自定義,可參閱:https://docs.taosdata.com/reference/taos-sql/database/)

3. 確保代理插件和 MQTT server 處在同一網(wǎng)絡,然后根據(jù)提示,逐步復制粘貼,安裝代理插件并啟動。


4. 新增數(shù)據(jù)源。

5. 按順序填寫/選擇:自定義的任務名稱;MQTT 類型;選擇剛剛創(chuàng)建的代理插件;填寫MQTT server 的 IP 和端口。 PS:這里可以用一個免費的 MQTT server 做驗證(broker.emqx.io:1883)。

6. 填寫 MQTT 協(xié)議版本、自定義的Client ID、和需要訂閱的主題(topic)以及該訂閱的 QOS (Quality of Service 服務質量)級別,QOS 可選范圍為0、1、2,具體寫法參考示例即可。(用戶名密碼為選填項。)

7. 解析數(shù)據(jù),在MQTT Payload 模塊中配置解析 MQTT 消息:
可以點擊從服務器檢索,從 MQTT Broker 獲得示例數(shù)據(jù)。也可以自己填寫 MQTT 消息體中的示例數(shù)據(jù),例如:{“id”: 1, “message”: “hello-word”}{“id”: 2, “message”: “hello-word”}。

8. 獲得數(shù)據(jù)之后,可以選擇自定義的方式依次去處理這個json:
- 提取出列。
- 對提取出的列數(shù)據(jù),通過分隔符、正則表達式等進行提取或拆分:比如把“中國-北京”拆分成“中國”和“北京” 兩列。
- 對最終的結果進行過濾:比如只取車速大于 xxx 的數(shù)據(jù)。。

9. 創(chuàng)建一個超級表,用于存儲MQTT數(shù)據(jù)。然后把剛剛處理過的 MQTT 數(shù)據(jù)結構和 TDengine 的超級表做一個映射關系:這里我們可以使用各種靈活的方式處理映射關系。比如設置時間戳自動生成、固定制、默認值、以及最基本的匹配。

10. 填寫完成以上信息后,下拉到底部點擊“保存并應用”按鈕,即可直接啟動從 MQTT 到 TDengine 的數(shù)據(jù)同步了。

11.在這里看到連接代理和數(shù)據(jù)源任務都處于正常狀態(tài)之后,就可以去TDengine 中使用 SQL 語句檢查我們的 MQTT 數(shù)據(jù)了。


現(xiàn)在,我們已經(jīng)看到MQTT server 的數(shù)據(jù)正在源源不斷地寫入 TDengine 了。
在這個配置過程中,我們還能在 WEB 頁面看到很多其他配置項,但是他們都是選填項,這部分用戶可以根據(jù)實際情況填寫,比如:
- 用戶名/密碼,SSL 認證。
- Keep Alive 和 Clean Session 為具體使用時候關于空連接釋放和是否記錄訂閱進度的配置。
- 代理插件的日志級別、日志保留天數(shù)、mqtt原始數(shù)據(jù)的保留設置。
現(xiàn)在,我們就已經(jīng)輕松完成了車輛 MQTT 數(shù)據(jù)的上傳。整個過程中,唯一耗時的地方,可能就在于 MQTT 數(shù)據(jù)結構和 TDengine 的超級表結構的匹配環(huán)節(jié)。如果您對 TDengine 的“超級表-子表”的數(shù)據(jù)模型十分熟悉的話,想必不會花很多時間。



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



-1.png)












伙伴.png)



