谁有8266,web配网能写入auth密匙的源码分享一下呗,谢谢-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2842|回复: 7

[过期] 谁有8266,web配网能写入auth密匙的源码分享一下呗,谢谢

[复制链接]
发表于 2021-5-19 20:37 | 显示全部楼层 |阅读模式
如题
谁有web配网能写入auth密匙的源码分享一下呗,谢谢


发表于 2021-12-3 23:47 | 显示全部楼层
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h>  #ifndef STASSID #define STASSID "qwer" #define STAPSK  "asdfghjkl" #endif    const 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>不知名up的ESP8266网页配网</title></head><body><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=\"text\"name=\"s\"placeholder=\"请输入您的密钥\"id=\"cc\"><br><input type=\"button\"value=\"连接\"onclick=\"wifi()\"></form><script language=\"javascript\">function wifi(){var ssid=aa.value;var password=bb.value;var auth=cc.value;var xmlhttp=new XMLHttpRequest();xmlhttp.open(\"GET\",\"/HandleVal?&ssid=\"+ssid+\"&password=\"+password+\"&auth=\"+auth,true);xmlhttp.send()}</script></body></html>"; /*****************************************************  * 函数名称:handleRoot()  * 函数说明:客户端请求回调函数  * 参数说明:无 ******************************************************/ void handleRoot() {   server.send(200, "text/html", str); } /*****************************************************  * 函数名称:HandleVal()  * 函数说明:对客户端请求返回值处理  * 参数说明:无 ******************************************************/ void HandleVal() {        String wifis = server.arg("ssid"); //从JavaScript发送的数据中找ssid的值     String wifip = server.arg("password"); //从JavaScript发送的数据中找password的值     String wifij = server.arg("auth"); //从JavaScript发送的数据中找password的值     Serial.println(wifis); Serial.println(wifip);Serial.println(wifij);     WiFi.begin(wifis,wifip); } /*****************************************************  * 函数名称:handleNotFound()  * 函数说明:响应失败函数  * 参数说明:无 ******************************************************/ 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); } /*****************************************************  * 函数名称:autoConfig()  * 函数说明:自动连接WiFi函数  * 参数说明:无  * 返回值说明:true:连接成功 false:连接失败 ******************************************************/ 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);       else           digitalWrite(LED_BUILTIN, LOW);        delay(500);     }   }   Serial.println("AutoConfig Faild!" );   return false;   //WiFi.printDiag(Serial); } /*****************************************************  * 函数名称:htmlConfig()  * 函数说明:web配置WiFi函数  * 参数说明:无 ******************************************************/ void htmlConfig() {     WiFi.mode(WIFI_AP_STA);//设置模式为AP+STA     digitalWrite(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 setup(void) {        pinMode(LED_BUILTIN, OUTPUT);     digitalWrite(LED_BUILTIN, HIGH);     Serial.begin(115200);     Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());       Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());     bool wifiConfig = autoConfig();          if(wifiConfig == false)         htmlConfig();//HTML配网 }  void loop(void) {     digitalWrite(LED_BUILTIN, HIGH);     delay(100);     digitalWrite(LED_BUILTIN, LOW);     delay(100); }
发表于 2021-12-9 15:54 | 显示全部楼层
整理楼上的代码,经证实可以使用


#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#ifndef STASSID
#define STASSID "qwer"
//#define STAPSK  "asdfghjkl"
#endif   
const 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>不知名up的ESP8266网页配网</title></head><body><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=\"text\"name=\"s\"placeholder=\"请输入您的密钥\"id=\"cc\"><br><input type=\"button\"value=\"连接\"onclick=\"wifi()\"></form><script language=\"javascript\">function wifi(){var ssid=aa.value;var password=bb.value;var auth=cc.value;var xmlhttp=new XMLHttpRequest();xmlhttp.open(\"GET\",\"/HandleVal?&ssid=\"+ssid+\"&password=\"+password+\"&auth=\"+auth,true);xmlhttp.send()}</script></body></html>";
/*****************************************************  * 函数名称:handleRoot()  * 函数说明:客户端请求回调函数  * 参数说明:无 ******************************************************/
void handleRoot() {
  server.send(200, "text/html", str); }
  /*****************************************************  
  * 函数名称:HandleVal()
  * 函数说明:对客户端请求返回值处理  
  * 参数说明:无
  ******************************************************/
  void HandleVal() {        
    String wifis = server.arg("ssid");
    //从JavaScript发送的数据中找ssid的值     
    String wifip = server.arg("password");
    //从JavaScript发送的数据中找password的值     
    String wifij = server.arg("auth");
    //从JavaScript发送的数据中找password的值     
    Serial.println(wifis);
    Serial.println(wifip);
    Serial.println(wifij);     
    WiFi.begin(wifis,wifip); }
    /*****************************************************  
    * 函数名称:handleNotFound()  
    * 函数说明:响应失败函数  
    * 参数说明:无
    ******************************************************/
    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" : "OST";   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); }
      /*****************************************************  
      * 函数名称:autoConfig()  
      * 函数说明:自动连接WiFi函数  
      * 参数说明:无  
      * 返回值说明:true:连接成功 false:连接失败
      ******************************************************/
      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("SW:%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);      
             // else           
              //digitalWrite(LED_BUILTIN, LOW);        
             // delay(500);     
              }   
              }   
              Serial.println("AutoConfig Faild!" );   
              return false;  
              //WiFi.printDiag(Serial);
              }
              /*****************************************************  
              * 函数名称:htmlConfig()
              * 函数说明:web配置WiFi函数
              * 参数说明:无
              ******************************************************/
              void htmlConfig() {     
                WiFi.mode(WIFI_AP_STA);//设置模式为AP+STA     
                digitalWrite(LED_BUILTIN, LOW);     
                WiFi.softAP(ssid);   
                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("SW:%s\r\n", WiFi.psk().c_str());
                      Serial.println("HTML连接成功");
                      break;  
                      }   
                      }  
                      }
                      void setup(void) {
                        //pinMode(LED_BUILTIN, OUTPUT);     
                        //digitalWrite(LED_BUILTIN, HIGH);     
                        Serial.begin(115200);   
                        Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());  
                        Serial.printf("SW:%s\r\n", WiFi.psk().c_str());
                        bool wifiConfig = autoConfig();   
                        if(wifiConfig == false)      
                        htmlConfig();//HTML配网
                        }  
                        void loop(void) {
                         // digitalWrite(LED_BUILTIN, HIGH);     
                         // delay(100);     
                         // digitalWrite(LED_BUILTIN, LOW);     
                         // delay(100);
                         }
  
