基於麒麟座開發板2.0的MQTT實現例程


鏈接--->https://sanwen8.cn/p/649shZ1.html

OneNET現已全面適配標准MQTT協議,相信這一功能的增加會**便於開發者進行設備的接入。


OneNET提供了MQTT的C語言版本的SDK供大家使用,接下來我們將利用該SDK,將MQTT協議移植到麒麟座開發板上,希望這邊文章能對希望使用MQTT接入OneNET的開發者提供一定幫助。☀

(本文中使用的SDK、調試工具、以及說明文檔,均可以在官網文檔中心中的MQTT專區下載)

 

 下載SDK 

(一)

 

▶ 首先進入我們的MQTT說明專區,找到C語言SDK下載鏈接,下載SDK。

其中:
mqtt/config.h 

mqtt/mqtt.h  

mqtt/mqtt_buffer.h  

src/mqtt.c   

src/mqtt_buffer.c  

為MQTT相關的.c 以及.h文件sample/c/sample.c  是使用示例文件

 

   — 代碼的移植

(二)

 

▶ 將上述.c 以及 .h 文件復制到 開發板的工程中 Protocol/mqtt目錄下,在工程中添加mqtt.c以及mqtt_buffer.c文件(記得修改Include Path 路徑)


▶ 由於SDK是在linux環境下編譯以及測試的,移植到STM32環境下帶來了平台的差異性。


▶ 主要記得修改如下地方:
1、修改MQTT相關的.h文件的include路徑,使之與工程環境相匹配
2、屏蔽掉原來的assert函數,和inline關鍵字
3、修改分配的緩沖區的大小
    主要是  MqttSample_Init()函數中的Mqtt_InitContext() 函數,SDK中分配了 1<<20大小的字節,由於STM32資源有限,這里需要改小一點,本例中為1000字節。
4、修改接口的初始化、收、發函數。
    原SDK是在linux系統中利用網口來實現通信,而開發板中使用串口連接通信模塊的形式實現通信,相關的函數都需要作相應的修改,詳見代碼文件。

 

— 代碼示例 —

(三)

 

 

(1)源代碼如下:

在平台創建一個公開協議產品(設備接入協議類型選擇MQTT協議),這里不介紹產品創建過程,請參考平台文檔中心“接入幫助”部分的相關內容。

 

(2)本例中的代碼流程如下圖:

 

(3)開發板資源分配如下:

代碼中需要修改的參數位置:
main.c   
line 40:

line 789

esp8266.h  
line1 :

 

 

— SDK使用示例 —

(四)

 

▶ MQTT連接

▶ MQTT訂閱

▶ MQTT發布消息

▶ MQTT回復命令

▶ MQTT上傳數據

▶ 接收數據解析

 

— 代碼接入測試 —

(五)

 

▶ 使用MQTT simulate device 來模擬同產品目錄下的另外一個設備

  ▶ 打開設備電源,在調試串口目錄下可以看到調試信息

▶ 使用模擬設備與平台建立連接

可以看到產品topic列表中已經有開發板所創建的 test_topic(訂閱自動創建)

 

— topic發布以及接收測試 

(六)

 

▶ 在訂閱框中輸入key_press ,點擊訂閱(該topic為開發板按鍵發布消息的topic)

▶ 按下開發板上的key2,見調試信息:

▶ 觸發消息之后,在模擬器側,就可以收到該topic的消息了

▶ 使用模擬軟件,向test_topic發送一則消息

▶ 在開發板側,可以從調試信息中看到,已經收到了該topic消息

至此,topic的訂閱與發布測試已完成。

 

— 命令下發與應答測試 —

(七)

 

▶ 在線發送命令給開發板


▶ 在調試信息中可以看到以及接收了該命令並成功解析

▶ 此時LED7已經被點亮

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM