【ESP32】打造全网最强esp-idf基础教程——18.ESP32连接MQTT Broker

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();     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值