MQTT协议笔记

 MQTT是非常常用的物联网传输协议,通过发布订阅方式实现通信,比如在OneNET平台发布一个主题Topic,单片机里如何订阅主题呢?首先要连接,然后订阅,对应有订阅报文。然后就可以上传数据,对应有发布消息报文,比如通过esp8266将采集的环境数据整理成MQTT规范的报文,发送到物联网平台。然后微信小程序就可以从云平台获取到环境数据。

 

connect报文,由固定,可变报头和有效载荷构成。

 固定报头由两字节组成,其中一个字节是剩余长度,还不确定,用??表示。

可变报头

 

 

 

有效载荷

 其中,密码中*#被替换后,还要进行哈希加密,加密使用的密钥就是DeviceSecret,最后会生成一串16进制字符串,就是最终的密码。

有效载荷整理如下 

 还要转换,将字符转为ASCII码,这时候是十进制,要用16进制表示。

红色框选中部分,代表后面字符个数,这是UTF-8的规范,即开头使用两字节表示后面字符的长度。

 

最终,有效载荷如下

然后与固定报头可变包头拼接

 

将固定报头的??替换为??后面的字符总数。如下

 

 剩余长度,每个字节的最高位都是标志位。

比如,十进制112,小于128,一个字节就能表示,最高位为0,所以是0x70。

 如果剩余长度大于了127,怎么办呢,比如为300。300=128*2+44=2^7+2^2+2^3+2^5。为什么是128,因为低8位的标志位不能算进去,绿色的1表示后面还有字节表示剩余长度,绿色0表示没有。最终为AC 02。

 已知AC 02,求实际长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值