ESP32:整合存储配网信息和MQTT笔记


有一段时间没有玩ESP32,很多知识点都忘记了。今天测试一下MQTT,做个笔记。
这个是在《 ESP32存储配网信息+LED显示配网状态+按键清除配网信息》的工程下面增加:

  1. LED和KEY的所用IO增加配置项;
  2. 把IDF自带《examples》下面的《protocols\mqtt\tcp》整合进工程。

参考文章:
1.作者:荆棘谷555,《基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南》。
2.本人的《WINDOWS10环境下利用开源软件EMQX搭建MQTT服务器》。

1.给LED和KEY的所用IO增加配置项

1.1 增加配置文件

《smart_config\main》 文件夹下面增加 Kconfig.projbuild 文件:
在这里插入图片描述
该文件从文件夹《esp-idf\examples\protocols\mqtt\tcp\main》拷贝过来,增加:
在这里插入图片描述
执行工程全部清理命令:
在这里插入图片描述
再次配置工程:
在这里插入图片描述

1.2 修改相应的c源码

对用到LED和KEY的源码做相应的改动。
main\smartconfig_button.c》:

#ifdef  CONFIG_GPIO_KEY_IO
    #define GPIO_KEY_IO   CONFIG_GPIO_KEY_IO
#else
    #define GPIO_KEY_IO       0
#endif

main\smartconfig_led.c》:

#ifdef   CONFIG_WIFI_STATUS_LED_IO
    #define WIFI_STATUS_LED_GPIO  CONFIG_WIFI_STATUS_LED_IO
#else    
    #define WIFI_STATUS_LED_GPIO  2
#endif

编译,烧录,运行,一切正常。

2. 把mqtt\tcp的工程整合到一起

把文件夹《esp-idf\examples\protocols\mqtt\tcp\main》下面的 app_main.c拷贝到本工程,并改名为smartconfig_mqtt.c
在这里插入图片描述
修改同目录下的《CMakeLists.txt》,增加 smartconfig_mqtt.c
在这里插入图片描述
smartconfig_mqtt.c中的主函数全部删除:

void app_main(void)
{

}

2.1 在何处调用 mqtt_app_start()

smartconfig_main.c的主函数 app_main() 结尾处调用 mqtt_app_start()
在这里插入图片描述
这样会在wifi还没有连接时就启动MQTT,影响wifi的联网速度。应该在wifi连接成功后,才调用 mqtt_app_start()
在这里插入图片描述

3. 测试MQTT

参考《WINDOWS10环境下利用开源软件EMQX搭建MQTT服务器》搭建本地MQTT服务器。查得服务器IP地址为 192.168.110.55,于是修改源码:
在这里插入图片描述
订阅两个主题 /A/EMQ/set/B/publish/1
在这里插入图片描述

A代表EMQX的网页客户端,B代表mqtt.fx客户端。
在这里插入图片描述

在这里插入图片描述
两个客户端发布的数据都可以被ESP32接收到:
在这里插入图片描述

4. 完整的工程源码

本着互相学习,互相分享,共同进步的精神,能提供源码尽量提供源码。下面是码云的连接:
smart_config_mqtt》.

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 11:38:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 11:38:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 11:38:03       82 阅读
  4. Python语言-面向对象

    2023-12-30 11:38:03       91 阅读

热门阅读

  1. Spring Cloud Gateway之Predicate断言详解

    2023-12-30 11:38:03       45 阅读
  2. samtools

    2023-12-30 11:38:03       50 阅读
  3. sql中date查询优化

    2023-12-30 11:38:03       58 阅读
  4. 在Django5中使用Websocket进行通信

    2023-12-30 11:38:03       63 阅读
  5. GET和POST请求

    2023-12-30 11:38:03       64 阅读
  6. 机器学习(三) -- 特征工程(更新中)

    2023-12-30 11:38:03       57 阅读
  7. mysql二进制对应ef中实体表字段类型

    2023-12-30 11:38:03       64 阅读
  8. centos 防火墙 设置 LTS

    2023-12-30 11:38:03       67 阅读
  9. Redis 笔记

    2023-12-30 11:38:03       61 阅读