1. /**
    2. * ESP8266 自动配网
    3. */
    4. // https://github.com/tzapu/WiFiManager/
    5. #include <WiFiManager.h>
    6. // mqtt 参数
    7. char mqtt_server[40] ="192.168.0.200";
    8. char mqtt_port[6] = "1883";
    9. /*============================================== web 配网 下===========================================================*/
    10. /**
    11. * 初始化wifimanager
    12. */
    13. void initWifi()
    14. {
    15. WiFiManager wifiManager; // 创建 wifimanager 对象
    16. wifiManager.resetSettings(); // 重置保存的修改
    17. wifiManager.setConnectTimeout(10); // 配置连接超时
    18. wifiManager.setDebugOutput(true); // 打印调试内容
    19. wifiManager.setMinimumSignalQuality(30); // 设置最小信号强度
    20. //设置AP
    21. IPAddress _ip = IPAddress(192, 168, 4, 1); // 设置固定AP信息
    22. IPAddress _gw = IPAddress(192, 168, 4, 1); // 设置固定AP信息
    23. IPAddress _sn = IPAddress(255, 255, 255, 0); // 设置固定AP信息
    24. wifiManager.setAPStaticIPConfig(_ip, _gw, _sn); // 设置固定AP信息
    25. // 回调
    26. wifiManager.setAPCallback(configModeCallback); // 设置进入AP模式的回调
    27. wifiManager.setSaveConfigCallback(saveConfigCallback); // 设置点击保存的回调
    28. wifiManager.setBreakAfterConfig(true); // 设置 如果配置错误的ssid或者密码 退出配置模式
    29. // 自定义参数
    30. WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
    31. WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 6);
    32. wifiManager.addParameter(&custom_mqtt_server);
    33. wifiManager.addParameter(&custom_mqtt_port);
    34. // 尝试连接网络,失败去到配置页面
    35. if (!wifiManager.autoConnect("ESP8266_AP", ""))
    36. {
    37. Serial.println("failed to connect and hit timeout");
    38. ESP.reset(); // 重置并重试
    39. delay(1000);
    40. }
    41. // WiFi连接成功后将通过串口监视器输出连接成功信息
    42. Serial.println("== WIFI CONNECT SUCCESS ! ==");
    43. Serial.print("IP Address : ");
    44. Serial.println(WiFi.localIP());
    45. // 读取配置页面配置好的信息
    46. strcpy(mqtt_server, custom_mqtt_server.getValue());
    47. strcpy(mqtt_port, custom_mqtt_port.getValue());
    48. }
    49. // 配置进入AP模式通知回调
    50. void configModeCallback(WiFiManager *myWiFiManager)
    51. {
    52. Serial.println("Entered config mode"); //进入配置模式
    53. Serial.print("Wifi Name : ");
    54. Serial.println("Wifi Name : " + myWiFiManager->getConfigPortalSSID());
    55. Serial.print("Wifi IP : ");
    56. Serial.println(WiFi.softAPIP());
    57. // 附加参数
    58. Serial.print("MQTT Server : ");
    59. Serial.println(mqtt_server);
    60. Serial.print("MQTT Port : ");
    61. Serial.println(mqtt_port);
    62. }
    63. // 设置点击保存的回调
    64. void saveConfigCallback()
    65. {
    66. Serial.println("Should save config");
    67. }
    68. //----------------------------------------------- 程序入口 ---------------------------------------------------
    69. void setup()
    70. {
    71. Serial.begin(9600); // 初始化串口设置
    72. pinMode(LED_BUILTIN, OUTPUT); // 设置 LED_BUILTIN(GPIO-16) 为输出功能
    73. digitalWrite(LED_BUILTIN, HIGH); // 默认关闭
    74. // 自动配网
    75. initWifi();
    76. }
    77. void loop()
    78. {
    79. }