MQTT协议连接阿里云
MQTT协议连接阿里云
目录 操作中使用到的相关链接资料 生活物联平台(飞燕平台)创建项目及产品,MQTT协议调试登录 准备需要的信息 一、网络调试助手etAssist COECT 报文 DISCOECT 报文 PIG报文 SUBSCRIBE 报文 USUBSCRIBE 报文 PUBLISH 报文 二、串口调试助手XCOM(
MQTT协议连接阿里云
-
目录
操作中使用到的相关链接资料
生活物联平台(飞燕平台)创建项目及产品,MQTT协议调试登录
准备需要的信息
一、网络调试助手etAssist
COECT 报文
DISCOECT 报文
PIG报文
SUBSCRIBE 报文
USUBSCRIBE 报文
PUBLISH 报文
二、串口调试助手XCOM(这里需要结合USB-TTL和ESP8266-01S)
总结
操作中使用到的相关链接资料:
- 阿里云(飞燕平台):生活物联网平台_智能家居_智能家电_智能设备_语音控制-阿里云 (aliyun)
- 创建项目产品参考步骤:开发自有品牌项目的产品 (aliyun)
- MQTT协议:网上搜索
-
通过物联网IoT的生活物联平台(飞燕平台)创建项目及产品(可参考开发自有品牌项目的产品_生活物联网平台-阿里云帮助中心的创建项目到添加设别完)设备等待激活(当我们登陆该设备后,就会自动激活了)
- 设备调试,以下我通过两种调试软件进行设备登录及数据传输:
-
准备需要的信息:
阿里云物联网平台的域名和端口如下:
远程主机地址: *.iot-as-mqtt-shanghai.aliyuncs (这里的*需要用ProductKey进行替换)
远程主机端口号:188
- 首先简单了解以下MQTT报文格式(详细可参考MQTT协议)
- MQTT报文格式 -- 固定报文(byte1:控制报文的类型控制报文类型的标志位;byte2:剩余长度) 可变报头 有效载荷(负载)
-
一、网络调试助手etAssist
-
COECT 报文 - 固定报头:
- 可变报头:
保活时间:64 => 0110 0100(2164=100秒)
- 负载:
- 1. 客户端标识符
- 客户端标识符 :*|securemode=,signmethod=hmacsha1|,其中*号需要替换成自己三元组中的 Deviceame ,按上图三元组中的信息进行替换
例:D001|securemode=,signmethod=hmacsha1|
- 长度共计 8 字节,实验的时候我们需要发 16 进制的数据。并且简化书写,去掉 0x,然后还要在最前面加上两个字节,表示客户端标识符的长度,最终结果如下:
- 00 26 44 0 0 1 7C 7 65 6 75 72 656D 6F 64 65 D 2C 7 69 67 6E 6D 65 74 68 6F 64 D 68 6D 61 6 7 68 61 17C
- 客户端标识符 :*|securemode=,signmethod=hmacsha1|,其中*号需要替换成自己三元组中的 Deviceame ,按上图三元组中的信息进行替换
- 2. 用户名
- 用户名 :*&#(注意不要把&符号丢了)其中*号需要替换成自己三元组中的 Deviceame ,其中#号需要替换成自己三元组中的 ProductKey
- 那么按上图三元组中的信息替换 ,用户名就是 :D001&a1efzDjvU4Y
- 长度共计 16 字节,转为16进制,并且最前面加入表示长度的两个字节,最终结果如下
- 00 10 44 0 0 1 26 61 1 65 66 7A 44 6A 76 55 459
- . 密码
- 密 码 需 要 进 行 一 次 hmacsha1 加 密, 用 三 元 组 中 的 DeviceSecret 做 为 秘 钥 对
- clientId*deviceame*productKey#加密其中*号需要替换成自己三元组中的 Deviceame ,其中#号需要替换成自己三元组中的 ProductKey
例:clientIdD001deviceameD001productKeya1efzDjvU4Y
- 然后 DeviceSecret 是 585fe87ac7bd7f518121b1ae4295bdd1 ,网上个在线加密网站/,进行一次 hmacsha1加密,如下图所示
- 先选择hmacsha1,输入加密字符和密钥,得到加密结果:
- eda544bcd94d4f4c7fd7096f26775ff6bcdc7e
- 得到长度为40字节的加密后结果,转为16进制,并且最前面加入表示长度的两个字节,最终结果如下
- 65 64 61 5 4 4 62 6 64 9 4 64 4 66 4 6 7 66 64 7 0 9 6 66 2 6 7 7 5 66 66 6 62 6 64 6 7 65
- 负载中的 个信息都构建好了,那么把 个信息按顺序,先是客户端 id,然后是用户名,最后是密码,组合在一起 16 进制如下(28216240=100字节)
- 00 26 44 0 0 1 7C 7 65 6 75 72 65 6D 6F 64 65 D 2C 7 69 67 6E 6D 65 74 68 6F 64 D 68 6D 61 6 7 68 61 1 7C 00 10 44 0 0 1 26 61 1 65 66 7A 44 6A 76 55 4 59 00 28 65 64 61 5 4 4 62 6 64 9 4 64 4 66 4 6 7 66 64 7 0 96 66 2 6 7 7 5 66 66 6 62 6 64 6 7 65
- 1. 客户端标识符
- 计算固定报头中的剩余长度:
- 剩余长度 = 可变报头长度 负载长度
- 可变报头是 10 个字节, 负载是 100 个字节,剩余长度= 10 100 = 110,110/128 = 0,不需要进位,剩余长度 1 个字节即可,如此固定报头结果如下:10 6E
- COECT 报文的最终结果:
- 10 6E 00 04 4D 51 54 5404 C2 00 64 00 26 44 0 0 1 7C 7 65 6 75 72 65 6D 6F 64 65 D 2C 7 69 67 6E 6D 65 7468 6F 64 D 68 6D 61 6 7 68 61 1 7C 00 10 44 0 0 1 26 61 1 65 66 7A 44 6A 76 55 4 59 00 28 65 64 61 5 4 4 62 6 64 9 4 64 4 66 4 6 7 66 64 7 0 96 66 2 6 7 7 5 66 66 6 62 6 64 6 7 65
- 发送最终COECT 报文,返回COACK报文(20 02 00 00)只包含固定报头和可变报头,没有负载
- 调试过程:
-
DISCOECT 报文(断开连接)E0 00 无返回值
-
PIG报文(用于保活连接)C0 00(回复D0 00)
- 订阅和发布的Topic在这查,这里报文就不展开讲了,可以参考MQTT协议
-
SUBSCRIBE 报文(订阅请求)
-
USUBSCRIBE 报文(取消订阅) USUBSCRIBE 报文的负载:
想取消订阅的 Topic字符串长度(2字节) 想取消订阅的 Topic 字符串
以前面订阅的Topic为例,想取消订阅的 Topic 字符串
-
PUBLISH 报文(发布消息) - 最终 PUBLISH 报文:
- 0 6E 00 2F 2F 7 79 7 2F 61 1 65 66 7A 44 6A 76 554 59 2F 44 0 0 1 2F 74 68 69 6E 67 2F 65 76 65 6E 74 2F 70 72 6F 70 65 7274 79 2F 70 6F 7 74 7B 22 70 61 72 61 6D 7 22 A 7B 22 4 75 72 72 65 6E 74 4875 6D 69 64 69 74 79 22 A 5 7 2E 2C 22 4 75 72 72 65 6E 74 54 65 6D 7065 72 61 74 75 72 65 22 A 2 1 2E 5 7D 7D
- 最终 PUBLISH 报文:
-
-
二、串口调试助手XCOM(这里需要结合USB-TTL和ESP8266-01S)
- ESP8266-01S的AT指令这里不细说了,简单步骤就是设置AP(连接热点)模式、连接WIFI热点、连接服务器、进入透传、发送数据等
- AT--测试是否OK
- ATCWMODE=1 -- 设置AP模式
- ATCWJAP=wifiname,wifipassword -- 连接WIFI热点
- ATCIPSTART=TCP,121.6.42.100,188 -- 连接华为云服务器
- ATCIPMODE=1 -- 准备透传
- ATCIPSED -- 开始透传
- 发送数据 -- 上面我们计算出的COECT 报文和 PUBLISH 报文
-
-
总结:
- 上面所有调试我均测试成功,服务器能够正常通信,可以参考MQTT协议编写更多的报文
- 调试方法如上,真实设备的报文可以通过代码写好,就不用再计算了,计算有风险,本人在计算中错过错,导致我又花了两个小时看文档,最后坚信自己的方法重新计算才发现问题。
- 重复一次手动计算有风险,又浪费时间,可以尝试一次不建议每次报文都手动计算。可以通过代码实现。
- 我的设备是通过ESP8266-01S模块通信STM2F10开发板(开发板不限,有串口就行),主控开发板进行报文计算发送和接收服务器的数据进行解析。
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2024-01-20 04:23:30
上一篇:网页制作——学成在线(P129
下一篇:XTENSA处理器介绍
推荐阅读
留言与评论(共有 17 条评论) |
本站网友 宿迁房屋出租 | 5分钟前 发表 |
wifipassword -- 连接WIFI热点ATCIPSTART=TCP | |
本站网友 机器人概念股龙头 | 24分钟前 发表 |
重复一次手动计算有风险,又浪费时间,可以尝试一次不建议每次报文都手动计算 | |
本站网友 打标机品牌网 | 30分钟前 发表 |
并且简化书写,去掉 0x,然后还要在最前面加上两个字节,表示客户端标识符的长度,最终结果如下:00 26 44 0 0 1 7C 7 65 6 75 72 656D 6F 64 65 D 2C 7 69 67 6E 6D 65 74 68 6F 64 D 68 6D 61 6 7 68 61 17C2. 用户名 用户名 :*&#(注意不要把&符号丢了)其中*号需要替换成自己三元组中的 Deviceame ,其中#号需要替换成自己三元组中的 ProductKey那么按上图三元组中的信息替换 ,用户名就是 :D001&a1efzDjvU4Y长度共计 16 字节,转为16进制,并且最前面加入表示长度的两个字节,最终结果如下00 10 44 0 0 1 26 61 1 65 66 7A 44 6A 76 55 459. 密码 密 码 需 要 进 行 一 次 hmacsha1 加 密, 用 三 元 组 中 的 DeviceSecret 做 为 秘 钥 对clientId*deviceame*productKey#加密其中*号需要替换成自己三元组中的 Deviceame ,其中#号需要替换成自己三元组中的 ProductKey 例:clientIdD001deviceameD001productKeya1efzDjvU4Y然后 DeviceSecret 是 585fe87ac7bd7f518121b1ae4295bdd1 ,网上个在线加密网站/,进行一次 hmacsha1加密,如下图所示 先选择hmacsha1,输入加密字符和密钥,得到加密结果:eda544bcd94d4f4c7fd7096f26775ff6bcdc7e得到长度为40字节的加密后结果 | |
本站网友 高伯 | 28分钟前 发表 |
本站网友 港珠澳大桥总工程师 | 9分钟前 发表 |
并且简化书写,去掉 0x,然后还要在最前面加上两个字节,表示客户端标识符的长度,最终结果如下:00 26 44 0 0 1 7C 7 65 6 75 72 656D 6F 64 65 D 2C 7 69 67 6E 6D 65 74 68 6F 64 D 68 6D 61 6 7 68 61 17C2. 用户名 用户名 :*&#(注意不要把&符号丢了)其中*号需要替换成自己三元组中的 Deviceame ,其中#号需要替换成自己三元组中的 ProductKey那么按上图三元组中的信息替换 ,用户名就是 :D001&a1efzDjvU4Y长度共计 16 字节,转为16进制,并且最前面加入表示长度的两个字节,最终结果如下00 10 44 0 0 1 26 61 1 65 66 7A 44 6A 76 55 459. 密码 密 码 需 要 进 行 一 次 hmacsha1 加 密, 用 三 元 组 中 的 DeviceSecret 做 为 秘 钥 对clientId*deviceame*productKey#加密其中*号需要替换成自己三元组中的 Deviceame ,其中#号需要替换成自己三元组中的 ProductKey 例:clientIdD001deviceameD001productKeya1efzDjvU4Y然后 DeviceSecret 是 585fe87ac7bd7f518121b1ae4295bdd1 ,网上个在线加密网站/,进行一次 hmacsha1加密,如下图所示 先选择hmacsha1,输入加密字符和密钥,得到加密结果:eda544bcd94d4f4c7fd7096f26775ff6bcdc7e得到长度为40字节的加密后结果 | |
本站网友 取环手术 | 26分钟前 发表 |
signmethod=hmacsha1|,其中*号需要替换成自己三元组中的 Deviceame ,按上图三元组中的信息进行替换 例:D001|securemode= | |
本站网友 利辛二手房 | 9分钟前 发表 |
121.6.42.100 | |
本站网友 其他私服 | 2分钟前 发表 |
进入透传 | |
本站网友 护士心得体会 | 18分钟前 发表 |
本站网友 四代重歼 | 16分钟前 发表 |
剩余长度) 可变报头 有效载荷(负载) 一 | |
本站网友 大世界基尼斯 | 15分钟前 发表 |
进入透传 | |
本站网友 3天快速瘦腿 | 6分钟前 发表 |
188 -- 连接华为云服务器ATCIPMODE=1 -- 准备透传ATCIPSED -- 开始透传发送数据 -- 上面我们计算出的COECT 报文和 PUBLISH 报文 总结: 上面所有调试我均测试成功,服务器能够正常通信,可以参考MQTT协议编写更多的报文调试方法如上,真实设备的报文可以通过代码写好,就不用再计算了,计算有风险,本人在计算中错过错,导致我又花了两个小时看文档,最后坚信自己的方法重新计算才发现问题 | |
本站网友 蔡甸二手房出售 | 14分钟前 发表 |
188 -- 连接华为云服务器ATCIPMODE=1 -- 准备透传ATCIPSED -- 开始透传发送数据 -- 上面我们计算出的COECT 报文和 PUBLISH 报文 总结: 上面所有调试我均测试成功,服务器能够正常通信,可以参考MQTT协议编写更多的报文调试方法如上,真实设备的报文可以通过代码写好,就不用再计算了,计算有风险,本人在计算中错过错,导致我又花了两个小时看文档,最后坚信自己的方法重新计算才发现问题 | |
本站网友 藕粉的功效与作用 | 7分钟前 发表 |
进入透传 | |
本站网友 百合花的功效与作用 | 22分钟前 发表 |
连接服务器 | |
本站网友 军团菌病 | 26分钟前 发表 |
121.6.42.100 |