发表于 2021-12-9 15:55 | 显示全部楼层
long8651 发表于 2021-12-9 15:54
整理楼上的代码,经证实可以使用

注释掉led部分,忘了恢复回来了
发表于 2021-12-17 14:36 | 显示全部楼层
重新整理了一下,编译通过。

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#ifndef STASSID
#define STASSID "qwer"
#define STAPSK  "asdfghjkl"
#endif
const 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>不知名up的ESP8266网页配网</title></head><body><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=\"text\"name=\"s\"placeholder=\"请输入您的密钥\"id=\"cc\"><br><input type=\"button\"value=\"连接\"onclick=\"wifi()\"></form><script language=\"javascript\">function wifi(){var ssid=aa.value;var password=bb.value;var auth=cc.value;var xmlhttp=new XMLHttpRequest();xmlhttp.open(\"GET\",\"/HandleVal?&ssid=\"+ssid+\"&password=\"+password+\"&auth=\"+auth,true);xmlhttp.send()}</script></body></html>";
/*****************************************************
  函数名称:handleRoot()
  函数说明:客户端请求回调函数
  参数说明:无
******************************************************/
void handleRoot() {
  server.send(200, "text/html", str);
}
/*****************************************************
  函数名称:HandleVal()
  函数说明:对客户端请求返回值处理
  参数说明:无
******************************************************/
void HandleVal() {
  String wifis = server.arg("ssid");  //从JavaScript发送的数据中找ssid的值
  String wifip = server.arg("password");  //从JavaScript发送的数据中找password的值
  String wifij = server.arg("auth");  //从JavaScript发送的数据中找password的值
  Serial.println(wifis);
  Serial.println(wifip);
  Serial.println(wifij);
  WiFi.begin(wifis, wifip);
}
/*****************************************************
  函数名称:handleNotFound()
  函数说明:响应失败函数
  参数说明:无
******************************************************/
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);
}
/*****************************************************
  函数名称:autoConfig()
  函数说明:自动连接WiFi函数
  参数说明:无
  返回值说明:true:连接成功 false:连接失败
******************************************************/
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);
      else
        digitalWrite(LED_BUILTIN, LOW);
      delay(500);
    }
  }   Serial.println("AutoConfig Faild!" );
  return false;
  //WiFi.printDiag(Serial);
}
/*****************************************************
  函数名称:htmlConfig()
  函数说明:web配置WiFi函数
  参数说明:无
******************************************************/
void htmlConfig() {
  WiFi.mode(WIFI_AP_STA);//设置模式为AP+STA
  digitalWrite(LED_BUILTIN, LOW);
  WiFi.softAP(ssid);
  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 setup(void) {
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
  Serial.begin(115200);
  Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
  Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
  bool wifiConfig = autoConfig();
  if (wifiConfig == false) htmlConfig();//HTML配网
}
void loop(void) {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
}
发表于 2021-12-22 10:50 | 显示全部楼层
catv 发表于 2021-12-17 14:36
重新整理了一下,编译通过。

#include

谢谢分享!!!!!!!
发表于 2021-12-31 22:07 | 显示全部楼层
感谢分享。
只是有点问题这个代码在ESP01S正常保存wifi密码,
但ESP12F就始终不能保存wifi密码,不知道什么问题。
发表于 2022-10-3 12:56 | 显示全部楼层
catv 发表于 2021-12-17 14:36
重新整理了一下,编译通过。

#include

你好,烧录好了  连接谁?wifi 名称是哪个?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:27 , Processed in 0.080962 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表