物聯(lián)網(wǎng)的基礎(chǔ)協(xié)議之MQTT
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1.本文概述
本文主要介紹MQTT相關(guān)的概念,并且通過搭建MQTT服務(wù)器和客戶端,測試MQTT的通信。本文主要從實(shí)際使用的角度去理解MQTT,并不會講述過于深奧的理論知識??梢酝ㄟ^下面的文章了解MQTT的相關(guān)介紹。
2.MQTT基本介紹
MQTT的全稱為Message Queuing Telemetry Transport,也就是消息隊(duì)列遙測傳輸。1999年,IBM公司的Andy Stanford-Clark 和來自Eurotech公司的Arlen Nipper創(chuàng)造了MQTT協(xié)議。其中“MQTT”中的“MQ”是來自IBM的MQ系列消息隊(duì)列產(chǎn)品線。
MQTT最初的用法是在石油管道控制中,將每一個(gè)節(jié)點(diǎn)的信息通過衛(wèi)星傳到到控制中心去。所以MQTT從創(chuàng)立之初就是為物聯(lián)網(wǎng)創(chuàng)立。
那么什么是MQTT協(xié)議呢?簡單地說,主要有下面三個(gè)特點(diǎn):
(1)協(xié)議本身基于TCP/IP,輕量級的發(fā)布和訂閱
(2)開放的協(xié)議
(3)簡單,容易實(shí)現(xiàn)
所以該協(xié)議可以應(yīng)用于各種環(huán)境中,非常適合需要低功耗而且?guī)捰邢薜腎oT場景中,比如:
-
遙感數(shù)據(jù)
-
汽車
-
智能家居
-
智慧城市
-
醫(yī)療醫(yī)護(hù)
運(yùn)用MQTT協(xié)議,設(shè)備可以很方便的接入物聯(lián)網(wǎng)服務(wù),管理并處理數(shù)據(jù),最后應(yīng)用到各種業(yè)務(wù)場景
3.mqtt服務(wù)器的搭建
目前服務(wù)器的搭建環(huán)境是ubuntu16.04
采用的服務(wù)器是mosquitto,官方網(wǎng)站https://mosquitto.org
在控制臺上輸入下面的命令進(jìn)行下載。
wget https://mosquitto.org/files/source/mosquitto-1.5.7.tar.gz
下載完成后解壓并進(jìn)入mosquitto-1.5.7目錄
在編譯時(shí),先安裝gcc編譯工具,然后下載依賴的環(huán)境
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install uuid-dev
最后執(zhí)行make開始編譯,編譯完成后輸入sudo make install安裝程序。
接著配置服務(wù)器相關(guān)信息
sudo cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
sudo vim /etc/mosquitto/mosquitto.conf
添加一個(gè)用戶,如下圖所示
這樣,mqtt服務(wù)器就安裝完成了。
下面啟動服務(wù)器
mosquitto -c /etc/mosquitto/mosquitto.conf -v
測試
對于MQTT協(xié)議來說,有一個(gè)非常關(guān)鍵的模式:發(fā)布/訂閱模式。發(fā)布/訂閱模式(pub / sub)是傳統(tǒng)客戶端 - 服務(wù)器模型的替代方案,客戶端直接與端點(diǎn)通信。然而,Pub / Sub將正在接收消息(稱為訂戶)的另一客戶端(或更多客戶端)發(fā)送特定消息(稱為發(fā)布者)的客戶端去耦,這意味著發(fā)布者和訂閱者不了解彼此的存在,有一個(gè)第三個(gè)組件,稱為代理,由它作為中轉(zhuǎn),它將過濾所有傳入的消息并相應(yīng)地分發(fā)給它們,所以我們來詳細(xì)介紹一下剛剛提及的方面。
訂閱者
訂閱者的角色要保持長連接狀態(tài),我們可以另外開一個(gè)控制臺窗口進(jìn)行測試訂閱一個(gè)topic01的主題,去接收這個(gè)主題的消息。
mosquitto_sub -v -t topic01
這個(gè)過程可能會遇到如下的錯誤
解決辦法
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
這樣訂閱者就處于不斷等待消息到來的模式。
發(fā)布者
這時(shí)可以另外再開一個(gè)控制臺,去發(fā)布topic01主題的消息。
mosquitto_pub -t topic01 -m "123456"
不難看出,我們的訂閱者已經(jīng)接收到消息了。
4. mqtt客戶端的使用
對于mqtt客戶端的使用,可以測試mqtt,所以我們的環(huán)境選擇Windows平臺??梢允褂肕QTT.fx。
MQTT.fx 是目前主流的mqtt客戶端,可以快速驗(yàn)證是否可以與IoT Hub 服務(wù)交流發(fā)布或訂閱消息。設(shè)備將當(dāng)前所處的狀態(tài)作為MQTT主題發(fā)送給IoT Hub,每個(gè)MQTT主題topic具有不同等級的名稱,如“建筑/樓層/溫度。” MQTT代理服務(wù)器將接收到的主題topic發(fā)送給給所有訂閱的客戶端。
下載地址:http://www.jensd.de/apps/mqttfx
安裝最新的版本就可以了
由于我們前面已經(jīng)在ubuntu上搭建好了MQTT服務(wù)器,所以接下來直接使用
點(diǎn)擊publish即可在我們的訂閱者上監(jiān)聽到消息
同時(shí)MQTT.fx 也可以作為監(jiān)聽者
這樣我們就創(chuàng)建好了一個(gè)mqtt本地的測試環(huán)境。
5. 總結(jié)
本次的實(shí)驗(yàn)?zāi)康氖求w驗(yàn)一下mqtt的數(shù)據(jù)傳輸,同時(shí)學(xué)習(xí)了mqtt的一些基本的使用方法,后面會詳細(xì)介紹物聯(lián)網(wǎng)通信以及云服務(wù)器相關(guān)的知識,本文并沒有詳細(xì)介紹mqtt具體在項(xiàng)目中的使用方法,后面再做完善。