From 8106d576be61b577edcb0f35b67bd1d8b308bc7d Mon Sep 17 00:00:00 2001
From: mattbk
Date: Mon, 25 Sep 2023 21:36:37 -0500
Subject: [PATCH 1/9] Add option to set up for wifi or ap on compile.
---
vulpes/src/main.cpp | 36 ++++++++++++++++++++++++++++--------
1 file changed, 28 insertions(+), 8 deletions(-)
diff --git a/vulpes/src/main.cpp b/vulpes/src/main.cpp
index 6f49a1d..294dbf1 100644
--- a/vulpes/src/main.cpp
+++ b/vulpes/src/main.cpp
@@ -34,9 +34,19 @@ const int blinker = LED_BUILTIN;
RTC_DS3231 rtc; // set up RTC
const int alarmPin = 4; // pin to monitor for RTC alarms
+// Network options: "wifi" for existing netowrk, "ap" to be an access point
+const char* network = "ap";
+// Connect to existing network
// Read from config.h
const char* ssid = WIFI_SSID;
const char* password = WIFI_PASSWORD;
+// Create a new access point
+// Replace with your network credentials
+const char* ssid_ap = "vulpes001";
+const char* password_ap = NULL; //"123456789";
+IPAddress local_ip(192,168,0,1);
+IPAddress gateway(192,168,0,1);
+IPAddress subnet(255,255,255,0);
const char* PARAM_SEND = "inputSend";
const char* PARAM_WPM = "inputWPM";
@@ -347,15 +357,25 @@ void setup() {
sender_key.setMessage(String("mo5 "));
}
- WiFi.mode(WIFI_STA);
- WiFi.begin(ssid, password);
- if (WiFi.waitForConnectResult() != WL_CONNECTED) {
- Serial.println("WiFi Failed!");
- return;
+ WiFi.setHostname("vulpes");
+ if (network == "wifi"){
+ // Attach to existing wifi
+ WiFi.mode(WIFI_STA);
+ WiFi.begin(ssid, password);
+ if (WiFi.waitForConnectResult() != WL_CONNECTED) {
+ Serial.println("WiFi Failed!");
+ return;
+ }
+ Serial.println();
+ Serial.print("IP Address: ");
+ Serial.println(WiFi.localIP());
+ } else if (network == "ap"){
+ // Act as new access point
+ WiFi.softAPConfig(local_ip, gateway, subnet);
+ WiFi.softAP(ssid_ap, password_ap);
}
- Serial.println();
- Serial.print("IP Address: ");
- Serial.println(WiFi.localIP());
+
+
// Send web page with input fields to client
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
From 7fc43238cdb44d0b6e7c93fec20adb2f9a9d5b9c Mon Sep 17 00:00:00 2001
From: mattbk
Date: Mon, 25 Sep 2023 21:47:48 -0500
Subject: [PATCH 2/9] Simplify SSID.
---
vulpes/src/main.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/vulpes/src/main.cpp b/vulpes/src/main.cpp
index 294dbf1..dccfb67 100644
--- a/vulpes/src/main.cpp
+++ b/vulpes/src/main.cpp
@@ -41,9 +41,9 @@ const char* network = "ap";
const char* ssid = WIFI_SSID;
const char* password = WIFI_PASSWORD;
// Create a new access point
-// Replace with your network credentials
-const char* ssid_ap = "vulpes001";
-const char* password_ap = NULL; //"123456789";
+// Replace with your desired network credentials
+const char* ssid_ap = "vulpes";
+const char* password_ap = NULL; //"123456789"; //NULL is empty
IPAddress local_ip(192,168,0,1);
IPAddress gateway(192,168,0,1);
IPAddress subnet(255,255,255,0);
From 5e3503b497ddfb2323f88e93031c30e1f38efeb4 Mon Sep 17 00:00:00 2001
From: mattbk
Date: Mon, 25 Sep 2023 21:53:20 -0500
Subject: [PATCH 3/9] Use integer network setting to avoid string comparison.
---
vulpes/src/main.cpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/vulpes/src/main.cpp b/vulpes/src/main.cpp
index dccfb67..2a36174 100644
--- a/vulpes/src/main.cpp
+++ b/vulpes/src/main.cpp
@@ -34,8 +34,8 @@ const int blinker = LED_BUILTIN;
RTC_DS3231 rtc; // set up RTC
const int alarmPin = 4; // pin to monitor for RTC alarms
-// Network options: "wifi" for existing netowrk, "ap" to be an access point
-const char* network = "ap";
+// Network options: "0" for existing netowrk, "1" to be an access point
+const int network = 1;
// Connect to existing network
// Read from config.h
const char* ssid = WIFI_SSID;
@@ -358,7 +358,7 @@ void setup() {
}
WiFi.setHostname("vulpes");
- if (network == "wifi"){
+ if (network == 0){
// Attach to existing wifi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
@@ -369,7 +369,7 @@ void setup() {
Serial.println();
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
- } else if (network == "ap"){
+ } else if (network == 1){
// Act as new access point
WiFi.softAPConfig(local_ip, gateway, subnet);
WiFi.softAP(ssid_ap, password_ap);
From 4e797b92817bd966f091860bcb7ce17378ca8e8b Mon Sep 17 00:00:00 2001
From: mattbk
Date: Mon, 25 Sep 2023 22:02:03 -0500
Subject: [PATCH 4/9] Move folder.
---
vulpes/.gitignore => .gitignore | 0
esp32-webserver-form/esp32-webserver-form.ino | 183 ------------------
.../esp32-webserver-prefs.ino | 169 ----------------
esp32-webserver/esp32-webserver.ino | 157 ---------------
{vulpes/include => include}/README | 0
{vulpes/lib => lib}/README | 0
vulpes/platformio.ini => platformio.ini | 0
{vulpes/src => src}/config.h.default | 0
{vulpes/src => src}/main.cpp | 0
{vulpes/src => src}/morse.cpp | 0
{vulpes/src => src}/morse.h | 0
test.html | 39 ++++
{vulpes/test => test}/README | 0
vulpes/.vscode/extensions.json | 10 -
14 files changed, 39 insertions(+), 519 deletions(-)
rename vulpes/.gitignore => .gitignore (100%)
delete mode 100644 esp32-webserver-form/esp32-webserver-form.ino
delete mode 100644 esp32-webserver-prefs/esp32-webserver-prefs.ino
delete mode 100644 esp32-webserver/esp32-webserver.ino
rename {vulpes/include => include}/README (100%)
rename {vulpes/lib => lib}/README (100%)
rename vulpes/platformio.ini => platformio.ini (100%)
rename {vulpes/src => src}/config.h.default (100%)
rename {vulpes/src => src}/main.cpp (100%)
rename {vulpes/src => src}/morse.cpp (100%)
rename {vulpes/src => src}/morse.h (100%)
create mode 100644 test.html
rename {vulpes/test => test}/README (100%)
delete mode 100644 vulpes/.vscode/extensions.json
diff --git a/vulpes/.gitignore b/.gitignore
similarity index 100%
rename from vulpes/.gitignore
rename to .gitignore
diff --git a/esp32-webserver-form/esp32-webserver-form.ino b/esp32-webserver-form/esp32-webserver-form.ino
deleted file mode 100644
index b5bbce4..0000000
--- a/esp32-webserver-form/esp32-webserver-form.ino
+++ /dev/null
@@ -1,183 +0,0 @@
-/*********
- Rui Santos
- Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-input-data-html-form/
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files.
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-*********/
-
-// include wifi password
-#include "config.h"
-#include
-#include
-#include
-#include
-#include
-
-// download zip from https://github.com/me-no-dev/ESPAsyncWebServer and install.
-#include
-
-AsyncWebServer server(80);
-
-// Read from config.h
-const char* ssid = WIFI_SSID;
-const char* password = WIFI_PASSWORD;
-
-const char* PARAM_STRING = "inputString";
-const char* PARAM_INT = "inputInt";
-const char* PARAM_FLOAT = "inputFloat";
-
-// HTML web page to handle 3 input fields (inputString, inputInt, inputFloat)
-const char index_html[] PROGMEM = R"rawliteral(
-
- ESP Input Form
-
-
-
-
-
-)rawliteral";
-
-void notFound(AsyncWebServerRequest *request) {
- request->send(404, "text/plain", "Not found");
-}
-
-String readFile(fs::FS &fs, const char * path){
- Serial.printf("Reading file: %s\r\n", path);
- File file = fs.open(path, "r");
- if(!file || file.isDirectory()){
- Serial.println("- empty file or failed to open file");
- return String();
- }
- Serial.println("- read from file:");
- String fileContent;
- while(file.available()){
- fileContent+=String((char)file.read());
- }
- file.close();
- Serial.println(fileContent);
- return fileContent;
-}
-
-void writeFile(fs::FS &fs, const char * path, const char * message){
- Serial.printf("Writing file: %s\r\n", path);
- File file = fs.open(path, "w");
- if(!file){
- Serial.println("- failed to open file for writing");
- return;
- }
- if(file.print(message)){
- Serial.println("- file written");
- } else {
- Serial.println("- write failed");
- }
- file.close();
-}
-
-// Replaces placeholder with stored values
-String processor(const String& var){
- //Serial.println(var);
- if(var == "inputString"){
- return readFile(SPIFFS, "/inputString.txt");
- }
- else if(var == "inputInt"){
- return readFile(SPIFFS, "/inputInt.txt");
- }
- else if(var == "inputFloat"){
- return readFile(SPIFFS, "/inputFloat.txt");
- }
- return String();
-}
-
-void setup() {
- Serial.begin(115200);
- // Initialize SPIFFS
- #ifdef ESP32
- if(!SPIFFS.begin(true)){
- Serial.println("An Error has occurred while mounting SPIFFS");
- return;
- }
- #else
- if(!SPIFFS.begin()){
- Serial.println("An Error has occurred while mounting SPIFFS");
- return;
- }
- #endif
-
- WiFi.mode(WIFI_STA);
- WiFi.begin(ssid, password);
- if (WiFi.waitForConnectResult() != WL_CONNECTED) {
- Serial.println("WiFi Failed!");
- return;
- }
- Serial.println();
- Serial.print("IP Address: ");
- Serial.println(WiFi.localIP());
-
- // Send web page with input fields to client
- server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
- request->send_P(200, "text/html", index_html, processor);
- });
-
- // Send a GET request to /get?inputString=
- server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
- String inputMessage;
- // GET inputString value on /get?inputString=
- if (request->hasParam(PARAM_STRING)) {
- inputMessage = request->getParam(PARAM_STRING)->value();
- writeFile(SPIFFS, "/inputString.txt", inputMessage.c_str());
- }
- // GET inputInt value on /get?inputInt=
- else if (request->hasParam(PARAM_INT)) {
- inputMessage = request->getParam(PARAM_INT)->value();
- writeFile(SPIFFS, "/inputInt.txt", inputMessage.c_str());
- }
- // GET inputFloat value on /get?inputFloat=
- else if (request->hasParam(PARAM_FLOAT)) {
- inputMessage = request->getParam(PARAM_FLOAT)->value();
- writeFile(SPIFFS, "/inputFloat.txt", inputMessage.c_str());
- }
- else {
- inputMessage = "No message sent";
- }
- Serial.println(inputMessage);
- request->send(200, "text/text", inputMessage);
- });
- server.onNotFound(notFound);
- server.begin();
-}
-
-void loop() {
- // To access your stored values on inputString, inputInt, inputFloat
- String yourInputString = readFile(SPIFFS, "/inputString.txt");
- Serial.print("*** Your inputString: ");
- Serial.println(yourInputString);
-
- int yourInputInt = readFile(SPIFFS, "/inputInt.txt").toInt();
- Serial.print("*** Your inputInt: ");
- Serial.println(yourInputInt);
-
- float yourInputFloat = readFile(SPIFFS, "/inputFloat.txt").toFloat();
- Serial.print("*** Your inputFloat: ");
- Serial.println(yourInputFloat);
- delay(5000);
-}
diff --git a/esp32-webserver-prefs/esp32-webserver-prefs.ino b/esp32-webserver-prefs/esp32-webserver-prefs.ino
deleted file mode 100644
index 043efe8..0000000
--- a/esp32-webserver-prefs/esp32-webserver-prefs.ino
+++ /dev/null
@@ -1,169 +0,0 @@
-/*********
- Rui Santos
- Complete project details at https://randomnerdtutorials.com
-*********/
-// include wifi password
-#include "config.h"
-// Load Wi-Fi library
-#include
-// Load Preferences library
-#include
-// Define preferences instance
-Preferences prefs;
-// Open up preferences with defined namespace
-prefs.begin("vulpes", false);
-
-// Replace with your network credentials
-const char* ssid = WIFI_SSID;
-const char* password = WIFI_PASSWORD;
-
-// Set web server port number to 80
-WiFiServer server(80);
-
-// Variable to store the HTTP request
-String header;
-
-// Auxiliar variables to store the current output state
-String output26State = "off";
-String output27State = "off";
-
-// Assign output variables to GPIO pins
-const int output26 = 26;
-const int output27 = 27;
-
-// Current time
-unsigned long currentTime = millis();
-// Previous time
-unsigned long previousTime = 0;
-// Define timeout time in milliseconds (example: 2000ms = 2s)
-const long timeoutTime = 2000;
-
-void setup() {
- Serial.begin(115200);
- // Initialize the output variables as outputs
- pinMode(output26, OUTPUT);
- pinMode(output27, OUTPUT);
- // Set outputs to LOW
- digitalWrite(output26, LOW);
- digitalWrite(output27, LOW);
-
- preferences.putString("ssid", ssid);
- preferences.putString("password", password);
-
- Serial.println("Network Credentials Saved using Preferences");
-
- preferences.end();
-
- // Connect to Wi-Fi network with SSID and password
- Serial.print("Connecting to ");
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- // Print local IP address and start web server
- Serial.println("");
- Serial.println("WiFi connected.");
- Serial.println("IP address: ");
- Serial.println(WiFi.localIP());
- server.begin();
-}
-
-void loop(){
- WiFiClient client = server.available(); // Listen for incoming clients
-
- if (client) { // If a new client connects,
- currentTime = millis();
- previousTime = currentTime;
- Serial.println("New Client."); // print a message out in the serial port
- String currentLine = ""; // make a String to hold incoming data from the client
- while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while the client's connected
- currentTime = millis();
- if (client.available()) { // if there's bytes to read from the client,
- char c = client.read(); // read a byte, then
- Serial.write(c); // print it out the serial monitor
- header += c;
- if (c == '\n') { // if the byte is a newline character
- // if the current line is blank, you got two newline characters in a row.
- // that's the end of the client HTTP request, so send a response:
- if (currentLine.length() == 0) {
- // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
- // and a content-type so the client knows what's coming, then a blank line:
- client.println("HTTP/1.1 200 OK");
- client.println("Content-type:text/html");
- client.println("Connection: close");
- client.println();
-
- // turns the GPIOs on and off
- if (header.indexOf("GET /26/on") >= 0) {
- Serial.println("GPIO 26 on");
- output26State = "on";
- digitalWrite(output26, HIGH);
- } else if (header.indexOf("GET /26/off") >= 0) {
- Serial.println("GPIO 26 off");
- output26State = "off";
- digitalWrite(output26, LOW);
- } else if (header.indexOf("GET /27/on") >= 0) {
- Serial.println("GPIO 27 on");
- output27State = "on";
- digitalWrite(output27, HIGH);
- } else if (header.indexOf("GET /27/off") >= 0) {
- Serial.println("GPIO 27 off");
- output27State = "off";
- digitalWrite(output27, LOW);
- }
-
- // Display the HTML web page
- client.println("");
- client.println("");
- client.println("");
- // CSS to style the on/off buttons
- // Feel free to change the background-color and font-size attributes to fit your preferences
- client.println("");
-
- // Web Page Heading
- client.println("
ESP32 Web Server
");
-
- // Display current state, and ON/OFF buttons for GPIO 26
- client.println("
GPIO 26 - State " + output26State + "
");
- // If the output26State is off, it displays the ON button
- if (output26State=="off") {
- client.println("
");
- } else {
- client.println("
");
- }
-
- // Display current state, and ON/OFF buttons for GPIO 27
- client.println("
GPIO 27 - State " + output27State + "
");
- // If the output27State is off, it displays the ON button
- if (output27State=="off") {
- client.println("
");
- } else {
- client.println("
");
- }
- client.println("");
-
- // The HTTP response ends with another blank line
- client.println();
- // Break out of the while loop
- break;
- } else { // if you got a newline, then clear currentLine
- currentLine = "";
- }
- } else if (c != '\r') { // if you got anything else but a carriage return character,
- currentLine += c; // add it to the end of the currentLine
- }
- }
- }
- // Clear the header variable
- header = "";
- // Close the connection
- client.stop();
- Serial.println("Client disconnected.");
- Serial.println("");
- }
-}
diff --git a/esp32-webserver/esp32-webserver.ino b/esp32-webserver/esp32-webserver.ino
deleted file mode 100644
index 6815ed3..0000000
--- a/esp32-webserver/esp32-webserver.ino
+++ /dev/null
@@ -1,157 +0,0 @@
-/*********
- Rui Santos
- Complete project details at https://randomnerdtutorials.com
-*********/
-
-// include wifi password
-#include "config.h"
-// Load Wi-Fi library
-#include
-
-// Replace with your network credentials
-const char* ssid = WIFI_SSID;
-const char* password = WIFI_PASSWORD;
-
-// Set web server port number to 80
-WiFiServer server(80);
-
-// Variable to store the HTTP request
-String header;
-
-// Auxiliar variables to store the current output state
-String output26State = "off";
-String output27State = "off";
-
-// Assign output variables to GPIO pins
-const int output26 = 26;
-const int output27 = 27;
-
-// Current time
-unsigned long currentTime = millis();
-// Previous time
-unsigned long previousTime = 0;
-// Define timeout time in milliseconds (example: 2000ms = 2s)
-const long timeoutTime = 2000;
-
-void setup() {
- Serial.begin(115200);
- // Initialize the output variables as outputs
- pinMode(output26, OUTPUT);
- pinMode(output27, OUTPUT);
- // Set outputs to LOW
- digitalWrite(output26, LOW);
- digitalWrite(output27, LOW);
-
- // Connect to Wi-Fi network with SSID and password
- Serial.print("Connecting to ");
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- // Print local IP address and start web server
- Serial.println("");
- Serial.println("WiFi connected.");
- Serial.println("IP address: ");
- Serial.println(WiFi.localIP());
- server.begin();
-}
-
-void loop(){
- WiFiClient client = server.available(); // Listen for incoming clients
-
- if (client) { // If a new client connects,
- currentTime = millis();
- previousTime = currentTime;
- Serial.println("New Client."); // print a message out in the serial port
- String currentLine = ""; // make a String to hold incoming data from the client
- while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while the client's connected
- currentTime = millis();
- if (client.available()) { // if there's bytes to read from the client,
- char c = client.read(); // read a byte, then
- Serial.write(c); // print it out the serial monitor
- header += c;
- if (c == '\n') { // if the byte is a newline character
- // if the current line is blank, you got two newline characters in a row.
- // that's the end of the client HTTP request, so send a response:
- if (currentLine.length() == 0) {
- // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
- // and a content-type so the client knows what's coming, then a blank line:
- client.println("HTTP/1.1 200 OK");
- client.println("Content-type:text/html");
- client.println("Connection: close");
- client.println();
-
- // turns the GPIOs on and off
- if (header.indexOf("GET /26/on") >= 0) {
- Serial.println("GPIO 26 on");
- output26State = "on";
- digitalWrite(output26, HIGH);
- } else if (header.indexOf("GET /26/off") >= 0) {
- Serial.println("GPIO 26 off");
- output26State = "off";
- digitalWrite(output26, LOW);
- } else if (header.indexOf("GET /27/on") >= 0) {
- Serial.println("GPIO 27 on");
- output27State = "on";
- digitalWrite(output27, HIGH);
- } else if (header.indexOf("GET /27/off") >= 0) {
- Serial.println("GPIO 27 off");
- output27State = "off";
- digitalWrite(output27, LOW);
- }
-
- // Display the HTML web page
- client.println("");
- client.println("");
- client.println("");
- // CSS to style the on/off buttons
- // Feel free to change the background-color and font-size attributes to fit your preferences
- client.println("");
-
- // Web Page Heading
- client.println("
ESP32 Web Server
");
-
- // Display current state, and ON/OFF buttons for GPIO 26
- client.println("
GPIO 26 - State " + output26State + "
");
- // If the output26State is off, it displays the ON button
- if (output26State=="off") {
- client.println("
");
- } else {
- client.println("
");
- }
-
- // Display current state, and ON/OFF buttons for GPIO 27
- client.println("
GPIO 27 - State " + output27State + "
");
- // If the output27State is off, it displays the ON button
- if (output27State=="off") {
- client.println("
");
- } else {
- client.println("
");
- }
- client.println("");
-
- // The HTTP response ends with another blank line
- client.println();
- // Break out of the while loop
- break;
- } else { // if you got a newline, then clear currentLine
- currentLine = "";
- }
- } else if (c != '\r') { // if you got anything else but a carriage return character,
- currentLine += c; // add it to the end of the currentLine
- }
- }
- }
- // Clear the header variable
- header = "";
- // Close the connection
- client.stop();
- Serial.println("Client disconnected.");
- Serial.println("");
- }
-}
diff --git a/vulpes/include/README b/include/README
similarity index 100%
rename from vulpes/include/README
rename to include/README
diff --git a/vulpes/lib/README b/lib/README
similarity index 100%
rename from vulpes/lib/README
rename to lib/README
diff --git a/vulpes/platformio.ini b/platformio.ini
similarity index 100%
rename from vulpes/platformio.ini
rename to platformio.ini
diff --git a/vulpes/src/config.h.default b/src/config.h.default
similarity index 100%
rename from vulpes/src/config.h.default
rename to src/config.h.default
diff --git a/vulpes/src/main.cpp b/src/main.cpp
similarity index 100%
rename from vulpes/src/main.cpp
rename to src/main.cpp
diff --git a/vulpes/src/morse.cpp b/src/morse.cpp
similarity index 100%
rename from vulpes/src/morse.cpp
rename to src/morse.cpp
diff --git a/vulpes/src/morse.h b/src/morse.h
similarity index 100%
rename from vulpes/src/morse.h
rename to src/morse.h
diff --git a/test.html b/test.html
new file mode 100644
index 0000000..e5dfd4b
--- /dev/null
+++ b/test.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
Access Point: Connect to wireless network "vulpes" and point your browser to URL http://192.168.0.1 (http, not https)
- Existing Network (advanced): Connect to the same existing network and use the proper IP address (useful if you have access to the router or a serial connection).
+ Existing Network (advanced): Connect to the same existing network and use the proper IP address (useful if you have access to the router or a serial connection).
+ If an existing network can't be connected to, an access point will be set up.
@@ -406,10 +407,13 @@ void setup() {
const char* password_char = yourInputPassword.c_str();
WiFi.begin(ssid_char, password_char);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
- Serial.println("WiFi Failed!");
+ Serial.println("WiFi Failed! Setting up access point 'vulpes'...");
// If you fail to connect, act as new access point
+ WiFi.disconnect(true);
WiFi.softAPConfig(local_ip, gateway, subnet);
WiFi.softAP(ssid_ap, password_ap);
+ // update the file so the webform is right
+ writeFile(SPIFFS, "/inputNetwork.txt", "0");
//return;
}
Serial.print("IP Address: ");
From 0478506e870ca9dde7ea90a683ab40aa0c095cc2 Mon Sep 17 00:00:00 2001
From: mattbk
Date: Wed, 27 Sep 2023 20:56:37 -0500
Subject: [PATCH 9/9] Add confirmation so people don't click the wrong button.
---
src/main.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main.cpp b/src/main.cpp
index c15d0c0..45d96c3 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -188,7 +188,7 @@ const char index_html[] PROGMEM = R"rawliteral(