1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > MQTT学习笔记(1)--网络调试助手连接阿里云物联网

MQTT学习笔记(1)--网络调试助手连接阿里云物联网

时间:2022-01-06 05:56:43

相关推荐

MQTT学习笔记(1)--网络调试助手连接阿里云物联网

初探 MQTT的网络调试助手通信测试

上手之前觉得很有难度,但是当你慢慢上手,你回过头来,你会发现哦,原来是这样的啊!

这里用的平台是阿里云的物理网平台所以有必要要介绍一下如何使用平台,如何申请,和白嫖平台。

物联网平台申请

阿里云 - 物联网 MQTT注册

产品 ProductKey

设备 DeviceName

设备三元组 DeviceSecret

进入阿里云物联网平台免费注册 物联网平台 ()

填写 产品名称、所属品类 “、” 节点类型 “、” 连接方式 “、” 数据格式 “、” 认证方式 ",点击下方保存

找到设备三元组

三元组为

{“ProductKey”:“hhyyFwo5b9l”,

“DeviceName”:“D001”,“DeviceSecret”:

“be5c22218e57fc60a64a00c23c05849a” }

添加功能。添加了几个开关和温湿度的属性。

点击产品步骤如下

添加页面

添加标准模块

发布上线

第一步是申请,然后第二步可以说是通过这个设备来了解mqtt报文协议的报文发送原理。

利用网络调试助手连接阿里云物联网

{

“ProductKey”: “hhyyFwo5b9l”,

“DeviceName”: “D001”,

“DeviceSecret”: “be5c22218e57fc60a64a00c23c05849a”

}

客户端id D001|securemode=3,signmethod=hmacsha1| 38字节

16 进制

44 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

用户名 D001&hhyyFwo5b9l 16字节

16 进制

44 30 30 31 26 68 68 79 79 46 77 6F 35 62 39 6C

密码 :clientIdD001deviceNameD001productKeyhhyyFwo5b9l

/

78776835497cac51798a0e7af0fb9aa07bfd7e68 转16 进制 字长 40

37 38 37 37 36 38 33 35 34 39 37 63 61 63 35 31 37 39 38 61 30 65 37 61 66 30 66 62 39 61 61 30 37 62 66 64 37 65 36 38

MQTT 报文固定格式

固定报头

可变报头

报文连接一般是

报文类型 + 固定报头

01(CONNECT) ??(剩余字节长度)

00 04(协议名长度 MQTT) 4D("M")51("Q")54("T")54("T")

04(协议级别) C2(连接标志) 00 64(保持连接时长100秒,可自行定义)00 26 44 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的字节长度38 hex 26 + 客户端ID)00 26 44 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 10 44 30 30 31 26 68 68 79 79 46 77 6F 35 62 39 6C (用户名长度 16 hex 26 +用户名)00 28 37 38 37 37 36 38 33 35 34 39 37 63 61 63 35 31 37 39 38 61 30 65 37 61 66 30 66 62 39 61 61 30 37 62 66 64 37 65 36 38(密码长度 40 hex 28 +密码)

连接CONNECT

10 6E 00 04 4D 51 54 54 04 C2 00 64 00 26 44 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 10 44 30 30 31 26 68 68 79 79 46 77 6F 35 62 39 6C 00 28 37 38 37 37 36 38 33 35 34 39 37 63 61 63 35 31 37 39 38 61 30 65 37 61 66 30 66 62 39 61 61 30 37 62 66 64 37 65 36 38 (可变报头 + 有效载荷 的总长度 = 110 hex 6E)

网络助手连接连接

阿里云服务器IP地址(华东2) : *.iot-as-- *表示自己账号的ProductKey注意替换 hhyyFwo5b9l.iot-as--

阿里云服务器端口号(华东2) : 1883

协议是tcp client

返回 20 02 00 00

CONNACK 确认连接

即为CONNECT的响应,数据流动方向为 S -> C。

正确,返回:20 02 00 00,并且保持链接。00 连接成功。

错误,返回:20 02 00 04,并且断开连接。04 无效的用户名和密码。

其他的值含义,若10s内无上报消息,阿里云会主动断开连接。

DISCONNECT 断开连接

E0 00

显示断开

阿里物联网平台显示离线

PINGREQ 心跳请求

PINGREQ帧:C0 00 在Keep alive时间内,C端应该向S端发送 PINFREQ,告知客户端还存在。

PINGRESP 心跳响应

即为PINGREQ的响应,数据流动方向为 S -> C。

PINGRESP帧:D0 00

心跳响应

SUBSCRIBE 订阅主题

首先要知道与阿里云通信,需要订阅哪几个主题?

回到设备的产品界面,Topic类列表 - 物模型通信Topic,可查看与物模型通信用到的所有主题。

设备上报温湿度消息给云服务器:

/sys/hhyyFwo5b9l/${deviceName}/thing/event/property/post

/sys/hhyyFwo5b9l/D001/thing/event/property/post

云服务器下发控制命令给家居设备:

/sys/hhyyFwo5b9l/${deviceName}/thing/service/property/set

/sys/hhyyFwo5b9l/D001/thing/service/property/set

82 ??

报文标识 00 0A 一个标记 如果订阅很多的话建议自己规定标记

报文有效载荷

Byte 1 Byte 2 (长度MSB,LSB) byte 3…N(主题过滤 话题名) byte N+1(服务质量 0000 00 00质量等级)

固定报头 Byte1 82 | Byte 2 ??(剩余报文长度)

报文标识 Byte1 00 | Byte 2 0A> 00 0A

