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