[开源重卷]ESP32配网(smartConfig)后手机MQTT控制ESP32指示灯,esp-idf v4.3.1

文摘   科技   2022-10-09 08:12   江苏  

点击上方“嘉友创信息科技”,选择关注,干货福利,第一时间奉上。

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端口

四、启动mqtt服务器

mosquitto.exe -c mosquitto.conf

02
MQTT测试

【手机和电脑互测

PC端使用通信猫测试

手机端使用MQTT调试器app

03
软件流程

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

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\r\n", event->topic_len, event->topic);  printf("DATA=%.*s\r\n", 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;

工程目录结构

05
验证

首次使用,等待smartConfig配网;

连上MQTT;

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

ESP32收到MQTT消息。


06
源码下载

公众号后台回复关键词【ESP32】,发送后收到链接即可下载
举例:关键词【步进电机】

谢谢关注,下期更精彩。

收藏、点赞、在看一键三连

-- END --

开源一小步
定期发布开源项目,欢迎关注!!
 最新文章