基于STM32实现MQTT

您所在的位置:网站首页 at指令mqtt通讯 基于STM32实现MQTT

基于STM32实现MQTT

2024-07-11 07:14| 来源: 网络整理| 查看: 265

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

   协议详情: MQTT Version 3.1.1(英文版)

                    (中文版)

2、STM32实现的自我理解

   既然是一个协议,所以有一个基本的物理网络层就可以实现

   将就手上的一个ESP8266无线wifi串口模块,一个STM32的板子。也就可以完成MQTT的测试了。

   一般来说在协议中扮演的是一个客户端。主要的工作就是连接服务器、订阅消息、发送消息几个功能。最开始我在网上找了MQTT的客户端代码包,打开一看就蒙了。太多、太杂了,完全大于了我们的需求。所以我自己通过抓包对着协议写了一个数据包生成代码。

3、测试前准备

   MQTT服务器:我用的是Apollo Console(账号默认为:admin 密码默认:password 后面连接时要用)

   MQTT客户端: 通信猫。

   具体怎么用大家百度。。。

4、代码实现 4.1、固定报头 Fixed header

类型:

标志位:

根据这个可以写一个生成固定头的函数

 

#define MQTT_TypeCONNECT 1//请求连接

#define MQTT_TypeCONNACK 2//请求应答

#define MQTT_TypePUBLISH 3//发布消息

#define MQTT_TypePUBACK 4//发布应答

#define MQTT_TypePUBREC 5//发布已接收,保证传递1

#define MQTT_TypePUBREL 6//发布释放,保证传递2

#define MQTT_TypePUBCOMP 7//发布完成,保证传递3

#define MQTT_TypeSUBSCRIBE         8//订阅请求

#define MQTT_TypeSUBACK 9//订阅应答

#define MQTT_TypeUNSUBSCRIBE                 10//取消订阅

#define MQTT_TypeUNSUBACK 11//取消订阅应答

#define MQTT_TypePINGREQ 12//ping请求

#define MQTT_TypePINGRESP 13//ping响应

#define MQTT_TypeDISCONNECT                 14//断开连接

unsigned char GetDataFixedHead(unsigned char MesType,unsigned char DupFlag,unsigned char QosLevel,unsigned char Retain)

{

unsigned char dat = 0;

dat = (MesType & 0x0f)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3