ESP8266 AT指令開發(基於STC89C52單片機): 關於上一節MQTT底層封包解包源碼使用說明


 

 

 

前言

  請先看這一節了解一下MQTT

  https://www.cnblogs.com/yangfengwu/p/11762642.html  (了解MQTT)

  如果自己有興趣可以自己去安裝MQTT軟件

  然后讓自己的設備通過自己的服務器進行通信

  或者根據文章直接連接阿里雲物聯網平台

  

 

 

 

說明

  用戶看完上面的文章以后,需要明確,MQTT軟件就是一個TCP服務器

  然后在TCP服務器的基礎上封裝了一套協議

  只要是咱的模塊可以實現TCP,那么就可以實現連接MQTT

  本人這節的MQTT包底層封裝的非常全面,

  用戶可根據自己對MQTT的理解合理的運用.

  由於本節的開發板使用的是89C58,其容量受到限制

  故只能提供以消息等級0進行通信的基礎例子

  如果想了解封裝的更加全面的代碼請點擊鏈接

  https://www.cnblogs.com/yangfengwu/p/12540710.html

 

  

先說一下程序的流程

  一,配網(控制wifi模塊連接上路由器)

  配網采用的SmartConfig

  

 

 

  SmartConfig流程就是上一節的APP綁定設備的流程

 

  具體流程請看上一節

 

 

 

  模塊配網以后便連接上了路由器,那么便可以訪問廣域網

 

 

 

 

控制模塊連接MQTT

  1.請用戶自行打開一下函數

  

 

 

  2.獲取了MAC地址

  連接MQTT的Client采用 設備的MAC地址

 

  設備訂閱的主題是:user/MAC地址

 

  設備發布的主題是:device/MAC地址

 

  所以獲取了MAC地址

 

  

 

 

 

 

 

  3.連接TCP服務器

  實際上就是連接MQTT服務器,MQTT服務器就是一個TCP

  所以先用TCP連接上

  我使用的是AT+SAVETRANSLINK

  這個指令是直接進入透傳模式+自動重連

  單片機通過串口發送的數據,wifi模塊接收以后自動發給TCP服務器

  wifi模塊從TCP服務器接收的數據直接通過串口發給單片機

  

 

 

   4.打包MQTT連接指令

  

 

 

  int mqtt_msg_connect(mqtt_connect_info_t* info,unsigned char **data_ptr,unsigned char* buffer,int buffer_length)

 

  

 

 

 

  判斷是否連接上

  

 

 

 

  6.訂閱主題

  

 

 

 

  int mqtt_msg_subscribe_topic(unsigned char* topic, int qos,unsigned char **data_ptr,unsigned char* buffer,int buffer_length)

 

  

 

 

 

 

 

 

  判斷是否訂閱成功

  

 

 

 

  7.發布消息

  

 

 

 

   

  

 

 

  int mqtt_msg_publish(unsigned char* topic,unsigned  char* date, int data_length, int qos, int retain,unsigned  char **data_ptr,unsigned char* buffer,int buffer_length)

  

 

 

 

 

 

 

   8.接收處理消息

  

 

 

  

 

 

 

 

  9.發送心跳包

 

  

 

 

  

 

 

 

 

 

 

 

 

 

結語

  這是最底層的MQTT封包

  用戶可根據自己的單片機容量合理的再次封裝

  

 

 

 

 

  

  


免責聲明!

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



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