/**
* ESP8266 自动配网
*/
// https://github.com/tzapu/WiFiManager/
#include <WiFiManager.h>
// mqtt 参数
char mqtt_server[40] ="192.168.0.200";
char mqtt_port[6] = "1883";
/*============================================== web 配网 下===========================================================*/
/**
* 初始化wifimanager
*/
void initWifi()
{
WiFiManager wifiManager; // 创建 wifimanager 对象
wifiManager.resetSettings(); // 重置保存的修改
wifiManager.setConnectTimeout(10); // 配置连接超时
wifiManager.setDebugOutput(true); // 打印调试内容
wifiManager.setMinimumSignalQuality(30); // 设置最小信号强度
//设置AP
IPAddress _ip = IPAddress(192, 168, 4, 1); // 设置固定AP信息
IPAddress _gw = IPAddress(192, 168, 4, 1); // 设置固定AP信息
IPAddress _sn = IPAddress(255, 255, 255, 0); // 设置固定AP信息
wifiManager.setAPStaticIPConfig(_ip, _gw, _sn); // 设置固定AP信息
// 回调
wifiManager.setAPCallback(configModeCallback); // 设置进入AP模式的回调
wifiManager.setSaveConfigCallback(saveConfigCallback); // 设置点击保存的回调
wifiManager.setBreakAfterConfig(true); // 设置 如果配置错误的ssid或者密码 退出配置模式
// 自定义参数
WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 6);
wifiManager.addParameter(&custom_mqtt_server);
wifiManager.addParameter(&custom_mqtt_port);
// 尝试连接网络,失败去到配置页面
if (!wifiManager.autoConnect("ESP8266_AP", ""))
{
Serial.println("failed to connect and hit timeout");
ESP.reset(); // 重置并重试
delay(1000);
}
// WiFi连接成功后将通过串口监视器输出连接成功信息
Serial.println("== WIFI CONNECT SUCCESS ! ==");
Serial.print("IP Address : ");
Serial.println(WiFi.localIP());
// 读取配置页面配置好的信息
strcpy(mqtt_server, custom_mqtt_server.getValue());
strcpy(mqtt_port, custom_mqtt_port.getValue());
}
// 配置进入AP模式通知回调
void configModeCallback(WiFiManager *myWiFiManager)
{
Serial.println("Entered config mode"); //进入配置模式
Serial.print("Wifi Name : ");
Serial.println("Wifi Name : " + myWiFiManager->getConfigPortalSSID());
Serial.print("Wifi IP : ");
Serial.println(WiFi.softAPIP());
// 附加参数
Serial.print("MQTT Server : ");
Serial.println(mqtt_server);
Serial.print("MQTT Port : ");
Serial.println(mqtt_port);
}
// 设置点击保存的回调
void saveConfigCallback()
{
Serial.println("Should save config");
}
//----------------------------------------------- 程序入口 ---------------------------------------------------
void setup()
{
Serial.begin(9600); // 初始化串口设置
pinMode(LED_BUILTIN, OUTPUT); // 设置 LED_BUILTIN(GPIO-16) 为输出功能
digitalWrite(LED_BUILTIN, HIGH); // 默认关闭
// 自动配网
initWifi();
}
void loop()
{
}