步驟1:在Raspberry Pi上安裝Mosquitto MQTT Broker
我們將使用Eclipse的Mosquitto MQTT Broker免費(fèi)提供,并在Linux下運(yùn)行??梢允褂没赑C的MQTT Broker,但是我特別想使用Raspberry Pi,因?yàn)樗鼈儍r(jià)格便宜,體積很小,并且在處理能力方面非常強(qiáng)大,最好還是隨手?jǐn)y帶它們。我使用的是B + Pi。
序言
我假設(shè)您已按照我之前的名為“ IoT”的Instructable中的步驟進(jìn)行操作-物聯(lián)網(wǎng):家庭自動化。第1部分:物聯(lián)網(wǎng),簡介”,并且已經(jīng)設(shè)置好Raspberry Pi,可以開始使用。
您需要做的就是將主機(jī)名從“ MYHOSTNAME”更改為“ MQTTSVR”。您可以使用PuTTY連接到Pi,然后從命令行輸入;
sudo raspi-config
選擇(9)高級選項(xiàng),然后選擇(A2)主機(jī)名。
輸入“ MQTTSVR”并保存更改。退出,然后選擇重新啟動Pi
。您現(xiàn)在可以使用新的主機(jī)名‘MQTTSVR.local’將PuTTY重新連接到該P(yáng)i。 創(chuàng)建一個名為‘MQTTSvr’的PuTTY保存的會話,稍后會派上用場。
安裝
安裝過程如下;
通過PuTTY連接到新的MQTT服務(wù)器,并記住從該Instructable中復(fù)制并粘貼到PuTTY中,以避免必須手動鍵入任何命令。
確保您位于主目錄中。如果您是您,將看到以下提示
pi @ MQTTSVR :?$
如果沒有看到此提示輸入
cd?
現(xiàn)在完成以下命令;
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
然后;
sudo apt-key add mosquitto-repo.gpg.key
現(xiàn)在使此存儲庫可用于apt;
cd/etc/apt/sources.list.d/
在使用Raspberry Pi Jessie Debian映像時(shí),請輸入以下內(nèi)容;
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
現(xiàn)在輸入執(zhí)行命令,這可能需要一些時(shí)間才能完成。對任何問題也回答是(Y);
sudo apt-get更新
sudo apt-get升級 》
要完成安裝過程,請輸入以下內(nèi)容,對任何問題回答是(Y);
sudo apt-get install mosquitto
讓Pi做它的事情并完成,在出現(xiàn)命令提示符的地方。
pi @ MQTTSVR:/etc/apt/sources .list.d $
。
。
就是這樣。 Mosquitto現(xiàn)在已經(jīng)安裝為服務(wù),并且會在您啟動Raspberry Pi時(shí)自動啟動。
現(xiàn)在我們需要測試它的工作能力。
。
注意:在從MQTT Broker斷電之前,請輸入以下命令并等待Pi關(guān)閉。
立即sudo關(guān)閉
。
提示
如果要快速連接到Raspberry Pi服務(wù)器使用PuTTY,而不必每次都輸入用戶名和密碼。假設(shè)您已經(jīng)按照步驟7,“第1部分:物聯(lián)網(wǎng),自動化”中的說明創(chuàng)建了一個名為“ MQTTSvr”的已保存會話,并且您的MQTTSVR用戶名和密碼與給出的示例相同,則執(zhí)行以下操作。
查找安裝PuTTY并執(zhí)行以下操作;
為其創(chuàng)建快捷方式。
右鍵單擊快捷方式
選擇“快捷方式”選項(xiàng)卡
在名為“目標(biāo):”的文本框中,在文本“之后輸入以下內(nèi)容。 。. putty.exe“
-加載MQTTSvr -l pi -pw覆盆子
因此,在我的情況下,我安裝了“ C: Program Files (x86) PuTTY”文本將讀?。?/p>
“ C: Program Files(x86) PuTTY putty.exe” -load MQTTSvr -l pi -pw raspberry
現(xiàn)在刪除此簡短內(nèi)容
步驟2:MQTT主題
現(xiàn)在是快速討論MQTT主題的好時(shí)機(jī)。
什么是主題?
主題是由UTF-8(Unicode轉(zhuǎn)換格式8位)字符組成的字符串,是發(fā)布者發(fā)送給代理以轉(zhuǎn)發(fā)給任何訂閱者的數(shù)據(jù)。簡而言之,它是一個基本的文本字符串。
它們是如何構(gòu)造的?
主題分為一個或多個主題每級至少要有1個字符。這些級別由斜杠‘/’分隔,并且可以包含‘’ (空格)。 例如(不包括引號);
“此/is/a/six/level/帶有空格的示例”
盡管可以說不是很有用主題,希望能解決這一問題。主題區(qū)分大小寫,因此;
‘測試/主題’
不同于;
‘測試/主題’
這是一個主題
“ x”
,
‘’(空格)和‘/’
創(chuàng)建主題不需要任何特殊操作,訂閱或發(fā)布操作這個給你。
就是這樣。
構(gòu)造主題是否有特殊格式或最佳做法?
《簡短的答案是“否”,圍繞如何組成它們有很多看法(我將在后面的Instructable中介紹該主題)。但是,在創(chuàng)建主題時(shí),您需要考慮以下內(nèi)容;
請保持簡短。它們是通過網(wǎng)絡(luò)發(fā)送的,需要由某些設(shè)備/代理/服務(wù)器進(jìn)行解析(讀?。?,因此,越長越復(fù)雜,它們就越難以解碼。
在可以的地方使用有意義的名稱。它使調(diào)試更加容易。作為人類,它的鍵入要簡單得多,或者比“ Wcp10X!3wdrka2 ”閱讀“ sensor1 ”。
使它們對您有意義。我所看到的示例往往像一種地址,例如;
“我的房子/一樓/臥室/天花板/天花板”
這假設(shè)一個固定位置的IoT設(shè)備,并且在大多數(shù)情況下都是如此,盡管在考慮移動或可重新部署的IoT設(shè)備(例如溫度濕度傳感器或可切換擴(kuò)展插座)時(shí),這種命名法會失敗。如果您決定將可切換的擴(kuò)展插座從客廳移到臥室以更換發(fā)生故障的設(shè)備,則需要對IoT設(shè)備進(jìn)行重新編程,以使其與新位置保持一致。
對于我的系列在基于IoT的家庭自動化上,我將使用僅涉及設(shè)備的主題,例如;
或
‘/WiFiDevice/Temp1Status’
這是因?yàn)槲易罱K想要使用MySQL數(shù)據(jù)庫來保存配置和IoT設(shè)備信息。
哦,還有最后一件事,通常慣例是不要在第一個主題之前加上‘/’,但是您可以看到我我忽略了這一點(diǎn)。 :-)
是否有捷徑?
是的,MQTT提供了稱為“通配符”的主題。這些是訂閱者可以放入訂閱主題中以減少訂閱許多項(xiàng)目的特殊字符。通配符有兩種類型:“ +” (稱為“單級” )和“#” (用于“多級”) 即可。上面的圖片提供了這兩個示例。
一詞注意。如果您使用‘?!嗉壨ㄅ浞?,并且系統(tǒng)中有很多IoT設(shè)備,那么請準(zhǔn)備好接收大量消息!
是否有特殊主題?
是的,保留以‘$’開頭的主題用于MQTT Broker的內(nèi)部統(tǒng)計(jì)。在撰寫此Instructable時(shí),沒有明確的官方標(biāo)準(zhǔn)化,經(jīng)紀(jì)人必須發(fā)布這些主題。但是,對于這種類型的信息,通常使用‘$ SYS/’作為前綴。 mosquitto MQTT Broker符合此‘$ SYS/broker/?!?。 (有關(guān)完整的詳細(xì)信息,請參見Linux mosquitto手冊頁。即 man mosquitto )
因此,如果您想查看所有mosquitto MQTT Broker統(tǒng)計(jì)信息,則需要為MQTTSpy訂閱以下內(nèi)容(有關(guān)更多詳細(xì)信息,請參見后續(xù)步驟);
‘$ SYS/broker/?!?/p>
步驟3:設(shè)置測試環(huán)境
序言
要測試我們的新MQTT Broker,我們將首先安裝一個客戶端,該客戶端可以訂閱并發(fā)布Raspberry Pi上的給定主題。然后,我們將通過PC上名為MQTTSpy的工具監(jiān)視此交換(就像上面的第一張圖片一樣)。
為什么要測試安裝?從長遠(yuǎn)來看,它可以為您節(jié)省很多時(shí)間。為了正確地建立一個強(qiáng)大的家庭自動化系統(tǒng),您開始依賴該系統(tǒng),并且在整個過程中要向其中添加許多有用的IoT客戶端,您需要確保鏈中的所有鏈接都可以正常工作,您會發(fā)現(xiàn)新的IoT設(shè)備存在問題,您可以快速排除盡可能多的系統(tǒng),并在實(shí)際問題上將其歸零。
安裝發(fā)布/訂閱客戶端(Raspberry Pi)
從PuTTY窗口中,在MQTT Broker上輸入以下命令。確保您位于主目錄中;
pi @ MQTTSVR:?$
(如果未輸入);
cd?
;其次;
sudo apt-get install mosquitto-clients
》
。
安裝MQTTSpy(PC)
為了成功運(yùn)行MQTTSpy,您將需要在PC上安裝的Java Runtime Engine(JRE)大于版本8。
要檢查已安裝的JRE版本,請運(yùn)行“ dos in a box”(即“ dos in a box”)命令,即命令行窗口(如上圖)。
從“開始”按鈕,進(jìn)入帶有灰色文本“搜索程序和文件”的搜索框
cmd
,然后按Enter。框中將出現(xiàn)一個dos,您需要在其中輸入內(nèi)容;
java -version
它將返回“ java版本“ WXYZZ””以及其他“ guff”(如上圖)或錯誤。如果您的版本大于版本8(實(shí)際上是1.8.y.zz),則需要遵循以下說明;
轉(zhuǎn)到此Oracle下載網(wǎng)頁。
https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
選擇“接受許可協(xié)議”單選按鈕,下載并安裝“ Java SE運(yùn)行時(shí)環(huán)境8u92” ‘,jre-8u92-windows-x64.exe(如上圖所示)。
好,現(xiàn)在轉(zhuǎn)到下面給出的MQTTSpy下載頁面;
https://github .com/kamilfb/mqtt-spy/wiki/Downloads
選擇并下載mqtt-spy jar文件(如上圖)。在撰寫本文時(shí),最新的版本是0.5.0。
將“ mqtt-spy-0.5.0-jar-with-dependancies.jar”文件保存到任何目錄。
要運(yùn)行該軟件,您可以雙擊它。如果這樣做不起作用,則可以在保存jar文件的目錄中從命令行輸入以下內(nèi)容。
java -jar mqtt-spy-0.5.0-jar-with-另外,您可以將RunMQTTSpy.bat文件(如下所示)解壓縮并拖放到同一目錄中,然后雙擊該文件每次運(yùn)行MQTTSpy。
。
好,您現(xiàn)在已經(jīng)安裝了所有測試軟件,讓我們對其進(jìn)行配置并運(yùn)行測試。
。
提示
要在特定目錄中打開命令提示符,請執(zhí)行以下操作;
打開Windows資源管理器
導(dǎo)航至感興趣的目錄
按住“ Alt”和“ Shift”鍵
右鍵單擊感興趣的目錄
從下拉菜單中選擇“打開”命令窗口”
第4步:配置MQTTSpy并測試您的MQTT Broker
開箱即用, MQTTSpy所需的最低配置如下;
連接t o您的MQTT經(jīng)紀(jì)人
訂閱給定主題
(可選),發(fā)布到給定主題
。
此處上面的視頻顯示了如何連接到我們的mosquitto MQTT Broker’MQTTSVR‘并添加通配符以查看所有測試主題并測試MQTT Broker。運(yùn)行順序如下;
打開兩個自動登錄PuTTY會話
通過雙擊“ RunMQTTSpy.bat”文件啟動MQTTSpy(我已經(jīng)完成了視頻(如果您是第一次使用MQTTSpy,那么您可以看到初始配置)
創(chuàng)建標(biāo)準(zhǔn)配置
創(chuàng)建新的MQTT Broker連接,我們將連接到我們的Broker
輸入Broker詳細(xì)信息’MQTTSVR.local‘并為其提供客戶端ID’Win 71‘
然后連接到Broker’Open connection‘并保存此新設(shè)置,因此我們以后可以使用。
選擇此“代理”選項(xiàng)卡,該選項(xiàng)卡已顯示為“ GREEN”,表明它已連接到MQTTSVR
訂閱所有測試主題(使用多級通配符)
’/test/?!?/p>
在PuTTY會話窗口中,訂閱測試主題(無通配符)。
mosquitto_sub -t“/test/Topic”
在另一個PuTTY會話窗口中,將消息發(fā)布到測試主題。
mosquitto_pub -t“/test/Topic” -m“ Hello World”
您現(xiàn)在將看到此Hello World消息到達(dá)我們的兩個客戶訂戶(PuTTY和MQTTSpy)
現(xiàn)在,為了證明我們可以從不在MQTT Broker上的客戶端發(fā)布消息,我們將測試主題復(fù)制到MQTTSpy的發(fā)布框中,然后發(fā)送消息’SteveQuinn‘發(fā)送給MQTT代理
您現(xiàn)在可以看到此消息同時(shí)到達(dá)PuTTY訂閱的客戶端和MQTTSpy客戶端(此處MQTTSpy已成為訂戶和發(fā)布者)。
最后,我們從控制面板關(guān)閉與MQTT Broker的連接,并退出MQTTSpy。
接著關(guān)閉兩個PuTTY會話。記住在退出前使用 ^ C (Ctrl C)退出訂閱。
。
好,所以現(xiàn)在我們完成了MQTT經(jīng)紀(jì)人測試員。這會給我們帶來什么?
如果我們在家庭自動化設(shè)置方面遇到任何問題,我們現(xiàn)在可以快速運(yùn)行MQTTSpy,并檢查Broker是否健康或任何已發(fā)布的消息“格式錯誤”。甚至可以發(fā)布消息,這意味著我們可以測試我們創(chuàng)建的任何IoT設(shè)備。
步驟5:有IOS MQTT客戶端
盡管在上面給出的示例中,我使用基于PC的軟件來平等地進(jìn)行測試,但是仍然可以使用智能手機(jī)應(yīng)用。
上面的圖片是一個名為“ MQTTool”的iOS應(yīng)用程序。盡管功能不如MQTTSpy豐富,但它易于使用,并允許您進(jìn)行一些基本的測試。
步驟6:不要遺漏Android用戶
在Play商店中,我可以看到很多免費(fèi)的應(yīng)用程序,我嘗試了很多,但發(fā)現(xiàn)上圖所示的應(yīng)用程序是其中最好的“ MQTT信息中心”。盡管您不需要輸入IP地址而不是主機(jī)名“ MQTTSVR.local”,但它確實(shí)具有發(fā)布到主題的更好方法,可讓您創(chuàng)建文本框,開關(guān),滑塊等。
。
我包括了Pi的屏幕截圖,其中詳細(xì)說明了如何獲取Pi的IP地址。為此,請通過膩?zhàn)舆B接并輸入;
ifconfig
Pi會以上面的屏幕截圖做出響應(yīng),我突出顯示了您需要輸入MQTT儀表板的IP地址。我假設(shè)您正在通過以太網(wǎng)連接到網(wǎng)絡(luò)。如果您已通過WiFi連接,請閱讀“ eth0 ”
的“ wlan0 ”。步驟7:那么下一步是什么?
在接下來的三個Instructable中,我們將為您的Int ra net創(chuàng)建三個簡單的IoT設(shè)備,它們基于ESP8266-01和帶以太網(wǎng)屏蔽的Arduino ATMega2560。首先,我們將重新審查以改進(jìn)設(shè)計(jì)并擴(kuò)展其使用范圍,以展示制造自己的物聯(lián)網(wǎng)設(shè)備的容易程度。
步驟8:使用的參考
我使用了以下參考文獻(xiàn)來將該Instructable放在一起;
MQTT官方站點(diǎn);
http://mqtt.org
MQTTSpy主頁;
http://kamilfb.github.io/mqtt-spy/
MQTTSpy下載,入門指南并進(jìn)一步閱讀;
https://github.com/kamilfb/mqtt-spy/wiki/Downloads
https://github.com/kamilfb/mqtt-間諜/維基/GettingStarted
https://github.com/kamilfb/mqtt-spy/wiki/ScriptingPublications
https://github.com/kamilfb/mqtt-spy/維基/配置
http://www.hivemq.com/blog/mqtt-toolbox-mqtt-spy-advanced
http://www.hivemq.com/blog/mqtt-essentials-part-3-client-broker-connection-建立
MQTT客戶端的好地方;
http://www.hivemq。 COM/博客/七最佳MQTT客戶端工具
MQ TT間諜高級用法
http://www.hivemq.com/blog/mqtt-toolbox-mqtt-spy-advanced
Mosquitto Eclipse主頁
http://projects.eclipse.org/projects/technology.mosquitto
Mosquitto MQTT Broker詳細(xì)信息,下載,安裝過程等;
http://mosquitto.org/2013/01/mosquitto-debian-repository/
好的背景材料
http://www.hivemq .com/blog/mqtt-essentials/
主題命名約定最佳實(shí)踐的良好來源
http://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices
https://openhardwarecoza.wordpress.com/2015/03/29/openhab-mqtt-arduino-and-esp8266-part -2-publish-subscribe-command-state-and-wtfs/
責(zé)任編輯:wv
-
IOT
+關(guān)注
關(guān)注
187文章
4287瀏覽量
200740 -
樹莓派
+關(guān)注
關(guān)注
121文章
1949瀏覽量
107007
發(fā)布評論請先 登錄
在 MQTT 回調(diào)處理程序中遇到了隨機(jī) MQTT 斷開連接的問題,怎么解決?
如何在MQTT中發(fā)布和訂閱實(shí)體
KaihongOS多實(shí)例MQTT接口
《DNESP32S3使用指南-IDF版_V1.6》第五十五章 基于MQTT協(xié)議連接阿里云服務(wù)器
MQTT物聯(lián)網(wǎng)平臺有哪些?有哪些功能?

低功耗4G模組:MQTT通信功能
MQTT物聯(lián)網(wǎng)云平臺有什么功能
MQTT協(xié)議網(wǎng)關(guān)的工作原理及功能特性

MQTT網(wǎng)關(guān):物聯(lián)網(wǎng)中的關(guān)鍵橋梁

知識科普 MQTT Broker 代理 是什么

IG902如何連接公有MQTT測試平臺?
MQTT物聯(lián)網(wǎng)平臺是什么
來了解一下MQTT Broker代理

評論