使用Mosquitto搭建MQTT服务器的详细过程

描述

00 重卷的意义

smartConfig配网后,进入用户任务,实用组合。

用户任务启动MQTT

MQTT服务器47.97.73.81:1883

实现电脑手机控制ESP32

01 MQTT服务器搭建

【使用的是Mosquitto搭建MQTT服务器】,具体详细过程请自行百度,此处简单介绍下

一、配置端口:找到mosquitto.conf文件,搜索listener

 

listener 1883

 

二、设置账号密码:找到mosquitto.conf文件,搜索password_file

 

password_file pwfile.example

 

设置账号密码,保存于pwfile.example文件内

 

//命令          是否覆盖   保存文件     用户名
mosquitto_passwd -c  pwfile.example username

 

三、打开服务器1883端口

mosquitto

四、启动mqtt服务器

 

mosquitto.exe -c mosquitto.conf

 

mosquitto

02 MQTT测试

【手机和电脑互测

PC端使用通信猫测试

mosquitto

手机端使用MQTT调试器app

mosquitto

03 软件流程

【先smartConfig配网,然后连MQTT服务器,订阅和发布

mosquitto

04 关键代码

MQTT初始化:域名、端口、账号、密码

 

static void mqtt_app_start(void)
{
    esp_mqtt_client_config_t mqtt_cfg = {
        .host = "www.jiauc.com",
        .port = 1883,
        .username = "admin",
        .password = "123456",
    };
    esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);
    esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, client);
    esp_mqtt_client_start(client);
}

 

MQTT事件回调函数:连上、断开、订阅、发布、取消、收到数据等

 

static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event)
{
    esp_mqtt_client_handle_t client = event->client;
    int msg_id;
    switch (event->event_id) {
        case MQTT_EVENT_CONNECTED:
        //连上mqtt事件
            break;
        case MQTT_EVENT_DISCONNECTED:
        //断开mqtt事件
            break;
        case MQTT_EVENT_SUBSCRIBED:
        //已订阅事件
            break;
        case MQTT_EVENT_UNSUBSCRIBED:
        //取消订阅事件
            break;
        case MQTT_EVENT_PUBLISHED:
        //已发布事件
            break;
        case MQTT_EVENT_DATA:
        //接收到订阅主题的消息事件
            break;
        case MQTT_EVENT_ERROR:
        //错误
            break;
        default:
            break;
    }
    return ESP_OK;
}

 

MQTT发布主题"/topic/qos0"消息"data"

 

msg_id = esp_mqtt_client_publish(client, "/topic/qos0", "data", 0, 0, 0);

 

MQTT订阅主题"/topic/qos0"

 

msg_id = esp_mqtt_client_subscribe(client, "/topic/qos0", 0);

 

电脑控制ESP32点灯

 

case MQTT_EVENT_DATA://接收到已定阅主题数据
  ESP_LOGI(TAG, "MQTT_EVENT_DATA");
  printf("TOPIC=%.*s
", event->topic_len, event->topic);
  printf("DATA=%.*s
", event->data_len, event->data);
  //控制LED
  if(memcmp(event->data,"On",event->data_len)==0)
  {
      led_on();
  }else if(memcmp(event->data,"Off",event->data_len)==0)
  {
      led_off();
  }
break;

 

工程目录结构

mosquitto

05 验证

首次使用,等待smartConfig配网;

mosquitto

连上MQTT;

mosquitto

电脑/手机控制开关灯(发布主题消息);

mosquitto

mosquitto

ESP32收到MQTT消息。

mosquitto

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分