ESP32:整合存储配网信息和MQTT笔记
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显示配网状态+按键清除配网信息》的工程下面增加:
- LED和KEY的所用IO增加配置项;
- 把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
#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》.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK