ESP32连接MQTT Broker
一、MQTT Broker
在开始ESP32编程之前,我们要先来看看公共主流的MQTT服务器可供使用,所谓的公共MQTT服务器就是一些网站给我们提供了在线的MQTT Broker,我可以直接利用其进行 MQTT 学习、测试甚至是小规模使用,而无需再自行部署,方便快捷,节省时间与精力成本,这对于我们用ESP32来做一些MQTT调试再适合不过了,由于这些MQTT服务器很多都是外国的,它们的可访问性、延时等都有着一些问题。这里我推荐一个目前为止我一直在用的。
mqtt://broker-cn.emqx.io
为了方便测试,我们可以在电脑上下载一个MQTTX客户端软件,后续的话可以看到与ESP32是如何进行数据交互的,下载地址在https://mqttx.app/zh。下载安装过程就不介绍了,打开软件之后设置如下,其余按照默认值即可

修改完后点击右上角Connect,连接成功后,新建一个订阅,订阅主题是/test/topic1,消息等级QoS=1,点击Confirm。这样我们在电脑上的客户端就部署完毕了。

二、ESP32上的MQTT程序
完整代码在esp32-board/mqtt中。
mqtt连接之前,需要WiFi连接成功,因此需要WIFI——STA章节的代码,我在WIFI——STA章节代码上做了一些改善,增加了一个回调函数通知主函数WiFi已连接。
/** 事件回调函数
/** 事件回调函数
* @param arg 用户传递的参数
* @param event_base 事件类别
* @param event_id 事件ID
* @param event_data 事件携带的数据
* @return 无
*/
static void event_handler(void* arg, esp_event_base_t event_base,int32_t event_id, void* event_data)
{
if(event_base == WIFI_EVENT)
{
switch (event_id)
{
case WIFI_EVENT_STA_START: //WIFI以STA模式启动后触发此事件
esp_wifi_connect(); //启动WIFI连接
break;
case WIFI_EVENT_STA_CONNECTED: //WIFI连上路由器后,触发此事件
ESP_LOGI(TAG, "connected to AP");
break;
case WIFI_EVENT_STA_DISCONNECTED: //WIFI从路由器断开连接后触发此事件
esp_wifi_connect();

最低0.47元/天 解锁文章
2000





