当前位置: 首页 > news >正文

MQTT报文介绍

一、connect报文

connect报文有三个部分组成,固定报文、可变报文、有效载荷三个部分。

首先是固定报文:

、消息类型如下:

所以固定报头为10 XX(10 A3 01 )

其次是可变报头

可变报头协议名、协议级别、连接标志、保持连接四个部分组成。

协议名:

因此对于此的协议名为:  00 04 4D 51 54 54

协议级别:

故协议级别为 04

连接标志:

故连接标志为 C2

保持连接:

保持连接  00 64

有效载荷:

设备ID和产品ID如下:

下面为在onenet中进行创建

设备ID为:vibrate01    产品ID为:8HMWX6Vb1E  但是要转化为ASCII

经转化设备ID为:00 09 76 69 62 72 61 74 65 30 31   (前面两位为长度)

产品ID为:00 0A 38 48 4D 57 58 36 56 62 31 45 (前面两位为长度)

Token:

利用如下工具

其中

et要将时间转为时间戳    method选择 sha1  

生成的:version=2018-10-31&res=products%2F8HMWX6Vb1E%2Fdevices%2Fvibrate01&et=2017881776&method=sha1&sign=bCrs7VgsCFRz0OdbfGYDr945El0%3D

将其转为ASCII 为00 80 76 65 72 73 69 6F 6E 3D 32 30 31 38 2D 31 30 2D 33 31 26 72 65 73 3D 70 72 6F 64 75 63 74 73 25 32 46 38 48 4D 57 58 36 56 62 31 45 25 32 46 64 65 76 69 63 65 73 25 32 46 76 69 62 72 61 74 65 30 31 26 65 74 3D 32 30 31 37 38 38 31 37 37 36 26 6D 65 74 68 6F 64 3D 73 68 61 31 26 73 69 67 6E 3D 62 43 72 73 37 56 67 73 43 46 52 7A 30 4F 64 62 66 47 59 44 72 39 34 35 45 6C 30 25 33 44(前两个为长度 128转化为16进制的)

现在确定剩余长度的值

10 XX 00 04 4D 51 54 54 04 C2 00 64 00 09 76 69 62 72 61 74 65 30 31 00 0A 38 48 4D 57 58 36 56 62 31 45 00 80 76 65 72 73 69 6F 6E 3D 32 30 31 38 2D 31 30 2D 33 31 26 72 65 73 3D 70 72 6F 64 75 63 74 73 25 32 46 38 48 4D 57 58 36 56 62 31 45 25 32 46 64 65 76 69 63 65 73 25 32 46 76 69 62 72 61 74 65 30 31 26 65 74 3D 32 30 31 37 38 38 31 37 37 36 26 6D 65 74 68 6F 64 3D 73 68 61 31 26 73 69 67 6E 3D 62 43 72 73 37 56 67 73 43 46 52 7A 30 4F 64 62 66 47 59 44 72 39 34 35 45 6C 30 25 33 44    

在10 XX后面 有162个   剩余长度计算如下

用画笔工具给162进行解释

162-127=35  则0100011 (后7位)8位为1 表明后面有字节

后面那个字节 00000001 (128)第8位表明后面无字节

因此报文为:

10 A3 01 00 04 4D 51 54 54 04 C2 00 64 00 09 76 69 62 72 61 74 65 30 31 00 0A 38 48 4D 57 58 36 56 62 31 45 00 80 76 65 72 73 69 6F 6E 3D 32 30 31 38 2D 31 30 2D 33 31 26 72 65 73 3D 70 72 6F 64 75 63 74 73 25 32 46 38 48 4D 57 58 36 56 62 31 45 25 32 46 64 65 76 69 63 65 73 25 32 46 76 69 62 72 61 74 65 30 31 26 65 74 3D 32 30 31 37 38 38 31 37 37 36 26 6D 65 74 68 6F 64 3D 73 68 61 31 26 73 69 67 6E 3D 62 43 72 73 37 56 67 73 43 46 52 7A 30 4F 64 62 66 47 59 44 72 39 34 35 45 6C 30 25 33 44  

连接成功:

二、CONNACK报文

固定报头

故报文为20 02 00 00  剩余长度两个字节

三、SUBSCRIBE报文

报文同样由三个部分组成:固定报头    可变报头    有效载荷

主题过滤器在onenet中进行选择

选择 $sys/8HMWX6Vb1E/vibrate01/thing/property/post/reply

转化为ASCII 

24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79    

长度为10  则 00 33 24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79   

则综合上述;

82 38 00 0A 00 33 24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79 00

三、SUBACK报文

由固定报头、可变报头、有效载荷三个部分组成

固定报头

可变报头

故返回的应该为: 90 03 00 0A 00

四、UNSUBSCRIBE 报文

固定报头 可变报头  有效载荷

则固定报头 :A2 XX

可变报头为 00 0B

选择 $sys/8HMWX6Vb1E/vibrate01/thing/property/post/reply

转化为ASCII 

24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79    

长度为10  则 00 33 24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79   

则综合上述;

A2 37 00 0B 00 33 24 73 79 73 2F 38 48 4D 57 58 36 56 62 31 45 2F 76 69 62 72 61 74 65 30 31 2F 74 68 69 6E 67 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 2F 72 65 70 6C 79 

五、UNSUBACK 报文

固定报头 可变报头

相关文章:

  • 怎么把cursor(Cursor/ollama)安装到指定路径
  • Python图像处理全攻略:从基础到前沿技术深度剖析
  • Java 中 LRU 缓存机制详解与实践​
  • Linux操作系统:信号
  • 【Spring Boot】配置实战指南:Properties与YML的深度对比与最佳实践
  • C语言---内存函数
  • 【亲测有效】Ubuntu22.04安装黑屏重启进入系统卡死
  • AI赋能R-Meta分析核心技术:从热点挖掘到高级模型
  • openlayer:07点击实现切换图层之addLayer
  • 【leetcode】70. 爬楼梯
  • Java 参数值传递机制
  • 采用线性优化改进评估配电网的灵活性范围
  • docker-compose使用详解
  • Unity中SRP Batcher使用整理
  • BeamDojo: Learning Agile Humanoid Locomotion on Sparse Footholds
  • 【深度估计 Depth Estimation】数据集介绍
  • 静态方法和实例方法的区别
  • NVIDIA GPU 性能调优与诊断完全指南
  • PortgreSQL常用操作
  • shell脚本总结3
  • 搜索引擎优化哪些方面/五年级上册优化设计答案
  • 防钓鱼网站宣传/企业培训师资格证报考2022
  • 做网站设计收入/sem是什么显微镜
  • 泰安人才网首页/常州seo
  • 网站建设服务合同书/软文营销文章300字
  • 企业做网站要注意些什么/班级优化大师网页版登录