3

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

 4 months ago
source link: https://blog.51cto.com/u_13800193/9098479
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
  • 1.给LED和KEY的所用IO增加配置项
  • 1.1 增加配置文件
  • 1.2 修改相应的c源码
  • 2. 把mqtt\tcp的工程整合到一起
  • 2.1 在何处调用 mqtt_app_start()
  • 3. 测试MQTT
  • 4. 完整的工程源码

有一段时间没有玩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》 文件:

ESP32:整合存储配网信息和MQTT笔记_服务器

该文件从文件夹《esp-idf\examples\protocols\mqtt\tcp\main》拷贝过来,增加:

ESP32:整合存储配网信息和MQTT笔记_服务器_02

执行工程全部清理命令:

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

再次配置工程:

ESP32:整合存储配网信息和MQTT笔记_服务器_04

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

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

修改同目录下的《CMakeLists.txt》,增加 smartconfig_mqtt.c:

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

把smartconfig_mqtt.c中的主函数全部删除:

void app_main(void)
{

}

2.1 在何处调用 mqtt_app_start()

 smartconfig_main.c的主函数 app_main() 结尾处调用 mqtt_app_start() :

ESP32:整合存储配网信息和MQTT笔记_服务器_07

这样会在wifi还没有连接时就启动MQTT,影响wifi的联网速度。应该在wifi连接成功后,才调用 mqtt_app_start() 。

ESP32:整合存储配网信息和MQTT笔记_服务器_08

3. 测试MQTT

参考《WINDOWS10环境下利用开源软件EMQX搭建MQTT服务器》搭建本地MQTT服务器。查得服务器IP地址为 192.168.110.55,于是修改源码:

ESP32:整合存储配网信息和MQTT笔记_服务器_09

订阅两个主题 /A/EMQ/set 和 /B/publish/1:

ESP32:整合存储配网信息和MQTT笔记_服务器_10

A代表EMQX的网页客户端,B代表mqtt.fx客户端。

ESP32:整合存储配网信息和MQTT笔记_#define_11
ESP32:整合存储配网信息和MQTT笔记_#define_12

两个客户端发布的数据都可以被ESP32接收到:

ESP32:整合存储配网信息和MQTT笔记_服务器_13

4. 完整的工程源码

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK