- 14.DISCONNECT——-断开连接
E0 00
发送后断开连接,设备呈现离线状态
- 12.PING:
C0 00
之前连接报文中00 64 是100秒的保护时间,在100秒时间内没有有效数据要发送,防止被服务器踢下来就要在100秒时间内发送一个PING包
回复D0 00 - 8.SUBSCRIBE ——-订阅主题
等级0:
82 35 00 0A 00 30 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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
等级1:
82 35 00 0A 00 30 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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 01
82 ?? 00 0A
报文标识符相当于一个ID,以便服务器确定身份。
把对应的设备名字改好之后转换为16进制表示。前面在加上16进制的长度
/sys/grioBm0cRmf/D001/thing/service/property/set
/sys/grioBm0cRmf/D001/thing/service/property/set
00 30 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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
82 ?? 00 0A 00 30 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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
SUBSCRIBE 等级0—————-后面添00
82 ?? 00 0A 00 30 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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
SUBSCRIBE 等级1—————-后面添01
82 ?? 00 0A 00 30 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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 01
在求出剩余长度
注意:0A相当于身份,改成1C服务器返回相应的也是1C
允许的返回码值:
0x00 – 最大QoS 0
0x01 – 成功 – 最大QoS 1
0x02 – 成功 – 最大QoS 2
0x80 – Failure 失败
-
10.UNSUBSCRIBE——-取消订阅
A2 34 00 0A 00 30 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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
取消没有等级(没有最后一个字节),所以对应前面剩余长度改为34
取消为A2
-
调试
点击设置后发送指令
8E 01是剩余长度
00 30是长度,十进制为48个字节。数48个字节为2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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
再转换成16进制后为
/sys/grioBm0cRmf/D001/thing/service/property/set
剩下的就是数据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 36 33 33 32 31 34 37 37 36 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 4F 4E 22 3A 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D
转换为16字符串为
{“method”:“thing.service.property.set”,“id”:“633214776”,“params”:{“ON”:0},“version”:“1.0.0”}
方法就在产品功能定义的物模型里面
一会我们要给服务器上报的方法应该是
thing.event.property.post
id可以改变位数一样
{“method”:“thing.event.property.post”,“id”:“000000001”,“params”:{“ON”:0},“version”:“1.0.0”}
这个属于上报,比如服务器让你关,我要post上报我已经关了
以下为开始构建:
- 3.PUBLIC————–发布 等级0
30 8C 01 00 2F 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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 4F 4E 22 3A 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D
固定包头30 剩余长度先用?? ??表示
30 ?? ??
接着是post发布
/sys/grioBm0cRmf/D001/thing/event/property/post
转化为16进制再在前面加上长度
00 2F 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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”:{“ON”:0},“version”:“1.0.0”}
转换为16进制
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 4F 4E 22 3A 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D
合并起来为
30 ?? ?? 00 2F 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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 4F 4E 22 3A 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D
再计算出剩余长度,?? 后面的长度为140,对128取余为12,所以?? ?? 为1000 1100 0000 0001为8C 01
- 观测
此时发送过去后观察运行状态
开关为关
如果此时将数据改为31发送后开关状态改变为开
总结:下发数据按三段来解析,上报也按照三段来整理。格式要按照固定格式。
相同的如果要post其他数据可以一起,再参数里面增加对应的键值对(注意值的精度)
{“method”:“thing.event.property.post”,“id”:“000000001”,“params”:{“ON”:1,“curr”:8,“volt”:230,“electric_fr”:49.90},“version”:“1.0.0”}
前面的报文不用改变(除了剩余长度)
30 ?? ?? 00 2F 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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 4F 4E 22 3A 31 2C 22 63 75 72 72 22 3A 38 2C 22 76 6F 6C 74 22 3A 32 33 30 2C 22 65 6C 65 63 74 72 69 63 5F 66 72 22 3A 34 39 2E 39 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D
合并后计算除剩余长度:
30 B4 01 00 2F 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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 4F 4E 22 3A 31 2C 22 63 75 72 72 22 3A 38 2C 22 76 6F 6C 74 22 3A 32 33 30 2C 22 65 6C 65 63 74 72 69 63 5F 66 72 22 3A 34 39 2E 39 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D
再进行发送,这样就可以发布多个参数。
如果是等级1
首字节改为32 后面多个报文标识符00 0A
32 B4 01 00 0A 00 2F 2F 73 79 73 2F 67 72 69 6F 42 6D 30 63 52 6D 66 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 4F 4E 22 3A 31 2C 22 63 75 72 72 22 3A 38 2C 22 76 6F 6C 74 22 3A 32 33 30 2C 22 65 6C 65 63 74 72 69 63 5F 66 72 22 3A 34 39 2E 39 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D
其他内容可以进行补充。
今天的文章阿里云MQTT报文–2分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/32061.html