WiFiManager 开源项目教程
1. 项目介绍
WiFiManager 是一个适用于Espressif ESP8266和ESP32微控制器的库,它提供了一种便捷的方式来动态配置Wi-Fi连接参数,包括在没有网络连接时通过本地Web配置门户设置Wi-Fi凭证和自定义参数。该项目由tzapu开发并由tablatronix维护。这个库的目标是简化物联网(IoT)设备的初始配置,使其能够自动连接到可用的Wi-Fi网络或创建一个临时的接入点(AP)以接收新配置。
2. 项目快速启动
安装库
在Arduino IDE中,前往“Sketch”-> “Include Library”-> “Manage Libraries”,搜索“WiFiManager”,然后安装最新版本。
示例代码
以下是一个基本的示例,展示如何使用WiFiManager自动连接到Wi-Fi或启动配置门户:
#include <WiFiManager.h>
void setup() {
WiFiManager wifiManager;
// 自动连接到之前保存的Wi-Fi
wifiManager.autoConnect();
// 或者指定自定义的AP名称和密码
// wifiManager.autoConnect("MyCustomAP", "myPassword");
}
void loop() {
// 应用逻辑在此处
}
这段代码将在找不到已保存的Wi-Fi配置时,自动创建一个临时接入点,让用户通过浏览器进行配置。
3. 应用案例和最佳实践
添加自定义参数
你可以添加自定义HTML元素到配置表单,例如:
WiFiManagerParameter custom_text("info", "info", "<h3>Setup Info</h3>", 50);
wifiManager.addParameter(&custom_text);
WiFiManagerParameter custom_mqtt_server("server", "MQTT Server", "iot.eclipse.org", 40, "readonly");
wifiManager.addParameter(&custom_mqtt_server);
主题定制
通过内置类可以定制配置页面的主题,例如:
wifiManager.setClass("invert"); // 使用深色主题
网络过滤
可以根据信号强度过滤网络:
// 显示信号强度大于-70dBm的网络
wifiManager.setMinimumSignalLevel(-70);
非阻塞模式
对于长时间运行的任务,可以在全局变量中初始化WiFiManager
对象,并处理非阻塞模式:
WiFiManager wifiManager;
void setup() {
// ...
}
void loop() {
if (!wifiManager.connected()) {
wifiManager.connect();
}
// 其他循环任务
}
4. 典型生态项目
- IoT云API: 这个库通常与其他IoT云服务(如AWS IoT, Google Cloud IoT, Alibaba Cloud IoT等)结合使用,以便在Wi-Fi连接建立后与云端通信。
- 智能家居应用: 在智能家居系统中,例如智能灯泡、温度传感器等设备,利用WiFiManager实现设备首次上线配置。
- 远程控制设备: 在无人机、机器人和其他需要远程操作的设备中,使用WiFiManager确保设备在没有预设网络的情况下仍可配置并连接。
以上就是关于WiFiManager的基本介绍及应用实例。通过集成此库,你的项目可以拥有更友好的用户配置体验,从而提高产品的易用性和可靠性。