文章目录
文章内容
基于MQTT->tcp结合wifi->smart_config示例工程,读懂程序,最终实现MQTT与阿里iot平台通信。
上篇:基于MQTT->tcp修改,配合MQTTX及已有后台接口,实现MQTT通信;
硬件
● 一款 ESP32 开发板(本专辑中均使用ESP32-LyraT-Mini V1.2开发板)
● USB 数据线 (A 转 Micro-B)
● 电脑(Windows)
MQTT基础信息介绍
测试准备
当前程序角色为客户端,客户端连接服务器并实现MQTT通信,需要的测试参数有:服务器地址(url+端口号)、用户名、密码。另多个设备连接服务器时需要保证clientID的唯一性。
用已有MQTT服务器配合测试。
MQTTX下载链接:https://mqttx.app/zh?spm=a2c6h.13046898.publish-article.27.67bb6ffadVozp2
用MQTTX连接测试服务器通信链路是否正常。打开MQTTX,点击“+”->“New Connection”,新建一个MQTT客户端,如下图所示填写相关信息后,点击“Connect”
若与MQTT服务器连接成功,则会跳出弹窗“Connected”,点击右上角关闭按钮可断开连接。
说明:用户名和密码对于MQTT并不是必须,若MQTT服务器开启了认证需要用户名和密码则必须填写;
基于 MQTT->tcp示例创建工程
1.创建并打开工程
ctrl+alt+P,输入ESP-IDF show,选择“ESP-IDF: Show Examples Projects” ,找到MQTT->“tcp”,选择“Create Project using example tcp”,在跳出的保存框中,选择某一文件夹,新建Project文件夹,保存。用于存放新建的tcp工程。
注意:文件夹名称和路径中最好不要有中文且路径尽量短;
2.程序解读及配置
app_main()主要功能就是初始化nvsflash、初始化底层TCP/IP堆栈、创建默认事件循环、阻塞连接wifi、进行MQTT相关操作。
wifi配置
点击左下角配置按钮,在弹出的配置页面中找到“Example Configure”
填写wifi SSID和Password,编译运行后example_connect函数会自动实现wifi连接。
MQTT连接参数配置
mqtt_app_start中进行mqtt客户端连接参数的配置,并进行客户端初始化、注册事件处理程序、启动MQTT等操作。
按照实际连接参数修改mqtt_cfg变量。关于mqtt_cfg配置可自行了解esp_mqtt_client_config_t结构体,内容和注释都比较清晰,不做单独说明,后续用到时会提一嘴。
MQTT发布、订阅
mqtt_event_handler为MQTT事件处理函数,在连接成功事件中进行主题发布和主题订阅。
MQTTX中增加两个订阅,用于观察该tcp示例程序运行状态。MQTTX之前新建的名为“ESP32_MQTT_Test”的连接如果长时间不用可能会退出,此时需要点击下“Connect”按钮,连接成功后点击“New Subscription”
按照MQTT_EVENT_CONNECTED事件处理程序中的发布内容填写Topic,Qos,点击“Confirm”保存
3. 编译并运行tcp示例程序
MQTTx收到了来自MQTT服务器转发的tcp示例程序发布的消息。MQTTx端发布主题为“/topic/qos0”的消息则tcp示例程序同样会触发MQTT_EVENT_DATA事件,如下图所示。
至此,使用自有MQTT服务器配合MQTTX对tcp示例的MQTT功能测试成功。
《ESP32从0到1》之MQTT与阿里iot通信(中)预告:整合MQTT->tcp和wifi->smart_config示例,实现app快速配网,wifi连接成功后,定时发布MQTT主题,实现数据定时上报功能(依旧结合MQTTX实现测试)
🌹欢迎关注、订阅、收藏🌹
文章中有不清晰或者有疑问、错误的地方,请务必留言提醒、讨论。非常感谢!!!
欢迎关注并留言
文章同步发表于公众号"IT搬砖客",欢迎关注并留言