报文载荷(订阅的主题)

Byte 1 ?? Byte 2 ?? (订阅主题名长度)>00 30

Byte 3-N :2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74

(/sys/hhyyFwo5b9l/D001/thing/service/property/set 48长度)

Byte N+1 : 00 (QoS等级1)

剩余长度报文: 53 ==> hex 35

00 0A 00 30 2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74 00

订阅(/sys/hhyyFwo5b9l/D001/thing/service/property/set)报文:

82 35 00 0A 00 30 2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74 00

同理订阅/sys/hhyyFwo5b9l/D001/thing/event/property/post

82 34 00 0B 00 2F 2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 65 76 65 6E 74 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 00

SUBACK – 订阅确认

固定报头

可变报头 + 报文标识符号 和订阅时候设置一样的回文

网络助手 90 03 00 0A 01

阿里云平台的状态

取消订阅

和订阅话题相似 没有质量等级

订阅(/sys/hhyyFwo5b9l/D001/thing/service/property/set)报文:

A2 34 00 0A 00 30 2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74

同理订阅/sys/hhyyFwo5b9l/D001/thing/event/property/post

A2 33 00 0B 00 2F 2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 65 76 65 6E 74 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74

阿里云平台

UNSUBACK 报文没有有效载荷

固定报头+剩余长度 + 订阅标识符

PINGREQ – 心跳请求.

客户端发送 PINGREQ 报文给服务端的。用于:

在没有任何其它控制报文从客户端发给服务的时,告知服务端客户端还活着。请求服务端发送 响应确认它还活着。使用网络以确认网络连接没有断开。

保持连接(Keep Alive)处理中用到这个报文

固定报头 + 剩余长度 C0 00

心跳响应 D0 00

断开连接 DISCONNECT

固定报头+ 剩余长度 E0 00

PUBLISH – 发布消息

PUBLISH 控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息。

固定报头

30 98 01

00 30 2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74 7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 73 65 72 76 69 63 65 2E 70 72 6F 70 65 72 74 79 2E 73 65 74 22 2C 22 69 64 22 3A 22 31 30 38 37 30 30 32 31 37 35 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 50 6F 77 65 72 53 77 69 74 63 68 22 3A 31 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D

/sys/hhyyFwo5b9l/D001/thing/service/property/set{“method”:“thing.service.property.set”,“id”:“1087002175”,“params”:{“PowerSwitch”:1},“version”:“1.0.0”}

30 是 固定报头 98 01 是剩余长度 152 152 -128=98

模仿上面的数据格式

固定报头 :30 ?? ?? 剩余长度取决于后面的字节

Topic话题+荷载(数据)

00 2F + 数据

/sys/hhyyFwo5b9l/D001/thing/event/property/post 47

2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 65 76 65 6E 74 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74

{“method”:“thing.event.property.post”,“id”:“000000001”,“params”:{“CurrentHumidity”:32,“CurrentTemperature”:25.65},“version”:“1.0.0”} 132

7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 65 76 65 6E 74 2E 70 72 6F 70 65 72 74 79 2E 70 6F 73 74 22 2C 22 69 64 22 3A 22 30 30 30 30 30 30 30 30 31 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 43 75 72 72 65 6E 74 48 75 6D 69 64 69 74 79 22 3A 33 32 2C 22 43 75 72 72 65 6E 74 54 65 6D 70 65 72 61 74 75 72 65 22 3A 32 35 2E 36 35 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D

发布 181 181-128 = 53 0011 0101 ==> 1(标志位) 011 0101 ==> B5

30 B5 01 00 2F 2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 65 76 65 6E 74 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 65 76 65 6E 74 2E 70 72 6F 70 65 72 74 79 2E 70 6F 73 74 22 2C 22 69 64 22 3A 22 30 30 30 30 30 30 30 30 31 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 43 75 72 72 65 6E 74 48 75 6D 69 64 69 74 79 22 3A 33 32 2C 22 43 75 72 72 65 6E 74 54 65 6D 70 65 72 61 74 75 72 65 22 3A 32 35 2E 36 35 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D

温度 湿度 上传成功

发布 等级0 16进制

{“method”:“thing.event.property.post”,“id”:“000000001”,“params”:{“PowerSwitch”:1},“version”:“1.0.0”}

100

7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 65 76 65 6E 74 2E 70 72 6F 70 65 72 74 79 2E 70 6F 73 74 22 2C 22 69 64 22 3A 22 30 30 30 30 30 30 30 30 31 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 50 6F 77 65 72 53 77 69 74 63 68 22 3A 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D

开关 关

30 95 01 00 2F 2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 65 76 65 6E 74 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 65 76 65 6E 74 2E 70 72 6F 70 65 72 74 79 2E 70 6F 73 74 22 2C 22 69 64 22 3A 22 30 30 30 30 30 30 30 30 31 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 50 6F 77 65 72 53 77 69 74 63 68 22 3A 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D

30 95 01 00 2F 2F 73 79 73 2F 68 68 79 79 46 77 6F 35 62 39 6C 2F 44 30 30 31 2F 74 68 69 6E 67 2F 65 76 65 6E 74 2F 70 72 6F 70 65 72 74 79 2F 70 6F 73 74 7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 65 76 65 6E 74 2E 70 72 6F 70 65 72 74 79 2E 70 6F 73 74 22 2C 22 69 64 22 3A 22 30 30 30 30 30 30 30 30 31 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 50 6F 77 65 72 53 77 69 74 63 68 22 3A 31 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D

先随便给自己整理一下,后面再改。不管这么多先。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。