电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
教你动手写网络协议栈-MQTT报文解析6-实战
分 享
扫描二维码分享
教你动手写网络协议栈-MQTT报文解析6-实战
MQTT
TCP
UDP
Rice嵌入式开发
关注
发布时间: 2021-05-13
丨
阅读: 412
## 概述 - 本来MQTT的协议解析系列,只写两篇-实践+解析。 - 不过,有个网友(Terry Hao)看了我的文章之后打电话给我,说最近刚好要使用MQTT到项目中,但是刚接触不是很熟悉,然后提供一个实际应用出来。 - 在上述的诉求,所以我决定写MQTT的第三篇文章--MQTT的实战。 - 本次实战,我分别进行两种实战: 1. MQTT.fx客户端 + 腾讯云 2. 利用小熊派 + RT-Thread + ESP8266 + 腾讯云 ## 腾讯云配置 1. 登录腾讯云:https://console.cloud.tencent.com/iothub/product,如果你没有注册,先注册。 2. 创建一个新产品,: - 选择创建产品: ![](https://RiceChen0.gitee.io/picture/net_mqtt/19.png) - 输入产品名称,选择密钥认证: ![](https://RiceChen0.gitee.io/picture/net_mqtt/20.png) 3. 添加新设备: - 进入刚刚创建的产品中: ![](https://RiceChen0.gitee.io/picture/net_mqtt/21.png) - 在设备列表中添加新设备: ![](https://RiceChen0.gitee.io/picture/net_mqtt/22.png) - 输入对应的设备名称即可: ![](https://RiceChen0.gitee.io/picture/net_mqtt/23.png) - 点击开始管理设备: ![](https://RiceChen0.gitee.io/picture/net_mqtt/24.png) - 设备创建成功: ![](https://RiceChen0.gitee.io/picture/net_mqtt/25.png) - 完成大部分的设置;点击进入刚刚创建的设备: ![](https://RiceChen0.gitee.io/picture/net_mqtt/26.png) - 我们使用默认的权限列表来进行实验,默认有3个Topic: ![](https://RiceChen0.gitee.io/picture/net_mqtt/27.png) ## MQTT.fx客户端 + 腾讯云实战 1. 打开MQTT.fx客户端,进入设置: ![](https://RiceChen0.gitee.io/picture/net_mqtt/29.png) 2. 创建一个profile: - 填写Connection Profile相关信息和General信息: ![](https://RiceChen0.gitee.io/picture/net_mqtt/31.png) - 参数说明: | 参数 | 说明 | |------|------| | Profile Name | 配置文件保存为的名称。 | | Broker Address | MQTT 服务器连接地址,广州域设备填入:PRODUCT_ID.iotcloud.tencentdevices.com,这里 PRODUCT_ID 为变量参数,用户需填入创建产品时自动生成的产品 ID,例如 9****ZW2EZ.iotcloud.tencentdevices.com | | Broker Port | MQTT 服务器连接端口,证书认证型端口:8883;密钥认证型:1883 | | Client ID | MQTT 协议字段,按照物联网通信约束填入:产品 ID + 设备名,例如:"9****ZW2EZgate_dev01 ",9****ZW2EZ 是产品 ID,gate_dev01 是设备名。 | | Connection Timeout | 连接超时时间秒。 | | Keep Alive Interval | 心跳间隔时间秒。 | | Auto Reconnect | 断网自动重连。 | - 填写User Credentials信息: ![](https://RiceChen0.gitee.io/picture/net_mqtt/32.png) - 参数说明 - User Name :MQTT 协议字段,按照物联网通信约束填入:产品 ID + 设备名 + SDKAppID + connid。(创建完产品即可在产品列表页和产品详情页查看 ProductID)如:"9****ZW2EZgate_dev01;12010126;12345",仅替换示例中的产品 ID + 设备名即可,后面的两个参数本身由物联网通信接入 SDK 自动生成,所以这里填写固定测试值。 - Password :Password 必须填写。用户可进入 Hub 相应设备列表查看获取。 - 关于这部分的填写,可以参考腾讯云的文档:https://cloud.tencent.com/document/product/634/14630?from=information.detail.腾讯云可以用mqtt 3. 而上面的信息全部都可以从云端获取: - PRODUCT_ID获取: ![](https://RiceChen0.gitee.io/picture/net_mqtt/28.png) - 设备密钥,Client id,mqtt username,mqtt password的获取: ![](https://RiceChen0.gitee.io/picture/net_mqtt/30.png) 4. 填写完上面的信息,便可以连接上服务器: ![](https://RiceChen0.gitee.io/picture/net_mqtt/33.png) 5. MQTT.fx客户端订阅主题:PRODUCT_ID/mqtt_rice/control,然后服务器往主题:PRODUCT_ID/mqtt_rice/control,发布消息。可以在客户端看到服务器发布的消息: ![](https://RiceChen0.gitee.io/picture/net_mqtt/34.png) ## 小熊派 + RT-Thread + ESP8266 + 腾讯云实战 1. 通过RT-Thread连接腾讯云,其实还是很方便的,有现成的软件包。本次实验主要用到两个软件包:at_device 和 tencent_iot_sdk: ![](https://RiceChen0.gitee.io/picture/net_mqtt/35.png) 2. 配置at_device组件,配置AP的ssid和password,已经对应的串口: ![](https://RiceChen0.gitee.io/picture/net_mqtt/36.png) 3. 配置tencent_iot_sdk组件,主要配置三元组:产品ID,设备名字,设备密钥: ![](https://RiceChen0.gitee.io/picture/net_mqtt/37.png) 4. 配置完上述内容,编译烧录就可以。烧录完板子会自动连接网络,然后再串口终端输入:"tc_data_template_example start"。便可以连接上腾讯云: ![](https://RiceChen0.gitee.io/picture/net_mqtt/38.png) 5. 很方便的就可以连上腾讯云: ![](https://RiceChen0.gitee.io/picture/net_mqtt/39.png) ## 教你动手写网络协议栈系列文章 ### 网络协议栈分析及应用 | 序号 | 内容 | |----|------------------------------------------------------------| | 1 | [《教你动手写UDP协议栈-UDP协议栈格式》](https://mp.weixin.qq.com/s/SwiW0hgusYExgo7KdbOyhQ) | | 2 | [《教你动手写UDP协议栈-DHCP报文解析》](https://mp.weixin.qq.com/s/2NlKoSxqQ2EDoinVyx3Flg) | | 3 | [《教你动手写UDP协议栈-OTA上位机》](https://mp.weixin.qq.com/s/My6AKh_BRfgtM6VgL3jTBQ) | | 4 | [《教你动手写UDP协议栈-DNS报文解析》](https://mp.weixin.qq.com/s/udRLQ_y-Paoq3gLMIGmnLQ) | | 5 | [《802.11帧格式、类型及应用》](https://mp.weixin.qq.com/s/20aBLc-LbNJs6-jt3n3T9A) | | 5 | [《教你动手写UDP协议栈-CoAP报文解析 》](https://mp.weixin.qq.com/s/J2_q6Ky_HsNYMuogC15dhg) | | 6 | [《教你动手写网络协议栈-MQTT报文解析-实践 》](https://mp.weixin.qq.com/s/bcevs9Cssrf48EYMz-g1iw) | | 7 | [《教你动手写网络协议栈-MQTT报文解析-解析 》](https://mp.weixin.qq.com/s/kPtkJB9QTow4gmTG0O66ig)| ### 网络协议的分析手段 | 序号 | 内容 | |------|------| | 1 | [《嵌入式设备端的网络包在wireshark显示--原理》](https://mp.weixin.qq.com/s/SNdxXOk4Vf1iwVetxfxhwg) | | 2 | [《嵌入式设备端的网络包在wireshark显示--应用》](https://mp.weixin.qq.com/s/2CZzBPOwWegATloJEw0-pQ) |
关注微信公众号『Rice嵌入式开发技术分享』,后台回复“微信”添加作者微信,备注”入群“,便可邀请进入技术交流群。 ![](https://RiceChen0.gitee.io/picture/logo/logo_.jpg)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
Rice嵌入式开发
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交