MQTT是一種發(fā)布(publish)/訂閱(subscribe)協(xié)議,MQTT協(xié)議采用發(fā)布/訂閱模式,所有的物聯(lián)網(wǎng)終端都通過TCP連接到云端,云端通過主題的方式管理各個設(shè)備關(guān)注的通訊內(nèi)容,負(fù)責(zé)將設(shè)備與設(shè)備之間消息的轉(zhuǎn)發(fā)。MQTT 協(xié)議解決了物聯(lián)網(wǎng)中一個最基礎(chǔ)的問題:設(shè)備和設(shè)備之間、設(shè)備和云端服務(wù)之間是如何進行數(shù)據(jù)通訊的。
MQTT網(wǎng)關(guān)起到將普通的串口數(shù)據(jù)、Modbus RTU數(shù)據(jù)等轉(zhuǎn)化為MQTT協(xié)議的作用,通過連接服務(wù)器、訂閱和發(fā)布主題來實現(xiàn)傳統(tǒng)設(shè)備和MQTT云端的聯(lián)系。例如,筆記本和手機都向MQTT服務(wù)器訂閱了消息主題為溫度的消息,當(dāng)MQTT網(wǎng)關(guān)向這個服務(wù)器發(fā)布溫度傳感器的消息(當(dāng)前溫度為21℃),筆記本和手機都會收到發(fā)布的溫度。卓嵐的MQTT產(chǎn)品可以充當(dāng)本地設(shè)備和MQTT云服務(wù)器之間的橋梁。
類型 | 型號 |
---|---|
4G DTU | ZLAN8303-7 ? |
以太網(wǎng) | ZLAN5143 ? |
Wifi+以太網(wǎng) | ZLAN7144 ? |
Wifi | ZLAN7146 ? |
內(nèi)嵌MQTT網(wǎng)關(guān)模塊(以太網(wǎng)) | ZLSN2043S ? |
內(nèi)嵌MQTT網(wǎng)關(guān)模塊(wifi) | ZLSN7046T ? |
內(nèi)嵌MQTT網(wǎng)關(guān)模塊(wifi+以太網(wǎng)) | ZLSN7044 ? |
MQTT網(wǎng)關(guān)單芯片 | ZLAN1043 ? |
MQTT數(shù)據(jù)采集網(wǎng)關(guān)(8路模擬量輸入、數(shù)字量輸入/輸出) | ZLAN6844 ? |
除了數(shù)據(jù)采集網(wǎng)關(guān)通過模擬量和數(shù)字量對外接口外,其它MQTT網(wǎng)關(guān)都采用串口(RS485、RS232、RS422、TTL)來和設(shè)備對接。支持MQTT云平臺有百度云、阿里云等。
1.自動采集:溫度傳感器采用的Modbus RTU協(xié)議需要每隔一段時間去詢問設(shè)備,獲得當(dāng)前溫度。但MQTT協(xié)議屬于有消息就發(fā)布的機制MQTT服務(wù)器無法擔(dān)任這個任務(wù),必須讓MQTT網(wǎng)關(guān)自動查詢溫度傳感器,并將獲得數(shù)據(jù)存儲起來,并定時上發(fā)服務(wù)器。卓嵐MQTT網(wǎng)關(guān)可配置Modbus輪詢指令或者非標(biāo)準(zhǔn)的串口設(shè)備指令。
2.格式轉(zhuǎn)化:設(shè)備端采用的是十六進制指令,比如01 03 02 12 34 b5 33的數(shù)據(jù),這種數(shù)據(jù)對于云端比較難統(tǒng)一和識別。卓嵐MQTT網(wǎng)關(guān)支持將Modbus RTU數(shù)據(jù)轉(zhuǎn)化為JSON格式后上發(fā),比如以上十六進制數(shù)據(jù)變?yōu)椋簕“power”:”1234”}這種格式。
1.采用MQTT為基礎(chǔ)的協(xié)議和服務(wù)器建立連接,采用訂閱發(fā)布的形式進行數(shù)據(jù)通訊。
2.支持Modbus RTU寄存器的自主設(shè)計和自動采集。
3.支持將特定的Modbus寄存器內(nèi)容轉(zhuǎn)化為JSON格式定時主動上發(fā)。
4.支持在JSON格式中加入設(shè)備ID,方便云端識別設(shè)備。
5.支持無符號數(shù)據(jù)和有符號數(shù)據(jù),支持小數(shù)點表示,支持4字節(jié)長度數(shù)據(jù)。
6.所有配置都可以界面化配置完成,用戶自主配置無需定制。
MQTT可以單獨使用也可以和JSON功能配合使用。當(dāng)單獨使用的時候MQTT功能將串口數(shù)據(jù)透傳上發(fā)MQTT服務(wù)器。也就是將串口接收的數(shù)據(jù)作為MQTT的載荷。同時MQTT的載荷會以透傳的方式從串口輸出。實現(xiàn)串口轉(zhuǎn)MQTT。
首先搜索到設(shè)備,然后點擊編輯設(shè)備:
點擊“固件與配置”,彈出配置下載和設(shè)計對話框:
這里選擇“網(wǎng)頁目錄下載”,然后選擇一個空的目錄,比如MQTTHTTPD目錄,然后先點擊“清除全部”清除之前的設(shè)計(注意如果之前按有JSON設(shè)計的,則不要清除全部,否則會清除之前的JSON設(shè)計)。然后點擊MQTT配置。
這里配置說明如下:
1.服務(wù)器域名或IP:這里填寫的是MQTT服務(wù)器的IP,最長為30個字符。
2.用戶名:是MQTT服務(wù)器的用戶名。
3.密碼:是這個用戶的登錄密碼。
4.客戶端ID:是MQTT的client ID。
5.訂閱主題:是這個設(shè)備訂閱的主題,有其它設(shè)備發(fā)布這個主題的時候,服務(wù)器會下發(fā)給這個設(shè)備。如果只是發(fā)布,一般無需填寫這個字段。
6.發(fā)布主題:這個設(shè)備串口轉(zhuǎn)MQTT的時候向服務(wù)器發(fā)送的數(shù)據(jù)的主題。
7.MQTT高級參數(shù):用于配置高級參數(shù)。
8.保存MQTT設(shè)置:設(shè)計完畢點擊這個按鈕進行保存,然后點擊網(wǎng)頁下載目錄的“下載按鈕”下載。
現(xiàn)在先點擊“MQTT高級參數(shù)”(一般無需配置高級參數(shù)):
說明如下:
1.協(xié)議版本:目前主流的是3.1.1版本,如果需要選擇3.1版本,請在這里選擇。
2.?;顣r間:MQTT的心跳時間,最少為10秒,默認(rèn)為60秒。
3.服務(wù)器清除訂閱:客戶端斷線后服務(wù)器是否清除訂閱信息。
4.是否啟用遺愿:是否有遺愿。
5.遺愿主題:遺愿主題。
6.遺愿信息:遺愿的信息。
7.是否保存遺愿:服務(wù)器是否需要保持客戶端異常離線時發(fā)送給客戶端的遺愿消息。
8.遺愿質(zhì)量:服務(wù)器發(fā)送的遺愿消息的交付質(zhì)量級別。
9.訂閱質(zhì)量:訂閱的交付質(zhì)量級別。有的情況下需要設(shè)置為0,防止重傳引起斷線。
10.發(fā)布質(zhì)量:客戶端發(fā)布消息的交付質(zhì)量級別。有的情況下需要設(shè)置為0,防止重傳引起斷線。
11.是否保存發(fā)布:服務(wù)器是否保持最后一條消息(如果有新的客戶端訂閱則發(fā)送給客戶端)。
我們這里不修改高級參數(shù)。直接點擊“保存MQTT設(shè)置”。然后點擊“下載”
下載完畢點擊確定,此時會回到設(shè)備管理對話框,看到設(shè)備的目的IP、工作模式、目的端口已經(jīng)自動修改為MQTT的設(shè)置:
如果沒有自動修改則需要在設(shè)備編輯對話框下,設(shè)置目的IP、工作模式、目的端口。然后點擊“修改設(shè)置”。
這樣配置就完成了。
連接完成后設(shè)備的LINK燈(一般為中間的藍色燈)變亮。說明設(shè)備正常連接上MQTT服務(wù)器。
現(xiàn)在打開串口工具:
使用和設(shè)備一樣的波特率打開串口,并發(fā)送數(shù)據(jù)“dev send”,此后在接收窗口看到返回的數(shù)據(jù)“dev send”。這是由于我們將dev send這個信息以zlansub的主題發(fā)布給MQTT服務(wù)器。但是同時我們的設(shè)備也訂閱了zlansub這個主題,所以服務(wù)器立刻會給我們發(fā)送一個訂閱信息,訂閱信息的內(nèi)容就是dev send。這個信息作為MQTT的載荷發(fā)送下載,通過透傳的方式從串口輸出。
如果其它設(shè)備發(fā)布信息過來,這個設(shè)備也能夠收到數(shù)據(jù)。
一般來說,用戶可以直接將串口指令(比如Modbus RTU)指令直接透傳給MQTT服務(wù)器。另外也可以使用JSON功能,采用自動Modbus RTU格式采集,定時JSON格式上發(fā)的形式。另外也可以找上海卓嵐定制一些非標(biāo)的儀表和上位機協(xié)議格式。
如果需要實現(xiàn)JSON格式嵌套在MQTT中,那么需要在ZLVircom的“網(wǎng)頁/程序下載工具”對話框中點擊“JSON配置”按鈕(就在MQTT配置按鈕旁邊)。配置的方法參考JSON相關(guān)配置文檔。
將上述的JSON和MQTT相組合可以實現(xiàn)如下的功能:
1.采用MQTT為基礎(chǔ)的協(xié)議和服務(wù)器建立連接,采用訂閱發(fā)布的形式進行數(shù)據(jù)通訊。但是封裝的是JSON格式數(shù)據(jù)。
2.支持Modbus RTU寄存器的自主設(shè)計和自動采集。
3.支持將特定的Modbus寄存器內(nèi)容轉(zhuǎn)化為JSON格式定時主動上發(fā)。
4.支持在JSON格式中加入設(shè)備ID,方便云端識別設(shè)備。
如果需要MQTT+JSON轉(zhuǎn)Modbus RTU功能的,可以分別設(shè)計MQTT和JSON,不分先后次序。設(shè)計完一種不要點擊“清除設(shè)計”按鈕,兩個設(shè)計完,一起點擊“下載”按鈕下載到設(shè)備內(nèi)容。
一般可以下載后手動重啟設(shè)備,加載設(shè)置。