MQTT是(shi)(shi)一種發布(publish)/訂(ding)(ding)閱(subscribe)協議(yi),MQTT協議(yi)采用發布/訂(ding)(ding)閱模式,所有的(de)物(wu)聯(lian)網終端(duan)(duan)(duan)都通(tong)過TCP連接(jie)到云端(duan)(duan)(duan),云端(duan)(duan)(duan)通(tong)過主題(ti)的(de)方式管理(li)各個(ge)設(she)備關注的(de)通(tong)訊內容,負責(ze)將設(she)備與設(she)備之(zhi)間(jian)(jian)消息的(de)轉發。MQTT 協議(yi)解決了物(wu)聯(lian)網中(zhong)一個(ge)最基(ji)礎(chu)的(de)問題(ti):設(she)備和設(she)備之(zhi)間(jian)(jian)、設(she)備和云端(duan)(duan)(duan)服(fu)務之(zhi)間(jian)(jian)是(shi)(shi)如何進行數據通(tong)訊的(de)。
MQTT網關起到將普通的(de)串口數據(ju)、Modbus RTU數據(ju)等轉化(hua)為(wei)MQTT協議的(de)作用(yong),通過連接服(fu)(fu)務器(qi)、訂(ding)閱(yue)和(he)發布(bu)主(zhu)題來實現傳統設備(bei)和(he)MQTT云端的(de)聯系。例如,筆(bi)記本(ben)和(he)手(shou)機(ji)都向(xiang)MQTT服(fu)(fu)務器(qi)訂(ding)閱(yue)了消(xiao)息主(zhu)題為(wei)溫度的(de)消(xiao)息,當MQTT網關向(xiang)這個服(fu)(fu)務器(qi)發布(bu)溫度傳感器(qi)的(de)消(xiao)息(當前(qian)溫度為(wei)21℃),筆(bi)記本(ben)和(he)手(shou)機(ji)都會收到發布(bu)的(de)溫度。卓嵐的(de)MQTT產品可以充當本(ben)地設備(bei)和(he)MQTT云服(fu)(fu)務器(qi)之(zhi)間(jian)的(de)橋(qiao)梁。
類型 | 型號 |
---|---|
4G DTU | ZLAN8303-7 ? |
以太網 | ZLAN5143 ? |
Wifi+以太網 | ZLAN7144 ? |
Wifi | ZLAN7146 ? |
內嵌MQTT網關模塊(以太網) | ZLSN2043S ? |
內嵌MQTT網關模塊(wifi) | ZLSN7046T ? |
內嵌MQTT網關模塊(wifi+以太網) | ZLSN7044 ? |
MQTT網關單芯片 | ZLAN1043 ? |
MQTT數據采集網關(8路模擬量輸入、數字量輸入/輸出) | ZLAN6844 ? |
除了數(shu)(shu)據采集網關(guan)(guan)通過模(mo)擬量(liang)和(he)數(shu)(shu)字量(liang)對(dui)外接口外,其它MQTT網關(guan)(guan)都采用(yong)串口(RS485、RS232、RS422、TTL)來和(he)設備對(dui)接。支持MQTT云平臺(tai)有百(bai)度云、阿里云等(deng)。
1.自動采集:溫(wen)度(du)傳感器采用的(de)Modbus RTU協(xie)議(yi)需要每隔一段時間去(qu)詢問設備,獲得(de)(de)當前溫(wen)度(du)。但(dan)MQTT協(xie)議(yi)屬于有消息就發(fa)布的(de)機制(zhi)MQTT服(fu)務(wu)器無法擔(dan)任(ren)這個任(ren)務(wu),必須(xu)讓MQTT網(wang)關自動查詢溫(wen)度(du)傳感器,并(bing)將(jiang)獲得(de)(de)數據存儲起來,并(bing)定時上(shang)發(fa)服(fu)務(wu)器。卓嵐MQTT網(wang)關可(ke)配置(zhi)Modbus輪詢指(zhi)令或者非標準的(de)串口(kou)設備指(zhi)令。
2.格式(shi)(shi)轉化(hua):設(she)備端(duan)采用的(de)是(shi)十(shi)六進(jin)制(zhi)指(zhi)令,比(bi)如01 03 02 12 34 b5 33的(de)數(shu)據,這(zhe)(zhe)種(zhong)數(shu)據對于云端(duan)比(bi)較(jiao)難統一(yi)和(he)識(shi)別。卓(zhuo)嵐MQTT網關(guan)支持將Modbus RTU數(shu)據轉化(hua)為JSON格式(shi)(shi)后上發(fa),比(bi)如以(yi)上十(shi)六進(jin)制(zhi)數(shu)據變為:{“power”:”1234”}這(zhe)(zhe)種(zhong)格式(shi)(shi)。
1.采(cai)用MQTT為基(ji)礎的(de)協議和服務器建(jian)立連接,采(cai)用訂閱發布的(de)形式進(jin)行數據通訊。
2.支持Modbus RTU寄存(cun)器的自(zi)主設計和自(zi)動采(cai)集。
3.支持將特定的Modbus寄存器(qi)內容轉化(hua)為JSON格式(shi)定時(shi)主(zhu)動(dong)上發。
4.支(zhi)持(chi)在JSON格(ge)式(shi)中加入設備ID,方便云端識別設備。
5.支(zhi)持(chi)無符號數據和(he)有(you)符號數據,支(zhi)持(chi)小數點(dian)表示,支(zhi)持(chi)4字(zi)節長(chang)度數據。
6.所(suo)有(you)配置都可(ke)以(yi)界面化配置完(wan)成,用戶自主配置無需定制。
MQTT可(ke)以單(dan)獨(du)使(shi)(shi)用也可(ke)以和JSON功能(neng)配合使(shi)(shi)用。當單(dan)獨(du)使(shi)(shi)用的時候MQTT功能(neng)將串(chuan)口數據(ju)透(tou)傳(chuan)上發MQTT服務器。也就是將串(chuan)口接(jie)收的數據(ju)作為MQTT的載(zai)荷。同時MQTT的載(zai)荷會以透(tou)傳(chuan)的方(fang)式從串(chuan)口輸出。實現串(chuan)口轉MQTT。
首先搜索(suo)到設(she)備,然后點擊編輯設(she)備:
點擊“固件與配置(zhi)”,彈出配置(zhi)下載和設計對話(hua)框:
這里選擇“網(wang)頁(ye)目(mu)錄(lu)下(xia)載(zai)”,然后選擇一(yi)個(ge)空的(de)目(mu)錄(lu),比(bi)如(ru)MQTTHTTPD目(mu)錄(lu),然后先點擊“清(qing)除(chu)全(quan)部(bu)”清(qing)除(chu)之(zhi)前(qian)(qian)的(de)設計(注意如(ru)果之(zhi)前(qian)(qian)按(an)有JSON設計的(de),則(ze)不要清(qing)除(chu)全(quan)部(bu),否則(ze)會清(qing)除(chu)之(zhi)前(qian)(qian)的(de)JSON設計)。然后點擊MQTT配置。
這里配置說明如下:
1.服務器域名或IP:這里填寫的是MQTT服務器的IP,最長為30個字符。
2.用戶名:是MQTT服務器的用戶名。
3.密碼:是這個用戶的登錄密碼。
4.客戶端ID:是MQTT的client ID。
5.訂閱主題:是這個設備訂閱的主題,有其它設備發布這個主題的時候,服務器會下發給這個設備。如果只是發布,一般無需填寫這個字段。
6.發布主題:這個設備串口轉MQTT的時候向服務器發送的數據的主題。
7.MQTT高級參數:用于配置高級參數。
8.保存MQTT設置:設計(ji)完畢點擊這個按鈕(niu)進行保存,然后點擊網頁下(xia)載目錄(lu)的“下(xia)載按鈕(niu)”下(xia)載。
現(xian)在先點擊“MQTT高(gao)級參數(shu)”(一般無(wu)需配置高(gao)級參數(shu)):
說明如下:
1.協議版本:目前主流的是3.1.1版本,如果需要選擇3.1版本,請在這里選擇。
2.保活時間:MQTT的心跳時間,最少為10秒,默認為60秒。
3.服務器清除訂閱:客戶端斷線后服務器是否清除訂閱信息。
4.是否啟用遺愿:是否有遺愿。
5.遺愿主題:遺愿主題。
6.遺愿信息:遺愿的信息。
7.是否保存遺愿:服務器是否需要保持客戶端異常離線時發送給客戶端的遺愿消息。
8.遺愿質量:服務器發送的遺愿消息的交付質量級別。
9.訂閱質量:訂閱的交付質量級別。有的情況下需要設置為0,防止重傳引起斷線。
10.發布質量:客戶端發布消息的交付質量級別。有的情況下需要設置為0,防止重傳引起斷線。
11.是(shi)否(fou)保(bao)存發布:服(fu)務器是(shi)否(fou)保(bao)持最后一條消息(如果有新的(de)客戶(hu)(hu)端(duan)訂閱則(ze)發送(song)給客戶(hu)(hu)端(duan))。
我(wo)們(men)這里不修(xiu)改高級參數。直接(jie)點擊(ji)“保存MQTT設置”。然后點擊(ji)“下載(zai)”
下載完畢點擊(ji)確定,此時會回到設備管理對話框,看到設備的(de)目(mu)的(de)IP、工作模(mo)式(shi)、目(mu)的(de)端口已經自動修改(gai)為MQTT的(de)設置(zhi):
如果沒有自動(dong)修(xiu)改則(ze)需要在(zai)設(she)備編輯對(dui)話框下,設(she)置(zhi)目(mu)的IP、工(gong)作模式、目(mu)的端口。然后(hou)點擊“修(xiu)改設(she)置(zhi)”。
這樣配置就完成了。
連接完成后設備的(de)LINK燈(deng)(一般(ban)為中間(jian)的(de)藍色燈(deng))變亮。說明設備正常連接上MQTT服務器。
現在打開串口工具:
使用(yong)和設(she)備(bei)一(yi)樣的(de)(de)波特率(lv)打(da)開串(chuan)口(kou),并發送(song)(song)數(shu)據“dev send”,此后(hou)在接(jie)收窗口(kou)看(kan)到返回的(de)(de)數(shu)據“dev send”。這(zhe)是(shi)(shi)由于我們將dev send這(zhe)個(ge)信息以zlansub的(de)(de)主題發布給MQTT服務器(qi)。但是(shi)(shi)同時我們的(de)(de)設(she)備(bei)也訂(ding)閱(yue)了zlansub這(zhe)個(ge)主題,所以服務器(qi)立刻會給我們發送(song)(song)一(yi)個(ge)訂(ding)閱(yue)信息,訂(ding)閱(yue)信息的(de)(de)內容就是(shi)(shi)dev send。這(zhe)個(ge)信息作為(wei)MQTT的(de)(de)載(zai)(zai)荷發送(song)(song)下載(zai)(zai),通過透傳的(de)(de)方式從串(chuan)口(kou)輸(shu)出(chu)。
如果其(qi)它設備發布信息過來,這個設備也能夠收到(dao)數據。
一般(ban)來說(shuo),用戶可以(yi)直接將串口指令(比如Modbus RTU)指令直接透傳給MQTT服(fu)務器。另(ling)外也可以(yi)使用JSON功能,采用自動(dong)Modbus RTU格式采集,定時JSON格式上發的形式。另(ling)外也可以(yi)找上海卓(zhuo)嵐定制(zhi)一些非(fei)標的儀表和上位機協議格式。
如果需(xu)要實現JSON格式嵌套在MQTT中,那么(me)需(xu)要在ZLVircom的(de)“網頁/程序下載工具”對話框中點擊(ji)“JSON配置”按鈕(niu)(niu)(就在MQTT配置按鈕(niu)(niu)旁(pang)邊)。配置的(de)方法參考JSON相關配置文檔(dang)。
將上述的JSON和MQTT相組合可以實現如下的功能:
1.采用MQTT為基礎的協議和服務器建立連接,采用訂閱發布的形式進行數據通訊。但是封裝的是JSON格式數據。
2.支持Modbus RTU寄存器的自主設計和自動采集。
3.支持將特定的Modbus寄存器內容轉化為JSON格式定時主動上發。
4.支持在JSON格式(shi)中加入設備(bei)ID,方便云端識別(bie)設備(bei)。
如果需要MQTT+JSON轉(zhuan)Modbus RTU功(gong)能的,可以分別(bie)設計(ji)MQTT和JSON,不分先后次序。設計(ji)完一種(zhong)不要點擊(ji)“清(qing)除設計(ji)”按(an)鈕(niu)(niu),兩個設計(ji)完,一起點擊(ji)“下載(zai)”按(an)鈕(niu)(niu)下載(zai)到(dao)設備內(nei)容。
一(yi)般可以(yi)下載后手(shou)動重啟設(she)備,加載設(she)置。