第一步:这个库是跟ESP8266 Arduino核心库一起使用,所以用户需要配置好Arduino For ESP8266平台
第二步:可以通过Arduino IDE库管理器安装WiFiManager,搜索“WiFiManager”,然后点击下载
2、官方实例操作使用WifiManager三部曲:
- 引入头文件
#include
- 配置具体参数
- 启动WifiManager服务
例子源码:
#include//https://github.com/esp8266/Arduino //needed for library #include #include #include //https://github.com/tzapu/WiFiManager #include //https://github.com/bblanchon/ArduinoJson //for LED status #include void initSystem(); void initWifiManager(); void configModeCallback(WiFiManager *myWiFiManager); void saveConfigCallback(); void tick(); //flag for saving data bool shouldSaveConfig = false; //for LED status Ticker ticker; //define your default values here, if there are different values in config.json, they are overwritten. char mqtt_server[40]; char mqtt_port[6] = "8080"; char api_key[34] = "Your ApiKey"; void setup() { // put your setup code here, to run once: initSystem(); initWifiManager(); //if you get here you have connected to the WiFi Serial.println("connected...so easy :)"); ticker.detach(); //keep LED on digitalWrite(BUILTIN_LED, LOW); } void loop() { // put your main code here, to run repeatedly: } void initSystem(){ Serial.begin(115200); Serial.println(); //set led pin as output pinMode(BUILTIN_LED, OUTPUT); // start ticker with 0.5 because we start in AP mode and try to connect ticker.attach(0.6, tick); } void initWifiManager(){ WiFiManager wifiManager; // 重置保存的修改 目标是为了每次进来都是去掉配置页面 wifiManager.resetSettings(); // 配置连接超时 wifiManager.setConnectTimeout(60); // 打印调试内容 wifiManager.setDebugOutput(true); // 设置最小信号强度 wifiManager.setMinimumSignalQuality(30); // 设置固定AP信息 IPAddress _ip = IPAddress(192, 168, 4, 25); IPAddress _gw = IPAddress(192, 168, 4, 1); IPAddress _sn = IPAddress(255, 255, 255, 0); wifiManager.setAPStaticIPConfig(_ip, _gw, _sn); // 设置进入AP模式的回调 wifiManager.setAPCallback(configModeCallback); // 设置点击保存的回调 wifiManager.setSaveConfigCallback(saveConfigCallback); // 设置 如果配置错误的ssid或者密码 退出配置模式 wifiManager.setBreakAfterConfig(true); // 设置过滤重复的AP 默认可以不用调用 这里只是示范 wifiManager.setRemoveDuplicateAPs(true); // 添加额外的参数 博哥这里只是示范 比如加入 mqtt 服务器地址 port 端口号 apikey 后面可以结合onenet使用 WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40); WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 6); WiFiManagerParameter custom_apikey("apikey", "onenet apikey", api_key, 32); wifiManager.addParameter(&custom_mqtt_server); wifiManager.addParameter(&custom_mqtt_port); wifiManager.addParameter(&custom_apikey); // ssid 命名为danpianjicainiao pwd是123456 if (!wifiManager.autoConnect("danpianjicainiao","123456")) { Serial.println("failed to connect and hit timeout"); //reset and try again, or maybe put it to deep sleep ESP.reset(); delay(1000); } // 读取配置页面配置好的信息 strcpy(mqtt_server, custom_mqtt_server.getValue()); strcpy(mqtt_port, custom_mqtt_port.getValue()); strcpy(api_key, custom_apikey.getValue()); // 保存自定义信息 if (shouldSaveConfig) { Serial.println("saving config"); DynamicJsonBuffer jsonBuffer; JsonObject& json = jsonBuffer.createObject(); json["mqtt_server"] = mqtt_server; json["mqtt_port"] = mqtt_port; json["api_key"] = api_key; json.printTo(Serial); //end save } Serial.println("local ip"); Serial.println(WiFi.localIP()); } void configModeCallback (WiFiManager *myWiFiManager) { Serial.println("Entered config mode"); Serial.println(WiFi.softAPIP()); //if you used auto generated SSID, print it Serial.println(myWiFiManager->getConfigPortalSSID()); //entered config mode, make led toggle faster ticker.attach(0.2, tick); } void saveConfigCallback () { Serial.println("Should save config"); shouldSaveConfig = true; } void tick(){ //toggle state int state = digitalRead(BUILTIN_LED); // get the current state of GPIO1 pin digitalWrite(BUILTIN_LED, !state); // set pin to the opposite state }



