Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <ESP8266WebServer.h>
- #include <EEPROM.h>
- ESP8266WebServer server(80);
- const char* ssid = "test12345"; //accespoint naam
- const char* passphrase = "test12345"; // code accespoint
- String st;
- String content;
- int statusCode;
- String versie = "inofile = esp-ap-en-client-met-ssid-in-eeprom2";
- String esid ="";
- String epass ="";
- String qsid = "";
- String qpass = "";
- void setup() {
- Serial.begin(115200);
- EEPROM.begin(512);
- delay(10);
- Serial.println();
- Serial.println();
- Serial.println("Startup");
- // Serial.println("Reading EEPROM ");
- // for (int i = 0; i < 512; i++)
- // {
- // char value = EEPROM.read(i);
- // Serial.print(i);
- // Serial.print("\t");
- // // Serial.print(value, DEC);
- // Serial.println(value);
- // delay(40);
- // }
- // read eeprom for ssid and pass
- Serial.println("Reading EEPROM ssid");
- esid ="";
- for (int i = 0; i < 32; ++i)
- {
- esid += char(EEPROM.read(i));
- Serial.println(esid);
- Serial.println(i);
- }
- Serial.print("SSID: ");
- Serial.println(esid);
- Serial.println("Reading EEPROM pass");
- epass = "";
- for (int i = 32; i < 96; ++i)
- {
- epass += char(EEPROM.read(i));
- Serial.println(epass);
- Serial.println(i);
- }
- Serial.print("PASS: ");
- Serial.println(epass);
- Serial.println("debug esid: ");
- Serial.println(esid.c_str());
- Serial.println(epass.c_str());
- if ( esid.length() > 1 ) {
- Serial.println("debug2: ");
- Serial.println(esid.c_str());
- Serial.println(epass.c_str());
- WiFi.begin(esid.c_str(), epass.c_str());
- if (testWifi()) {
- launchWeb(0);
- return;
- }
- }
- setupAP();
- }
- bool testWifi(void) {
- int c = 0;
- Serial.println("Waiting for Wifi to connect");
- while ( c < 20 ) {
- if (WiFi.status() == WL_CONNECTED) { return true; }
- delay(500);
- Serial.print(WiFi.status());
- c++;
- }
- Serial.println("");
- Serial.println("Connect timed out, opening AP");
- return false;
- }
- void launchWeb(int webtype) {
- Serial.println("");
- Serial.println("WiFi connected");
- Serial.print("Local IP: ");
- Serial.println(WiFi.localIP());
- Serial.print("gekoppelde ssid: ");
- Serial.println(WiFi.SSID());
- Serial.print("SoftAP IP: ");
- Serial.println(WiFi.softAPIP());
- if (webtype == 1) {
- Serial.println ("geen wifi gekend in eeprom , fabrieksreset");
- }
- if (webtype == 0) {
- Serial.println ("wifi gekend in wifimodule");
- }
- createWebServer(webtype);
- // Start the server
- server.begin();
- Serial.println("Server started");
- }
- void setupAP(void) {
- WiFi.mode(WIFI_STA);
- WiFi.disconnect();
- delay(100);
- int n = WiFi.scanNetworks();
- Serial.println("scan done");
- if (n == 0)
- Serial.println("no networks found");
- else
- {
- Serial.print(n);
- Serial.println(" networks found");
- for (int i = 0; i < n; ++i)
- {
- // Print SSID and RSSI for each network found
- Serial.print(i + 1);
- Serial.print(": ");
- Serial.print(WiFi.SSID(i));
- Serial.print(" (");
- Serial.print(WiFi.RSSI(i));
- Serial.print(")");
- Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
- delay(10);
- }
- }
- Serial.println("");
- st = "<ol>";
- for (int i = 0; i < n; ++i)
- {
- // Print SSID and RSSI for each network found
- st += "<li>";
- st += WiFi.SSID(i);
- st += " (";
- st += WiFi.RSSI(i);
- st += ")";
- st += (WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*";
- st += "</li>";
- }
- st += "</ol>";
- delay(100);
- WiFi.softAP(ssid, passphrase, 6);
- Serial.println("softap");
- launchWeb(1);
- //Serial.println("over");
- }
- void createWebServer(int webtype)
- {
- if ( webtype == 1 ) {
- server.on("/", []() {
- IPAddress ip = WiFi.softAPIP();
- String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
- content = "<!DOCTYPE HTML>\r\n<html>Hello from ESP8266 at accespoint ";
- content += ipStr;
- content += "<p>";
- content += "<br>";
- content += versie;
- content += "<br>";
- content += " <a href=""";
- content += "/cleareeprom";
- content += """ target=""_blank""> clear de eprom</a> " ;
- content += st;
- content += "</p><form method='get' action='setting'><label>SSID: </label><input name='ssid' length=32><input name='pass' length=64><input type='submit'></form>";
- content += "</html>";
- server.send(200, "text/html", content);
- });
- server.on("/setting", []() {
- qsid = server.arg("ssid");
- qpass = server.arg("pass");
- if (qsid.length() > 0 && qpass.length() > 0) {
- Serial.println("clearing eeprom");
- for (int i = 0; i < 96; ++i) { EEPROM.write(i, 0); }
- Serial.println(qsid);
- Serial.println("");
- Serial.println(qpass);
- Serial.println("");
- Serial.println("writing eeprom ssid:");
- for (int i = 0; i < qsid.length(); ++i)
- {
- EEPROM.write(i, qsid[i]);
- Serial.print("Wrote: ");
- Serial.println(qsid[i]);
- }
- Serial.println("writing eeprom pass:");
- for (int i = 0; i < qpass.length(); ++i)
- {
- EEPROM.write(32+i, qpass[i]);
- Serial.print("Wrote: ");
- Serial.println(qpass[i]);
- }
- EEPROM.commit();
- content = "{\"Success\":\"saved to eeprom... reset to boot into new wifi\"}";
- statusCode = 200;
- } else {
- content = "{\"Error\":\"404 not found\"}";
- statusCode = 404;
- Serial.println("Sending 404");
- }
- server.send(statusCode, "application/json", content);
- });
- }
- else if (webtype == 0) {
- server.on("/", []() {
- IPAddress ip = WiFi.localIP();
- String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
- content = "<!DOCTYPE HTML>\r\n<html>Hello from ESP8266 at client verbonden met router";
- content += ipStr;
- content += "<p>";
- content += "<br>";
- content += versie;
- content += "<br>";
- content += st;
- content += " <a href=""";
- content += "/cleareeprom";
- content += """ target=""_blank""> clear de eprom</a> " ;
- content += "</p><form method='get' action='setting'><label>SSID: </label><input name='ssid' length=32><input name='pass' length=64><input type='submit'></form>";
- content += "</html>";
- server.send(200, "text/html", content);
- });
- server.on("/setting", []() {
- String qsid = server.arg("ssid");
- String qpass = server.arg("pass");
- if (qsid.length() > 0 && qpass.length() > 0) {
- Serial.println("clearing eeprom");
- for (int i = 0; i < 96; ++i) { EEPROM.write(i, 0); }
- Serial.println(qsid);
- Serial.println("");
- Serial.println(qpass);
- Serial.println("");
- Serial.println("writing eeprom ssid:");
- for (int i = 0; i < qsid.length(); ++i)
- {
- EEPROM.write(i, qsid[i]);
- Serial.print("Wrote: ");
- Serial.println(qsid[i]);
- }
- Serial.println("writing eeprom pass:");
- for (int i = 0; i < qpass.length(); ++i)
- {
- EEPROM.write(32+i, qpass[i]);
- Serial.print("Wrote: ");
- Serial.println(qpass[i]);
- }
- EEPROM.commit();
- content = "{\"Success\":\"saved to eeprom... reset to boot into new wifi\"}";
- statusCode = 200;
- } else {
- content = "{\"Error\":\"404 not found\"}";
- statusCode = 404;
- Serial.println("Sending 404");
- }
- server.send(statusCode, "application/json", content);
- });
- server.on("/cleareeprom", []() {
- content = "<!DOCTYPE HTML>\r\n<html>";
- content += "<p>Clearing the EEPROM</p></html>";
- server.send(200, "text/html", content);
- Serial.println("clearing eeprom");
- // for (int i = 0; i < 512; ++i) {
- //
- // EEPROM.write(i, 0); //we steken 0 in als brol
- // Serial.print ("clear adress ");
- // Serial.println (i);
- // delay (100);
- // }
- // EEPROM.commit();
- // Serial.println("clearing ssid en paswoord variabelen lokaal");
- //esid = "reset";
- // epass = esid;
- qsid = "vermoost";
- qpass = "kapot"; // anders onthoud hij de oude string locate en kan je niet resetten
- Serial.println("manueel vith wiss eeprom ssid:");
- for (int i = 0; i < qsid.length(); ++i)
- {
- EEPROM.write(i, qsid[i]);
- Serial.print("Wrote: ");
- Serial.println(qsid[i]);
- }
- Serial.println("manueel wis vith writing eeprom pass:");
- for (int i = 0; i < qpass.length(); ++i)
- {
- EEPROM.write(32+i, qpass[i]);
- Serial.print("Wrote: ");
- Serial.println(qpass[i]);
- }
- EEPROM.commit();
- });
- }
- }
- void loop() {
- server.handleClient();
- }
Advertisement
Add Comment
Please, Sign In to add comment