在物聯(lián)網(wǎng)領(lǐng)域,傳感器與服務(wù)器的通信、信息的收集以及MQTT協(xié)議都是可以考慮的方案之一。MQTT通常用于需要低功耗和低帶寬的場景,如物聯(lián)網(wǎng)設(shè)備、傳感器網(wǎng)絡(luò)、移動(dòng)應(yīng)用等。它的輕量級(jí)和高效特性使其非常適合在資源受限的設(shè)備和不可靠網(wǎng)絡(luò)環(huán)境中使用。
什么是MQTT協(xié)議?
MQTT(Message Queuing Telemetry Transport)是一種輕量級(jí)的消息傳遞協(xié)議,專為資源受限的設(shè)備和低帶寬、不可靠網(wǎng)絡(luò)環(huán)境設(shè)計(jì)。它最初由IBM開發(fā),現(xiàn)已成為物聯(lián)網(wǎng)領(lǐng)域的標(biāo)準(zhǔn)協(xié)議之一。MQTT的主要特點(diǎn)包括:
①發(fā)布/訂閱模型:MQTT使用發(fā)布/訂閱(Pub/Sub)通信模式,這與傳統(tǒng)的請(qǐng)求/響應(yīng)模型不同。在這種模式下,客戶端可以發(fā)布消息到某個(gè)主題(Topic),而其他對(duì)該主題感興趣的客戶端可以訂閱該主題,并接收相應(yīng)的消息。
②輕量級(jí)和高效:MQTT協(xié)議頭部非常小,開銷低,適用于帶寬受限的網(wǎng)絡(luò)環(huán)境。
③可靠性:MQTT提供了三種不同的服務(wù)質(zhì)量(QoS)級(jí)別,確保消息的傳遞可靠性:
QoS 0:最多一次傳遞(At most once)
QoS 1:至少一次傳遞(At least once)
QoS 2:只有一次傳遞(Exactly once)
④持久會(huì)話:MQTT支持持久會(huì)話,即客戶端斷開連接后,服務(wù)器可以保存該客戶端的訂閱信息和未接收的消息,當(dāng)客戶端重新連接時(shí),可以繼續(xù)接收未接收的消息。
⑤保留消息:發(fā)布者可以發(fā)送一條帶有保留標(biāo)志的消息,服務(wù)器會(huì)保存這條消息,并在有新的訂閱者訂閱該主題時(shí),將這條消息發(fā)送給訂閱者。
⑥遺囑消息:客戶端可以在連接時(shí)指定一條遺囑消息,當(dāng)客戶端意外斷開連接時(shí),服務(wù)器會(huì)將這條遺囑消息發(fā)布到指定的主題。
⑦安全性:MQTT可以通過TLS/SSL進(jìn)行加密,確保傳輸數(shù)據(jù)的安全性。此外,MQTT還支持用戶名和密碼認(rèn)證機(jī)制。
OneNet平臺(tái)準(zhǔn)備
首先,在OneNet平臺(tái)創(chuàng)建一個(gè)產(chǎn)品。OneNET平臺(tái)官網(wǎng)地址:https://open.iot.10086.cn
在「物聯(lián)網(wǎng)開放平臺(tái)」中找到「產(chǎn)品開發(fā)」,然后創(chuàng)建一個(gè)新的產(chǎn)品。
在產(chǎn)品品類中,提供了一些預(yù)設(shè)的模版,可以直接使用。
根據(jù)實(shí)際使用情況填入信息即可。為了方便后續(xù)數(shù)據(jù)觀察,數(shù)據(jù)協(xié)議選擇數(shù)據(jù)流協(xié)議,以便后續(xù)建立可視化模版。
確保接入?yún)f(xié)議為MQTT,其他信息根據(jù)實(shí)際情況進(jìn)行設(shè)置。確認(rèn)無誤后創(chuàng)建新的產(chǎn)品。
成功創(chuàng)建產(chǎn)品后,可以在產(chǎn)品開發(fā)頁面看到剛才創(chuàng)建的產(chǎn)品。接著,進(jìn)入產(chǎn)品開發(fā)頁面。
添加一個(gè)數(shù)據(jù)流模版,數(shù)據(jù)流名稱、單位名稱及單位符號(hào)根據(jù)實(shí)際情況填寫。這里為了演示,模擬采集環(huán)境的溫濕度情況。
創(chuàng)建成功后,記錄下創(chuàng)建的數(shù)據(jù)流模版名稱,稍后發(fā)布消息需要用到。
接下來需要?jiǎng)?chuàng)建新的設(shè)備。在設(shè)備接入管理中的設(shè)備管理頁面,點(diǎn)擊添加設(shè)備。
在所屬產(chǎn)品中選擇剛才創(chuàng)建的產(chǎn)品,在設(shè)備名稱中自定義設(shè)置一個(gè)設(shè)備名稱。其他信息根據(jù)情況設(shè)置。
成功配置后,可以在設(shè)備管理中看到剛才創(chuàng)建的設(shè)備。
隨后,點(diǎn)擊詳情,進(jìn)入設(shè)備相關(guān)頁面。可以看到一些基本信息,如設(shè)備ID、產(chǎn)品ID、設(shè)備名稱及設(shè)備密鑰。記錄下這些數(shù)據(jù),之后連接與通訊需要用到。
MQTT連接通訊元素
成功創(chuàng)建OneNet產(chǎn)品后,準(zhǔn)備MQTT連接通訊所需的三要素及訂閱發(fā)布主題。
MQTT三要素
使用標(biāo)準(zhǔn)的MQTT三要素通訊,需要了解產(chǎn)品的連接地址、端口、ClientID、UserName、Password。連接地址、端口在產(chǎn)品相關(guān)手冊(cè)中可以找到。在產(chǎn)品文檔中搜索“MQTT地址”即可快速定位到接入地址及端口。
注意:
MQTT接入地址可能發(fā)生變化,實(shí)際接入地址請(qǐng)以實(shí)際文檔說明為準(zhǔn)。
ClientID、UserName在設(shè)備詳情中可以直接得到,Password需要經(jīng)過key計(jì)算得到token。
具體的Token算法可以通過產(chǎn)品手冊(cè)了解。這里使用官方提供的工具進(jìn)行計(jì)算。
官方下載地址:https://open.iot.10086.cn/college/video/onenet-portal/2024-04-19/17134946071850.exe
軟件中的「res」在手冊(cè)中闡述了相關(guān)參數(shù)?!竐t」為時(shí)間戳:
根據(jù)手冊(cè)中的介紹格式:products/{產(chǎn)品ID}/devices/{設(shè)備名稱},將產(chǎn)品ID與設(shè)備名稱進(jìn)行修改,即可得到res值。
et為時(shí)間戳,填寫過期時(shí)間。這里為了演示,直接填寫「9999999999」。
注意:et是unix時(shí)間,通常不建議直接設(shè)置為9999999999。
key是設(shè)備密鑰,將對(duì)應(yīng)的值填入即可。確認(rèn)填入信息無誤后,即可生成MQTT連接需要的Password。
到這里我們就準(zhǔn)備好了MQTT連接的所有要素:連接地址、端口、ClientID,UserName,Password。
訂閱與發(fā)布主題
接下來,還需要獲取上報(bào)與接收的訂閱發(fā)布主題。同樣,這里我們通過手冊(cè)也可以找到官方發(fā)布的訂閱與發(fā)布主題屬性。
需要根據(jù)實(shí)際的使用情況選用適合的訂閱與發(fā)布。這里找到我們需要的訂閱與發(fā)布主題。本次演示使用【訂閱全部主題】以及【上報(bào)數(shù)據(jù)點(diǎn)】這兩個(gè)訂閱與發(fā)布主題。
訂閱全部物模型相關(guān)主題:$sys/{pid}/{device-name}/#
設(shè)備上傳數(shù)據(jù)點(diǎn)請(qǐng)求:$sys/{pid}/{device-name}/dp/post/json
根據(jù)手冊(cè)中的要求,將「設(shè)備名稱」以及「產(chǎn)品ID」填入即可。
發(fā)布消息
確認(rèn)連接地址與訂閱發(fā)布主題后,了解發(fā)布消息時(shí)使用的格式。這里演示使用數(shù)據(jù)流payload格式進(jìn)行發(fā)布。payload示例如下:
{"id": 123,"dp": {"數(shù)據(jù)流名稱": [{"v": #值}],"數(shù)據(jù)流名稱": [{"v": #值}]}}
這里演示上報(bào)的是溫度與濕度,將準(zhǔn)備的溫度與濕度名稱填入即可。
連接測試
接下來,即可開始使用設(shè)備連接。這里首先我們確認(rèn)下得到的參數(shù)是否能夠正常連接與通訊。
MQTTX模擬通訊
使用MQTT相關(guān)軟件進(jìn)行模擬,演示使用的是MQTTX軟件進(jìn)行模擬,首先將連接要素填入對(duì)應(yīng)的位置。
注意:這里可能會(huì)由于MQTT版本導(dǎo)致連接錯(cuò)誤。目前嘗試「MQTT 3.1.1」版本可以正常連接。需要特別留意版本。
隨后將準(zhǔn)備好的發(fā)布與訂閱主題填入對(duì)應(yīng)的位置。隨后嘗試連接,如果成功連接到OneNet平臺(tái),在設(shè)備管理中我們可以看到設(shè)備在線的提示。
接下來我們?cè)侔延嗛喤c發(fā)布主題填入對(duì)應(yīng)的位置。
準(zhǔn)備就緒,接下來即可開始嘗試進(jìn)行發(fā)布消息,根據(jù)前面準(zhǔn)備好的payload消息填入對(duì)應(yīng)的位置。然后發(fā)布消息。
可以看到,成功發(fā)送消息后,服務(wù)器返回了一個(gè)消息,告訴我們“id:xxx”的消息已經(jīng)收到。我們返回OneNet平臺(tái)的設(shè)備管理中的數(shù)據(jù)流可以看到剛才發(fā)布的消息已經(jīng)成功收到。
實(shí)物連接與通訊
確認(rèn)獲取的參數(shù)都無誤后,接下來我們可以通過一個(gè)實(shí)際的設(shè)備進(jìn)行模擬實(shí)際使用中的情況。在實(shí)際使用中,設(shè)備可能多種多樣,這里為了方便,使用一個(gè)串口服務(wù)器進(jìn)行模擬。關(guān)于產(chǎn)品的使用可以根據(jù)產(chǎn)品手冊(cè)或者相關(guān)視頻了解,這里具體不展開講解。首先將產(chǎn)品設(shè)置為MQTT工作模式,并將對(duì)應(yīng)的參數(shù)分別填入。
確認(rèn)無誤后,保存參數(shù)并重啟,稍等片刻,在OneNet中的設(shè)備管理頁面查看是否正常接入。
這里為了方便演示,我們使用電腦模擬溫度采集模塊,將采集到的溫濕度數(shù)據(jù)進(jìn)行處理后通過串口發(fā)送給串口服務(wù)器。這里使用一個(gè)串口工具,將剛才我們準(zhǔn)備好的上報(bào)消息,直接通過串口發(fā)送至串口服務(wù)器。
然后觀察OneNet平臺(tái)是否能夠正常收到數(shù)據(jù)。
可以看到,OneNet成功收到了串口服務(wù)器上報(bào)的消息。
可視化界面
到這里,關(guān)于產(chǎn)品的MQTT連接與通訊就全部完成了。但目前觀察產(chǎn)品上報(bào)的數(shù)據(jù)有些繁瑣,OneNet可以自行開發(fā)簡單的云平臺(tái)。我們根據(jù)這里的演示,建立個(gè)數(shù)據(jù)可視化的平臺(tái)。我們?cè)谖锫?lián)網(wǎng)平臺(tái)中,找到應(yīng)用開發(fā)中的數(shù)據(jù)可視化。
首先,我們新建一個(gè)項(xiàng)目。這里OneNet提供了一些模版可以直接使用,我們可以直接使用或者自己新建。
這里我們只是為了演示,所以使用一個(gè)空白模版,自己創(chuàng)建一個(gè)頁面。
完成后,進(jìn)入項(xiàng)目進(jìn)行編輯。
接下來我們就可以看到一個(gè)可視化的編輯頁面,可以根據(jù)自己喜好進(jìn)行設(shè)計(jì)。這里我們只是為了演示效果,所以任意選擇一個(gè)圖標(biāo)表示即可。
隨后,我們將數(shù)據(jù)綁定。在右側(cè)的數(shù)據(jù)頁面中,選擇管理數(shù)據(jù)源。
數(shù)據(jù)類型選擇物聯(lián)網(wǎng)平臺(tái)。其中名稱設(shè)定為我們的數(shù)據(jù)流名稱,UserID是OneNet用戶管理頁面中可以找到。
accessKey就是設(shè)備密鑰,產(chǎn)品ID、設(shè)備名稱都可以在設(shè)備的詳情中可以找到。
填寫完成后,數(shù)據(jù)流會(huì)自動(dòng)匹配,下拉即可看到剛才我們?cè)O(shè)置的兩個(gè)屬性。
刷新時(shí)間與獲取點(diǎn)數(shù)任意設(shè)置即可。完成后點(diǎn)擊創(chuàng)建。
隨后下拉剛才我們創(chuàng)建的數(shù)據(jù)源,即可看到已經(jīng)獲取到了數(shù)據(jù)。
同樣,我們用同樣的方法再把濕度創(chuàng)建為濕度數(shù)據(jù)。
接下里即可開始綁定數(shù)據(jù)。選擇剛才創(chuàng)建的數(shù)據(jù)源,隨后,需要根據(jù)要求,在數(shù)據(jù)過濾器中設(shè)置對(duì)應(yīng)數(shù)據(jù)。
然后點(diǎn)擊數(shù)據(jù)處理結(jié)果,檢查輸出數(shù)據(jù)是否符合要求。
同樣的方法,設(shè)置濕度、溫度顯示。
隨后,確認(rèn)無誤后,保存發(fā)布項(xiàng)目,即可通過鏈接訪問。
復(fù)制連接,然后確認(rèn)發(fā)布,通過鏈接,檢查是否能夠成功訪問。
隨后,我們?cè)偈褂么诠ぞ呱蠄?bào)數(shù)據(jù),檢查數(shù)據(jù)是否能夠同步刷新。
產(chǎn)品推薦
億佰特串口服務(wù)器產(chǎn)品涵蓋單串口服務(wù)器、多串口服務(wù)器、Wi-Fi串口服務(wù)器以及串口服務(wù)器模組等,可提供串口轉(zhuǎn)網(wǎng)絡(luò)功能,能夠?qū)⒋跀?shù)據(jù)轉(zhuǎn)換成TCP/IP協(xié)議數(shù)據(jù),實(shí)現(xiàn)串口與網(wǎng)絡(luò)的雙向透明傳輸。被廣泛應(yīng)用于考勤系統(tǒng)、機(jī)房監(jiān)控、電力監(jiān)控等場景。
-
設(shè)備
+關(guān)注
關(guān)注
2文章
4611瀏覽量
71323 -
MQTT協(xié)議
+關(guān)注
關(guān)注
0文章
98瀏覽量
5723 -
OneNET
+關(guān)注
關(guān)注
1文章
51瀏覽量
13152
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
OneNET Studio云平臺(tái)STM32物聯(lián)網(wǎng)開發(fā)(1)- MQTT協(xié)議設(shè)備接入數(shù)據(jù)上報(bào)測試

[Micropython][ESP8266] TPYBoard V202 之MQTT協(xié)議接入OneNET云平臺(tái)
ONENET3.0私有協(xié)議設(shè)備接入快速入門(一)
WIZnet W5500系列培訓(xùn)活動(dòng)之“MQTT協(xié)議講解和實(shí)踐(接入OneNET)”
[MicroPython]TPYBoard v202 MQTT協(xié)議2:上傳數(shù)據(jù)點(diǎn)到OneNET平臺(tái)
NodeMCU通過MQTT協(xié)議接入OneNET語言
基于OneNET View 3.0的可視化數(shù)據(jù)監(jiān)測系統(tǒng)的設(shè)計(jì)資料分享
OpenHarmony輕量系統(tǒng)開發(fā)【12】OneNET云接入
基于RT-Thread+RA6M4上傳onenet云平臺(tái)的設(shè)計(jì)資料分享
基于RT-Thread+RA6M4上傳onenet云平臺(tái)的設(shè)計(jì)實(shí)現(xiàn)
ESP8266通過MQTT協(xié)議連接ONENET

如何使用OneNET平臺(tái)的MQTT功能?

MQTT.fx 連接Onenet 多協(xié)議接入平臺(tái) MQTT協(xié)議(舊版)詳解

工業(yè)可視化監(jiān)控平臺(tái)可以接入哪些設(shè)備數(shù)據(jù)

評(píng)論