1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > MQTT协议之中国移动ONENET

MQTT协议之中国移动ONENET

时间:2023-12-26 00:17:56

相关推荐

MQTT协议之中国移动ONENET

oneNET 免费服务器。MQTT服务器ip地址和端口 183.230.40.39:6002

MQTT协议的14个命令

首先需要申请服务器,建立一个产品,产品下申请两个设备(需要记住产品ID,设备ID、鉴权信息)

app_col

客户端ID(设备ID):aaaaa5188

用户名(产品ID):bbbbb5

密码(鉴权信息):cccccc

connect(1)连接服务器

10 ??

固定报头 +长度

byte1 客户端连接服务器

byte2 byte2后面所有字节数

00 04

长度+可变报头

byte1 长度MSB 00 固定

byte2 长度LSB 04 固定

byte3 M 4d

byte4 Q 51

byte5 T 54

byte6 T 54

byte7 4 版本

byte8 c2

user name flag 1 用户名

password flag 1 密码

will retain 0 ?? 没懂

will qos 0 ??没懂

will flag 0 ??没懂

clean session 1 服务器清除不保留

reserved 0

byte900 keep alive MSB (秒为单位)2min

byte10 78 keep alive LSB (秒为单位)2min

负载报头 长度+客户端id+长度+产品id+长度+密码

app_col

aaaaa5188 转ASCII(9个) a a a a a 35 31 38 38

bbbbb5 转ASCII(6个)bbbbb 35

ccccc转ASCII(6个)cccccc

10 25 00 04 4d 51 54 54 04 c2 00 78 00 09a a a a a 35 31 38 3800 06bbbbb3500 06cccccc

connack(2)服务器返回

20 02 01 00

byte1 服务器返回

byte2 长度

byte3 不适用离线保存数据

byte4

00 连接接收

01 连接拒绝,协议不对

02 连接拒绝 客户端标识符不对

03 连接拒绝,服务器不可用

04 连接拒绝,密码不对

05 连接拒绝,未授权

disconnect(14)

固定报头+长度

e0 00

byte1 客户端自行断开服务器

byte2 命令后面无数据

ping(12)

固定报头+长度

c0 00

byte1客服端发送心跳到服务器

byte2 命令后面无数据

pingrsp(13)

d0 00

byte1服务器返回

byte2 命令后无数据

subscribe(8)订阅报文

82 ?? 00 01

固定报头+长度+报文标识符

byte1 订阅某个主题

byte2 长度

byte3 报文标识符MSB 第1号报文

byte4 报文标识符LSB 第1号报文

长度+可变报文 +报文等级

主题:kfb_topic 转ASCII(9个)6B 66 62 5F 74 6F 70 69 63

等级 0,1,2

发送数据 :82 0E 00 01 00 09 6B 66 62 5F 74 6F 70 69 63 00 1号报文,等级0

返回90 03 00 01 00

发送数据:82 0E 00 15 00 09 6B 66 62 5F 74 6F 70 69 63 00 21号报文,等级0

返回90 03 00 15 00

suback(9) 订阅成功 服务器返回

90 03 00 15 00

90 03 00 01 00

byte1 服务器返回

byte2 长度

byte3 报文标识符MSB

byte4 报文标识符LSB

byte5 等级0

nusubscribe(10)取消订阅 主题:kfb_topic

A2 0d 00 01 00 09 6B 66 62 5F 74 6F 70 69 63 1号报文,不需要等级

返回:B0 02 00 01

unsuback(11) 服务器返回

byte1 服务器返回命令

byte2 长度

byte3 报文标识符MSB

byte4 报文标识符LSB

kfb_col

设备ID:ddddd5205

用户名(产品ID):eeeee5

鉴权信息:ffffff

connect(1)

10 ??

固定报头 +长度

byte1 客户端连接服务器

byte2 byte2后面所有字节数

00 04

长度+可变报头

byte1 长度MSB 00 固定

byte2 长度LSB 04 固定

byte3 M 4d

byte4 Q 51

byte5 T 54

byte6 T 54

byte7 4 版本

byte8 c2

user name flag 1 用户名

password flag 1 密码

will retain 0 ?? 没懂

will qos 0 ??没懂

will flag 0 ??没懂

clean session 1 服务器清除不保留

reserved 0

byte900 keep alive MSB (秒为单位)2min

byte10 78 keep alive LSB (秒为单位)2min

负载报头 长度+客户端id+长度+产品id+长度+密码

kfb_col

ddddd5205 转ASCII(9个) ddddd35 32 30 35

eeeee5 转ASCII(6个)eeeee 35

ffffff转ASCII(6个)ffffff

10 25 00 04 4d 51 54 54 04 c2 00 78 00 09ddddd35 32 30 3500 06eeeee 3500 06ffffff

subscribe(8)订阅报文

82 ?? 00 01

固定报头+长度+报文标识符

byte1 订阅某个主题

byte2 长度

byte3 报文标识符MSB 第1号报文

byte4 报文标识符LSB 第1号报文

长度+可变报文 +报文等级

主题:app_topic 转ASCII(9个)61 70 70 5F 74 6F 70 69 63

等级 0,1,2

app主题

82 0E 00 01 00 09 61 70 70 5F 74 6F 70 69 63 00 订阅app主题 1号报文,等级0

82 0E 00 01 00 09 61 70 70 5F 74 6F 70 69 63 01 订阅app主题 1号报文,等级1

kfb主题

82 0E 00 01 00 09 6B 66 62 5F 74 6F 70 69 63 00 订阅kfb主题 1号报文,等级0

82 0E 00 01 00 09 6B 66 62 5F 74 6F 70 69 63 01 订阅kfb主题 1号报文,等级1

publish(3)发布消息 等级0

30 ??

bit7-bit4 发布命令

bit3 dup 表示可能是重复发送的 早期消息

bit2-bit1 QoS等级

bit0 retain 保留消息

报文标识符 等级0 没有

可变报文 +有效载荷

kfb发布

30 0f 00 09 6B 66 62 5F 74 6F 70 69 63 31 32 33 34 kfb_topic发布等级0 ,无报文标识符,数据1234

app发布

30 0f 00 09 61 70 70 5F 74 6F 70 69 63 35 36 37 38 app_topic发布等级0 ,无报文标识符,数据5678

publish(3)发布消息 等级1 需要 报文标识符

kfb发布

32 11 00 09 6B 66 62 5F 74 6F 70 69 63 00 01 31 32 33 34 kfb_topic发布等级1 ,报文标识符 1号,数据1234

app发布

32 11 00 09 61 70 70 5F 74 6F 70 69 63 00 01 35 36 37 38 app_topic发布等级1 ,报文标识符1号,数据5678

publish(3)发布消息 等级2 需要 报文标识符

kfb发布

34 11 00 09 6B 66 62 5F 74 6F 70 69 63 00 01 31 32 33 34 kfb_topic发布等级2 ,报文标识符 1号,数据1234

app发布

34 11 00 09 61 70 70 5F 74 6F 70 69 63 00 01 35 36 37 38 app_topic发布等级2 ,报文标识符1号,数据5678

puback(4) 等级1 返回

byte1 表示命令 返回等级1

byte2 表示长度

byte3-byte4 表示回复报文标识符

40 02 00 01 等级1 回复 表示签收

pubrec(5)等级2 返回

50 02 00 01

pubrel(6)等级2 再次询问

62 02 00 01

pubcomp(7)等级2 返回

70 02 00 01

打开串口助手或者网络助手,设置为TCPClient,主机ip183.230.40.39:6002 点击连接后

app_col客户端向服务器发送 10 25 00 04 4d 51 54 54 04 c2 00 78 00 09a a a a a 35 31 38 3800 06bbbbb3500 06cccccc

服务器返回 20 02 01 00

kfb_col客户端向服务器发送 10 25 00 04 4d 51 54 54 04 c2 00 78 00 09ddddd35 32 30 3500 06eeeee 3500 06ffffff

服务器返回 20 02 01 00

断开连接 e0 00

发送心跳c0 00 服务器返回 d0 00

app_col 客户端向kfb_col客户端发消息。可以理解为kfb_col是app_col的粉丝,kfb_col关注了app_col。app_col一旦需要发送消息给kfb_col,相当于app_col发布一条消息由服务器推送给kfb_col。

kfb_col需要订阅app_col,相当于kfb_col需要关注app_col

kfb_col客户端订阅app_col的主题app_topic(等级0)

kfb_col客户端发送 82 0E 00 01 00 09 61 70 70 5F 74 6F 70 69 63 00 订阅app主题 1号报文,等级0

服务器返回 90 03 00 01 00

订阅成功

app_col客服端推送消息

30 0f 00 09 61 70 70 5F 74 6F 70 69 63 35 36 37 38 app_topic发布等级0 ,无报文标识符,数据5678

kfb客户端收到消息

30 0f 00 09 61 70 70 5F 74 6F 70 69 63 35 36 37 38

kfb_col客户端订阅app_col的主题app_topic(等级1)一次确认

kfb_col客户端发送 82 0E 00 01 00 09 61 70 70 5F 74 6F 70 69 6301订阅app主题 1号报文,等级1

服务器返回 90 03 00 0101

订阅成功

app_col客服端推送消息

32 11 00 09 61 70 70 5F 74 6F 70 69 63 00 01 35 36 37 38 app_topic发布等级1 ,报文标识符1号,数据5678

kfb客户端收到消息

32 11 00 09 61 70 70 5F 74 6F 70 69 63 00 01 35 36 37 38

app_col 客户端收到服务器返回40 02 00 01

kfb_col客户端订阅app_col的主题app_topic(等级2)两次确认

kfb_col客户端发送 82 0E 00 01 00 09 61 70 70 5F 74 6F 70 69 6302订阅app主题 1号报文,等级2

服务器返回 90 03 00 0102

订阅成功

app_col客服端推送消息

34 11 00 09 61 70 70 5F 74 6F 70 69 63 00 01 35 36 37 38 app_topic发布等级2 ,报文标识符1号,数据5678

app_col 客户端收到服务器返回50 02 00 01 第一次确认

app_col客户端发送62 02 00 01

app_col 客户端收到服务器返回70 02 00 01 第二次确认

kfb客户端收到消息

34 11 00 09 61 70 70 5F 74 6F 70 69 63 00 01 35 36 37 38

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