快速学懂——MQTT协议

      最后更新:2022-02-19 22:15:56 手机定位技术交流文章


      MQTT协议详细讲解

        • ==报文排序目录 虽和手册报文排序存有差异 但符合常理认知 方便快速学习==
      • MQTT协议
        • CONNECT(1) —— 客户端请求与服务端建立连接
        • CONNACK(2) —— 服务端确认连接建立
        • DISCONNACK(14) —— 断开连接
        • PING(12) —— 客户端发送PING(连续保活)命令
        • PINGPSP(13) —— PING命令回复
        • SUBSCRIBE(8) —— 订阅请求
        • SUBACK(9) —— 订阅确认
        • UNSUBSCRIBE(10) —— 取消订阅
        • UNSUBACK(11) —— 取消订阅确认
      • MQTT协议(C<==>S)
        • 连接服务器
        • 相互订阅
        • PUBLISH(3) —— 发布消息
        • PUBACK(4) —— 收到发布消息确认(QoS1 等级)
        • PUBREC(5) —— 发布消息收到(QoS2 等级)
        • PUBREL(6) —— 发布消息释放(QoS2 等级)
        • PUBCOMP(7) —— 发布消息完成(QoS2 等级)

      报文排序目录 虽和手册报文排序存有差异 但符合常理认知 方便快速学习

      OneNet MQTT服务器IP地址和端口号183.230.40.39:6002

      设备名称:测试

      客户端受控端(设备ID) :894672089 app
      密码 (鉴权信息):dndfssj

      单片机控制端(设备ID) :894767958
      密码 (鉴权信息):dpjfssj

      二者都为客户端

      用户名 (产品ID) :489402

      在这里插入图片描述

      MQTT协议手册
      百度网盘链接

      MQTT协议

      CONNECT

      登录服务器 —— 信息转成十六进制

      请添加图片描述

      CONNECT(1) —— 客户端请求与服务端建立连接

      客户端登录服务器 (客户端受控端举例)

      10 26 00 04 4D 51 54 54 04 C2 00 78 00 09 38 39 34 36 37 32 30 38 39 00 06 34 38 39 34 30 32 00 07 64 6E 64 66 73 73 6A

      CONNACK(2) —— 服务端确认连接建立

      客户端受控端 回复

      20 02 01 00

      在这里插入图片描述

      DISCONNACK(14) —— 断开连接

      E0 00

      [点击并拖拽以移动]

      PING(12) —— 客户端发送PING(连续保活)命令

      C0 00

      PINGPSP(13) —— PING命令回复

      在这里插入图片描述

      SUBSCRIBE(8) —— 订阅请求

      例如单片机控制端订阅 app_topic:app_topic 转十六进制 61 70 70 5F 74 6F 70 69 63

      82 0E 00 0A 00 09 61 70 70 5F 74 6F 70 69 63 00
      82 0E 00 0B 00 09 61 70 70 5F 74 6F 70 69 63 01 (不是同一报文 订阅质量等级1)

      在这里插入图片描述

      SUBACK(9) —— 订阅确认

      UNSUBSCRIBE(10) —— 取消订阅

      A2 0D 00 0C 00 09 61 70 70 5F 74 6F 70 69 63

      在这里插入图片描述

      UNSUBACK(11) —— 取消订阅确认

      MQTT协议(C<==>S)

      连接服务器

      客户端受控端 (设备ID) :894672089
      密码 (鉴权信息):dndfssj
      客户端受控端 发送连接服务器

      10 26 00 04 4D 51 54 54 04 C2 00 78 00 09 38 39 34 36 37 32 30 38 39 00 06 34 38 39 34 30 32 00 07 64 6E 64 66 73 73 6A

      单片机控制端 (设备ID) :894767958
      密码 (鉴权信息):dpjfssj

      单片机控制端 发送连接服务器

      10 26 00 04 4D 51 54 54 04 C2 00 78 00 09 38 39 34 37 36 37 39 35 38 00 06 34 38 39 34 30 32 00 07 64 70 6A 66 73 73 6A

      相互订阅

      受控端订阅控制端 控制端订阅受控端 ———— 相互订阅
      客户端受控端订阅 kfb_topic

      82 0E 00 0A 00 09 6B 66 62 5F 74 6F 70 69 63 00

      单片机控制端订阅 app_topic

      82 0E 00 0A 00 09 61 70 70 5F 74 6F 70 69 63 00

      PUBLISH(3) —— 发布消息

      在这里插入图片描述

      请添加图片描述

      推送数据 123
      服务等级 QoS0 无报文标识符
      服务等级 QoS0服务器速度快开销小

      30 0E 00 09 6B 66 62 5F 74 6F 70 69 63 31 32 33

      在这里插入图片描述
      如图所示:

      二者相互订阅(只演示订阅等级为0)
      单片机推送数据给客户端
      客户端也可推送数据给单片机
      如不订阅,则收不到任何数据

      推送数据 123

      服务等级 QoS1 有报文标识符

      32 10 00 09 6B 66 62 5F 74 6F 70 69 63 00 01 31 32 33

      PUBACK(4) —— 收到发布消息确认(QoS1 等级)

      PUBACK —— 收到发布消息确认(QoS1 等级)二者相互订阅(只演示订阅等级为0)
      单片机发送 32 10 00 09 6B 66 62 5F 74 6F 70 69 63 00 01 31 32 33(QoS1 等级)
      单片机接收 客户端发来的推送确认 40 02 00 01 —— 回复
      表示单片机 推送数据成功
      如单片机没有接收到 40 02 00 01则需要重发
      把 PUBLISH —— 发布消息 的 DUP置位 3A10 00 09 6B 66 62 5F 74 6F 70 69 63 00 01 31 32 33

      PUBREC(5) —— 发布消息收到(QoS2 等级)

      PUBLISH —— 发布消息
      服务等级 QoS2 有报文标识符

      34 10 00 09 6B 66 62 5F 74 6F 70 69 63 00 01 31 32 33

      单片机发送数据 34 10 00 09 6B 66 62 5F 74 6F 70 69 63 00 01 31 32 33(QoS2 等级)
      单片机接收 客户端发来的推送确认 50 02 00 01 —— 第一次推送确认
      单片机发送 60 02 00 01 —— 确认 再问
      客户端接收数据 34 10 00 09 6B 66 62 5F 74 6F 70 69 63 00 01 31 32 33
      单片机接收 客户端发来的推送再确认 70 02 00 01 —— 第二次推送确认
      客户端发送 70 02 00 01 —— 确定完成

      任何一步没有签收 将重发
      结束

      PUBREL(6) —— 发布消息释放(QoS2 等级)

      二次询问
      单片机发送 60 02 00 01 —— 签收 再问

      PUBCOMP(7) —— 发布消息完成(QoS2 等级)

      客户端发送 70 02 00 01 —— 确定签收完成
      表示彻底完成一次数据传输

      请添加图片描述

      结束

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/18688.html

          热门文章

          文章分类