8266网页配网(含自动连接上次WiFi)

以下代码可实现网页配网。首先自动连接,连接不上之后会进入配网模式,随后连接8266发出的WiFi账号密码,浏览器填写192.168.1.4(自己看串口,凭印象写的),然后填入WiFi密码之后等待即可。代码如下:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>#ifndef STASSID
#define STASSID "Mafeng SmartHome"
#define STAPSK  "mafeng123"
#endifconst char* ssid = STASSID;
const char* password = STAPSK;ESP8266WebServer server(80);
bool LED_Flag = false;
String str =
"<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><meta name=\"viewport\"content=\"width=device-width, initial-scale=1.0\"><meta http-equiv=\"X-UA-Compatible\"content=\"ie=edge\"><title>码蜂智能家居配网</title></head><body style=\"text-align:center;\"><form name=\"my\">WiFi名称:<input type=\"text\"name=\"s\"placeholder=\"请输入您WiFi的名称\"id=\"aa\"><br>WiFi密码:<input type=\"text\"name=\"p\"placeholder=\"请输入您WiFi的密码\"id=\"bb\"><br><input type=\"button\"value=\"连接\"οnclick=\"wifi()\"></form><script language=\"javascript\">function wifi(){var ssid=my.s.value;var password=bb.value;var xmlhttp=new XMLHttpRequest();xmlhttp.open(\"GET\",\"/HandleVal?ssid=\"+ssid+\"&password=\"+password,true);xmlhttp.send()}</script></body></html>";void handleRoot() {server.send(200, "text/html", str);
}void HandleVal()
{String wifis = server.arg("ssid"); //从JavaScript发送的数据中找ssid的值String wifip = server.arg("password"); //从JavaScript发送的数据中找password的值Serial.println(wifis); Serial.println(wifip);WiFi.begin(wifis,wifip);
}void handleNotFound() {digitalWrite(LED_BUILTIN, 0);String message = "File Not Found\n\n";message += "URI: ";message += server.uri();message += "\nMethod: ";message += (server.method() == HTTP_GET) ? "GET" : "POST";message += "\nArguments: ";message += server.args();message += "\n";for (uint8_t i = 0; i < server.args(); i++) {message += " " + server.argName(i) + ": " + server.arg(i) + "\n";}server.send(404, "text/plain", message);digitalWrite(LED_BUILTIN, 1);
}
bool autoConfig()
{WiFi.mode(WIFI_STA);WiFi.begin();Serial.print("AutoConfig Waiting......");for (int i = 0; i < 20; i++){if (WiFi.status() == WL_CONNECTED){Serial.println("AutoConfig Success");Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());WiFi.printDiag(Serial);return true;//break;}else{Serial.print(".");LED_Flag = !LED_Flag;if(LED_Flag)digitalWrite(LED_BUILTIN, HIGH);elsedigitalWrite(LED_BUILTIN, LOW); delay(500);}}Serial.println("AutoConfig Faild!" );return false;}void htmlConfig()
{WiFi.mode(WIFI_AP_STA);//设置模式为AP+STAdigitalWrite(LED_BUILTIN, LOW);WiFi.softAP(ssid, password);Serial.println("AP设置完成");IPAddress myIP = WiFi.softAPIP();Serial.print("AP IP address: ");Serial.println(myIP);if (MDNS.begin("esp8266")) {Serial.println("MDNS responder started");}server.on("/", handleRoot);server.on("/HandleVal", HTTP_GET, HandleVal);server.onNotFound(handleNotFound);//请求失败回调函数server.begin();//开启服务器Serial.println("HTTP server started");while(1){server.handleClient();MDNS.update();  if (WiFi.status() == WL_CONNECTED){Serial.println("HtmlConfig Success");Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());Serial.println("HTML连接成功");break;}}
}void wifi_connect() {bool wifiConfig = autoConfig();if(wifiConfig == false)htmlConfig();//HTML配网/*WiFi.persistent(false);WiFi.mode(WIFI_STA);WiFi.setAutoReconnect(true);WiFi.begin(ssid, password);Serial.println("WiFi connecting...");while (!WiFi.isConnected()) {delay(100);Serial.print(".");}Serial.print("\n");Serial.printf("WiFi connected, IP: %s\n", WiFi.localIP().toString().c_str());*/
}#endif /* WIFI_INFO_H_ */

8266网页配网(含自动连接上次WiFi)相关推荐

  1. 【工程师有空了】安信可ESP8266系列及ESP32系列模组AT指令实现网页配网---又多了一个配网方式

    文章目录 前言 AT指令介绍: 配网原理 一.实验准备 可能你还要用到: 二.编译固件 三.开启配网 四.常见问题 1.AT固件烧录不显示 "ready" 2.显示配网失败 3.除 ...

  2. 3. ESP8266开发板自动连接室内Wi-Fi

    文章目录 硬件环境: 1.ESP8266开发板 2.室内Wi-Fi一个或手机热点一个 软件环境配置 1.在示例代码中导入WiFiEcho示例工程 ESP8266开发板自动连接室内Wi-Fi实验 1.程 ...

  3. 瑞芯微RK3399Pro开发板 无线网卡绑定固定ip地址,并且使其开机自动连接对应WiFi

    wifi路由器一般都采用DHCP动态分配ip地址,因此通过nmcli命令直接连接wifi,板子的ip是不固定的,每次重启之后,再次连接wifi,会导致板子的ip地址发生变化,需要每次修改secureC ...

  4. 【Ubuntu】开启ssh服务/配置ftp内网穿透/自动连接校园网

    前言 想让工作电脑开启ssh服务,这样就可以在校外进行远程访问办公,电脑的系统为Ubuntu20.04 开启ssh服务 首先查看当前Ubuntu安装的SSH服务: dpkg -l | grep ssh ...

  5. STM32G0+EMW3080+阿里云飞燕平台实现单片机WiFi智能联网功能(三)EMW3080完成配网,EMW3080连接到阿里云飞平台

    项目描述:该系列记录了STM32G0+EMW3080实现单片机智能联网功能项目的从零开始一步步的实现过程: 硬件环境:单片机为STM32G030C8T6:物联网模块为EMW3080V2-P:网联网模块 ...

  6. 树莓派4B 不同无线网卡自动连接不同wifi

    树莓派4B中只有一张无线网卡,在日常使用中,有时可能会出现需要两张无线网卡分别连接不同WIFI的情况.如果想让树莓派开机后两张无线网卡能自动连接上对应的WIFI,不产生连接的错位,首先,需要购买一张无 ...

  7. iOS开发 App内自动连接指定Wi-Fi

    目前很多智能设备配置网络的时候都有app内部直连Wi-Fi的功能(iOS11之前需要用户跳到Wi-Fi设置界面去连),iOS11后苹果提供 NEHotspotConfigurationManager ...

  8. win10/win11开机自动连接指定WiFi - 任务计划运行bat脚本

    效果图 主要步骤 确定wifi全称,例如abc  (下面有图示) 创建bat脚本文件,例如c:\tasks\autoWifi.bat,内容: netsh wlan disconnect netsh w ...

  9. WiFi-ESP8266入门http(3-4)网页一键配网(1若为普通wifi直连 2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信...

    网页一键配网(1若为普通wifi直连  2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信 工程连接:https://github.com/Dongvdong/ESP8266_H ...

最新文章

  1. 《.NET应用架构设计:原则、模式与实践》新书博客--试读-2.1.2 设计原则实战
  2. 浏览器到响应页面的全过程
  3. UA MATH523A 实分析3 积分理论例题 Fubini定理计算简单二重积分的一个例题
  4. SDRAM工作的大体流程
  5. 分布式版本控制工具Git
  6. python02_python常用数据类型字符串
  7. 汉语言文学专业c学校,哪个学校汉语言文学专业最好?有哪些录取要求最低分数线是多少?...
  8. Win7 下面升级VS2017 vs_community install Microsoft.Windows.D3DCompiler.Msu.Win7
  9. java web导出excel表格,java 网页导出excel表格数据-java 将页面内容写入excel文件中并可以将其下载到......
  10. archlinux配置Xfce+fcitx5中文输入法
  11. 兼容PD和QC快充充电器输入单节锂电池2A充电芯片-2号电路板
  12. 25-Web-京东登录界面
  13. The types of the interface org.apache.flink.util.OutputTag could not be inferred.
  14. Eclipse设置各类型文件默认打开方式
  15. Android主线程耗时方法监控
  16. Teardrop攻击 —— 创建虚假的IP数据包
  17. git使用meld的方法
  18. java socket实现的简易的聊天工具demo
  19. 利用iTerm2+oh-my-zsh+Dracula主题打造我的Mac终端利器
  20. 台积电开始试产3nm ,苹果、Intel公司也有意向在跟进3nm技术

热门文章

  1. Python format函数的用法详解
  2. python3中的format函数
  3. MQ如何保证分布式事务的最终一致性
  4. js中append和prepend的用法
  5. 【调用百度翻译接口实现简单窗口的汉译英】
  6. GitHub万星大佬做出纳?开发OpenAI工具必用知识集;ChatGPT最新速查表;6万字AI Prompt教程 | ShowMeAI日报
  7. 红外遥控器快速编码解码(NEC)
  8. 从外部入侵公司:外部渗透测试
  9. 【计算机视觉】 摄像机标定
  10. 第50篇:使用OD逆向破解流光Fluxay扫描器各种限制(怀旧)