使用网络调试助手 MQTT接入阿里云物联网平台,逐字节讲解,适用单片机/ESP8266接入阿里云

本文深入解析MQTT协议的工作原理,包括连接、确认、断开等关键步骤,并通过实例展示如何使用网络调试助手实现设备与阿里云物联网平台的数据交互。涵盖了从连接服务器到消息发布的全过程,特别适合初学者理解MQTT协议。

目录

1. CONNECT 连接服务器

2. CONNACK 确认连接

3. DISCONNECT 断开连接

4. PINGREQ 心跳请求

5. PINGRESP 心跳响应

6. SUBSCRIBE 订阅主题

7. SUBACK 订阅确认

8. UNSUBSCRIBE 取消订阅

9. UNSUBACK 取消订阅确认

10. PUBLISH 发布消息(双向的,C < = > S)

11. PUBACK 发布确认

总结

实际案例、相关链接


此教程使用电脑网络调试助手,MQTT接入阿里云物联网平台,手动计算MQTT 报文帧,实现IOT设备的数据解析与上报。

逐字节详解 MQTT控制报文帧的合成和解析,对于单片机设备 MQTT接入物联网平台,有很好的借鉴作用。

 

相关文章

此教程,使用的设备证书三元组为

{
  "ProductKey": "a1wFylTxYeD",
  "DeviceName": "co_0001",
  "DeviceSecret": "7ab0c4b3532b5783df5fdc58a2895d7a"
}

阿里云物联网控制台:阿里云

 

1. CONNECT 连接服务器

  • 有效载荷字段中,客户端ID、用户名、密码的合成方法:
客户端ID *|securemode=3,signmethod=hmacsha1| *为设备名称
用户名 *&# *为设备名称,#是ProductKey
密码 用DeviceSecret做为秘钥对clientId*deviceName*productKey#进行hmacsha1加密后的结果 *为设备名称,#是ProductKey

结合自己的设备证书,最终合成的客户端ID、用户名、密码:

客户端ID:co_0001|securemode=3,signmethod=hmacsha1|

用户名:co_0001&a1wFylTxYeD

clientIdco_0001deviceNameco_0001productKeya1wFylTxYeD

-------------------------------用DeviceSecret做为秘钥,进行HmacSHA1加密---------------------------------

密码:e782b5e55b37655c27812a60c307b0a7575d8f6d

将上面这些统统转换为 16进制,以备帧合成过程中使用。

  字符格式 16 进制ASC2编码格式 长度
客户端ID co_0001|securemode=3,signmethod=hmacsha1| 63 6F 5F 30 30 30 31 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C 41
用户名 co_0001&a1wFylTxYeD 63 6F 5F 30 30 30 31 26 61 31 77 46 79 6C 54 78 59 65 44 19
密码 e782b5e55b37655c27812a60c307b0a7575d8f6d 65 37 38 32 62 35 65 35 35 62 33 37 36 35 35 63 32 37 38 31 32 61 36 30 63 33 30 37 62 30 61 37 35 37 35 64 38 66 36 64 40

 

  • CONNECT 报文帧的合成过程:

10 ?? (固定报头。??为剩余长度,待后续报文合成完毕后计算)

10 ?? 00 04 4D 51 54 54 04 C2 01 2C(可变报头。01 2C为Keep alive的时长300,单位秒。可自行定义)

10 ?? 00 04 4D 51 54 54 04 C2 01 2C 00 29 63 6F 5F 30 30 30 31 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C(客户端ID的字节长度41 + 客户端ID)

10 ?? 00 04 4D 51 54 54 04 C2 01 2C 00 29 63 6F 5F 30 30 30 31 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C 00 13 63 6F 5F 30 30 30 31 26 61 31 77 46 79 6C 54 78 59 65 44 (用户名的字节长度19 + 用户名)

10 ?? 00 04 4D 51 54 54 04 C2 01 2C 00 29 63 6F 5F 30 30 30 31 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C 00 13 63 6F 5F 30 30 30 31 26 61 31 77 46 79 6C 54 78 59 65 44 00 28 65 37 38 32 62 35 65 35 35 62 33 37 36 35 35 63 32 37 38 31 32 61 36 30 63 33 30 37 62 30 61 37 35 37 35 64 38 66 36 64 (密码的字节长度40 + 密码)

10 74 00 04 4D 51 54 54 04 C2 01 2C 00 29 63 6F 5F 30 30 30 31 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C 00 13 63 6F 5F 30 30 30 31 26 61 31 77 46 79 6C 54 78 59 65 44 00 28 65 37 38 32 62 35 65 35 35 62 33 37 36 35 35 63 32 37 38 31 32 61 36 30 63 33 30 37 62 30 61 37 35 37 35 64 38 66 36 64(可变报头 + 有效载荷 的总长度 = 116)

  • 最终合成后的CONNECT报文:

10 74 00 04 4D 51 54 54 04 C2 01 2C 00 29 63 6F 5F 30 30 30 31 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C 00 13 63 6F 5F 30 30 30 31 26 61 31 77 46 79 6C 54 78 59 65 44 00 28 65 37 38 32 62 35 65 35 35 62 33 37 36 35 35 63 32 37 38 31 32 61 36 30 63 33 30 37 62 30 61 37 35 37 35 64 38 66 36 64

留意中文输入法,可能会乱码

 

    评论 11
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值