查看: 1155|回复: 3

[未解决] esp8266通过WEB配置点灯科技秘钥

[复制链接]
  • TA的每日心情
    擦汗
    2020-5-26 09:38
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-4-2 17:23 | 显示全部楼层 |阅读模式
    本帖最后由 xue886 于 2020-4-2 20:05 编辑

    如题esp8266通过WEB配置点灯科技秘钥怎么保存下来,不能断电一次就重新配置一次呀。
    看了flash但是没搞明白,希望有大神能够把具有此功能的具体代码写出来!谢谢!下面b站up:小年轻只爱他  写的用web进行配置无线网账号密码的。请大神大佬来看看加点什么可以配置密钥而且断电后不用重新配置。
    #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=\"button\"value=\"连接\"onclick=\"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>";
    /*****************************************************
    * 函数名称: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的值
        Serial.println(wifis); Serial.println(wifip);
        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);

        bool wifiConfig = autoConfig();

        if(wifiConfig == false)
            htmlConfig();//HTML配网
    }

    void loop(void) {
        digitalWrite(LED_BUILTIN, HIGH);
        delay(100);
        digitalWrite(LED_BUILTIN, LOW);
        delay(100);
    }



  • TA的每日心情
    开心
    2020-12-1 10:31
  • 签到天数: 825 天

    [LV.10]以坛为家III

    发表于 2020-4-3 09:01 | 显示全部楼层
    这个就是简单的webserver的操作 好像也没有特殊的 就照着例子去调试调试了
  • TA的每日心情
    擦汗
    2020-5-26 09:38
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2020-4-3 10:39 来自手机 | 显示全部楼层
    单片机菜鸟 发表于 2020-4-3 09:01
    这个就是简单的webserver的操作 好像也没有特殊的 就照着例子去调试调试了

    esp8266 可以自动保存链接过的wifi账号密码,但是怎么才能让它自动保存点灯科技的密钥呀?
  • TA的每日心情
    开心
    2020-10-21 12:42
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-11-21 16:54 | 显示全部楼层
    楼主,你现在解决了吗
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    【Arduino】108种传感器模块系列实验(27)---BMP280气压传感器
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【干货分享】mega2560原理图PCB图纸altium designer18
    【干货分享】mega2560原理
    分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
    教你让OLED动起来!多重字符串版!
    教你让OLED动起来!多重字
    大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
    土壤湿度计的原件组成与安装,求大神帮忙
    土壤湿度计的原件组成与安
    最好能帮忙将安装步奏写出来,一位小白的在线求助
    新手入门必读:51单片机和arduino哪个好?怎么选?
    新手入门必读:51单片机和
    声明:本文内容转载自DF创客社区Arduino学习板块。 很多刚入门的电子爱好者刚开始学
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表