我們在上一篇文章中了解了什么是MQTT,以及MQTT是如何工作的,本篇文章我們將通過實際的例子去測試一下,我將會在Ubuntu上搭建MQTT服務器以及實際演示MQTT主題機制是如何工作的。
開始之前我們先了解一下目前比較流行的MQTT開源服務器軟件有哪些,以及每一個的優缺點,其實我也就知道兩款~各自有自己的側重吧感覺,下面我們來看一下:
上面這個應該算是比較出名好用的一款MQTT開源服務器軟件了,社區版免費使用,是一個杭州的團隊開發的,目前在Github上的開源倉庫也是有4000+的stars,先看幾張圖來了解一下:


目前最新版本是3.0.1(時間:2019-02-15),貌似命名方式相比我以前剛開始接觸的時候也有所改變,現在叫EMQX,全面支持MQTT V5、MQTT V3等多種通信協議,具體可以看下圖了解:

感興趣的可以去項目主頁了解更多,我這里就不再細寫很多了,總之這是一個非常好用的一款MQTT消息服務器軟件,大家可以根據需要自行了解一下,下載安裝地址戳卡片,大家可以根據自己機器的平台自行安裝,如果有自己的雲服務器就更好了,請根據自己的系統和版本自行下載:
下面我們再來看另外一款:
這是一款Eclipse 團隊開發的超輕量級的軟件,安裝大小僅有幾百KB,當然如此輕量級功能上是沒有EMQX那么強大了,僅支持MQTT V3協議,不過做測試還是比較好用的,不用在自己的機器上起一個像EMQX那么大的服務,官網也沒做太多的介紹,只有一個簡短的介紹,大家可以看一下下圖:

個人感覺Mosquitto還是比較好用的,我一般做本地測試都是使用Mosquitto,而且可以安裝到樹莓派上,在局域網內搭建一個小型的MQTT消息服務器,這樣就可以控制一些局域網內的設備了,不需要依賴雲服務器也不用某台電腦一直開機,后期我會跟大家分享如何在局域網內大家自己的智能家居小系統,敬請期待喲,下載安裝地址戳卡片,請根據自己機器的系統選擇下載安裝:
相信通過上邊一些簡短的介紹,你已經有所了解了,那么我們開始安裝測試,這里我先安裝一下Mosquitto來實際測試一下,安裝也非常簡單,如果你是windows系統請在上面給出的鏈接中直接下載安裝包進行安裝,別的系統基本都可以通過命令行進行安裝,我這里以Ubuntu 16.04進行安裝測試。
我們先來安裝所需要的軟件:
sudo apt-get install mosquitto

sudo apt-get install mosquitto-clients

第一條命令安裝的是服務端程序,如果你不本地測試的話只安裝服務端程序就好了,第二條命令是安裝客戶端,這個可以方便我們測試一下,后面我們會用ESP8266作為MQTT客戶端去測試,安裝完成后我們測試一下:

這里我是直接本機多個終端下和利用手機MQTT工具做了一下測試,大家可以看到,左上終端:
sudo service mosquitto status #start/stop/status mosquitto_sub -t "/zhihu/IAMLIUBO" -v #訂閱 “/zhihu/IAMLIUBO"主題
第一條命令是查看服務端程序運行狀態,相信大家一看就懂,第二條命令是mosquitto clients客戶端的命令,這條命令是訂閱了一個主題,主題內容是 "/zhihu/IAMLIUBO"。
同樣的右上終端同樣的也是訂閱了一個主題,其主題內容與左上終端不同,第二條消息是通過手機MQTT工具發送的,可能有人好奇怎么通過手機也可以呢?其實手機上的MQTT工具也連接到了這個Mosquitto server,此時手機與電腦必須要在同一個局域網內,然后我們還需要知道電腦的IP地址,MQTT服務的端口號是注冊過的一般情況下都是1883,當然你也可以自行更改,我們這里只需要知道IP和端口號就行,用戶名密碼什么的,我們沒有設置,所以暫時先不用管,大家可以自行下載一個MQTT工具,地址欄中填寫電腦的IP地址,端口號填寫1883就可以了,如下圖:


第三個終端是分別向兩個不同的主題推送了兩條不一樣的消息,在上面兩個終端中也都打印了出來,可以看到我們在向"/zhihu/IAMLIUBO"主題推送的消息內容沒有在訂閱這個"/zhihu/imliubo"主題的終端中打印,這就是MQTT最重要的一個特性,所有消息的發送與接收都是以消息主題來區分的,明白了這一點后面開發就會更加順手了。
下面我們再來安裝EMQX,同樣的我這里使用的是ubuntu,所以我下載好了適合我電腦系統的安裝包就直接安裝了,你可以在上面給出的鏈接中下載適合你機器的安裝包直接安裝就好:

我們在啟用EMQX服務前記得先將Mosquito服務端程序殺掉,因為兩個服務會占用同一個端口:
sudo service mosquitto stop sudo service emqx status

成功開啟EMQX服務后我們就可以向上面一樣利用Mosquitto clients再測試一下了,測試方法與上面相同,這里就不在做演示了,這里要跟大家分享的是EMQX的web管理后台Dashboard,EMQX之所以安裝包比較大是因為集成了很多非常好用的插件,就比如這個可視化管理后台,我們可以在地址欄中輸入下面的地址查看:
http://localhost:18083
用戶名和初始密碼為:admin/public

這個管理后台同樣集成了很多工具,大家可以安裝好后自己嘗試看一下都有哪些工具。
本篇文章到這就結束了,主要跟大家分享了一下兩款MQTT服務端軟件,主要也是為后面我們在ESP8266開發做好准備,學習MQTT通信,搭建消息服務器是必不可少的,我們可以利用一些免費的,當然我們也可以自己搭建一個屬於自己的服務器,不過你看完了本篇文章自己搭建一個是完全沒問題了,在雲服務器也是同樣的安裝方式,大家如果有自己的雲服務器就可以自己嘗試一下了,在雲服務器上搭建的好處就是不管你在哪都可以輕輕松松通過手機或者其他設備控制家里的設備了,因為有固定的IP了~如果是想單純在家庭網絡環境下開發的話,建議可以入手一個樹莓派,后期我們可以將MQTT消息服務器搭建在樹莓派上,改進一下卧室的燈,然后就再也不用起床關燈了~啊哈哈哈哈哈,是不是很爽呢?那就跟着我一起慢慢做下去吧!
文章有點長,難免有些疏漏和錯誤,還請大家及時指出我好改正~
最后希望大家star一下我的Github ESP8266倉庫,近期會稍微加快更新例程的頻率,您的star是我最大的動力~啊哈哈哈哈哈,O(∩_∩)O謝謝
QQ交流群:592587184
