一、MQTT協議簡介
MQTT(消息隊列遙測傳輸)是一個基于客戶端-服務器的消息發布/訂閱傳輸協議,是ISO標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的消息協議。MQTT工作在TCP/IP協議棧上,是為硬件性能低下的遠程設備以及網絡狀況不理想的情況下而設計的發布/訂閱型消息協議。由于MQTT協議的輕量、簡便、開放的特點使它適用范圍非常廣泛。在很多情況下,包括受限的環境中使用,廣泛應用于物聯網(IoT)。MQTT協議在衛星鏈路通信傳感器、醫療設備、智能家居、及一些小型化設備中已廣泛使用。
本文使用小凌派RK2206開發板實現基于OpenHarmony的本地MQTT服務。小凌派RK2206開發板采用瑞芯微高性能、高性價比的RK2206芯片。RK2206芯片是一款低功耗、高集成的MCU無線局域網處理器,它可以應用于不同的應用領域,如物聯網、可穿戴設備、家庭自動化、云連接等。小凌派RK2206開發板內置WIFI模塊,外部接口豐富,使用一個小凌派RK2206開發板就能夠輕松實現MQTT物聯網多種應用。
二、硬件電路設計
如圖1所示,為小凌派RK2206開發板支持的外部接口,本文使用小凌派RK2206開發板內置的WIFI和MQTT服務器通信。
圖1 小凌派RK2206開發板
三、軟件設計
1、主程序設計
在iot_mqtt_example函數中,通過LOS_TaskCreate函數創建iot_mqtt_thread線程,并設置線程優先級、線程堆棧大小等參數。
2、MQTT服務程序設計
iot_mqtt_thread函數中,開發板先連接WIFI,通過WIFI和PC端的MQTT服務器通信;WIFI連接成功后,初始化網絡,初始化MQTT客戶端;初始化完成后,連接MQTT服務端,注冊消息接收函數message_receive;函數進入循環,5s向PC端MQTT服務器發送一次消息。
3、MQTT消息接收程序設計
MQTT消息接收程序主要用于接收MQTT服務端下發的消息,接收到消息后,打印接收的信息。
四、編譯測試
1、修改MQTT服務端IP
PC端按鍵WIN + R鍵打開命令行CMD,執行命令ipconfig獲取PC端的IP地址,如圖2所示,PC端的IP地址為:192.168.1.164。
圖2 獲取PC端IP地址
對應修改代碼中的MQTT_SERVER_IP為查詢到PC端IP地址192.168.1.164,MQTT_SERVER_PORT修改為MQTT服務器端口號1883。代碼如下所示:
#define MQTT_SERVER_IP "192.168.1.164"
#define MQTT_SERVER_PORT 1883
2、下載MQTT代理工具mosquitto
根據PC電腦位數選擇對應的安裝包,32位系統下載x86后綴的安裝包,64位系統下載x64后綴的安裝包,本文選擇mosquitto-2.0.9a-install-windows版本進行測試。
32位系統下載地址:https://mosquitto.org/files/binary/win32/,如圖3所示。
圖3 32位系統安裝包
64位系統下載地址:https://mosquitto.org/files/binary/win64/,如圖4所示。
圖4 64位系統安裝包
下載mosquitto安裝包后,點擊安裝mosquitto工具;安裝完畢后,需要配置mosquitto,修改mosquitto安裝路徑下的mosquitto.conf文件,如圖5所示。
圖5 mosquitto配置文件
在mosquitto.conf文件末尾增加如下配置,其中,192.168.1.164為PC端IP地址,1883為MQTT服務器端口號,allow_anonymous為允許匿名登錄。
listener 1883 192.168.1.164
listener 1883 localhost
allow_anonymous true
mosquitto安裝配置完成后,需要開啟mosquitto服務,右擊打開我的電腦-管理-服務和應用程序-服務,找到Mosquitto Broker服務,如圖6所示。
圖6 mosquitto服務
雙擊打開Mosquitto Broker服務,點擊啟動,開啟Mosquitto服務,如圖7所示。
圖7 開啟mosquitto服務
3、下載Eclipse Paho MQTT 工具
Paho MQTT工具下載地址:
https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.1.1/。
下載Paho軟件包:org.eclipse.paho.ui.app-1.1.1-win32.win32.x86_64.zip。如圖8所示。
圖8 Eclipse Paho MQTT工具下載地址
下載Paho軟件包后,解壓軟件包,雙擊打開Paho.exe;進入Paho軟件界面,點擊右上角加號按鍵,添加一個MQTT服務器連接,如圖9所示。
圖9 Eclipse Paho MQTT軟件界面
4、WIFI連接
修改代碼中的SSID和PASSWORD為使用WIFI的SSID和密匙,用于連接網絡,設備通過WIFI訪問PC端MQTT服務器。代碼如下所示:
#define SSID "lzdz"
#define PASSWORD "12345678"
5、運行結果
例程代碼編譯燒寫到開發板后,按下開發板的RESET按鍵,通過串口軟件查看日志,串口打印MQTT初始化、連接等日志。
NetworkConnect...
MQTTClientInit...
MQTTConnect...
MQTTSubscribe...
連接
打開paho軟件,點擊連接,當連接成功時,連接狀態顯示為已連接;需要注意的是,如果出現連接失敗,請嘗試關閉PC防火墻再進行連接。
訂閱
點擊訂閱添加按鍵,新增主題IOT_MQTT(主題名稱需要與例程代碼MQTTPublish函數傳參的主題名稱一致),點擊訂閱按鍵,此時,歷史記錄頁面就開始顯示接收的開發板上報信息,如圖10所示。
圖10 訂閱消息
發布
在發布主題欄,輸入主題名稱substopic(主題名稱需要與例程代碼MQTTSubscribe函數傳參的主題名稱一致),在消息欄輸入消息hello world,點擊發布,此時,歷史記錄頁面顯示已發布出的消息,如圖11所示。
圖11 發布消息
同時,開發板串口會同步顯示接收到的消息日志,如下所示。
message arrived on topic substopic: hello world
message arrived on topic substopic: hello world
-
MQTT
+關注
關注
5文章
649瀏覽量
22435 -
OpenHarmony
+關注
關注
25文章
3662瀏覽量
16159
發布評論請先 登錄
相關推薦
評論