From 318df373c17eef7f1366c148e2ae680e8c3466d0 Mon Sep 17 00:00:00 2001 From: Joe Tretter Date: Thu, 16 Jun 2022 17:41:25 -0500 Subject: [PATCH] add OTA --- src/main.cpp | 194 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 182 insertions(+), 12 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 37a439b..e812290 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,24 +1,194 @@ #include +#include +#include +#include +#include +#include + +const char* host = "esp32gragedoor"; +const char* ssid = "JoNelsDarlings"; +const char* password = "Paris2016"; const int buttonPin = 4; // Reed switch - don't forget the pull down resistor. const int ledPin = 2; // Internal LED -void setup() { +int previousState; +WebServer server(80); + +/* + * Login page + */ + +const char* loginIndex = + "
" + "" + "" + "" + "
" + "
" + "" + "" + "" + "" + "
" + "
" + "" + "" + "" + "
" + "
" + "" + "" + "" + "" + "
" + "
ESP32 Login Page
" + "
" + "
Username:
Password:
" +"
" +""; + +/* + * Server Index Page + */ + +const char* serverIndex = +"" +"
" + "" + "" + "
" + "
progress: 0%
" + ""; + +/* + * setup function + */ +void setup(void) { Serial.begin(9600); - // initialize the pushbutton pin as an input + delay(500); + + Serial.println(">>>>>>>>>> Garage Door Monitor <<<<<<<<<<<<<<"); pinMode(buttonPin, INPUT); - // initialize the LED pin as an output pinMode(ledPin, OUTPUT); + + // if we stat up we need to see what the status is... + previousState= digitalRead(buttonPin); + Serial.printf("Initial State: %d",previousState); + // Connect to WiFi network + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + /*use mdns for host name resolution*/ + if (!MDNS.begin(host)) { //http://esp32ota.local + Serial.println("Error setting up MDNS responder!"); + while (1) { + delay(1000); + } + } + Serial.println("mDNS responder started"); + /*return index page which is stored in serverIndex */ + server.on("/", HTTP_GET, []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/html", loginIndex); + }); + server.on("/serverIndex", HTTP_GET, []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/html", serverIndex); + }); + /*handling uploading firmware file */ + server.on("/update", HTTP_POST, []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK"); + ESP.restart(); + }, []() { + HTTPUpload& upload = server.upload(); + if (upload.status == UPLOAD_FILE_START) { + Serial.printf("Update: %s\n", upload.filename.c_str()); + if (!Update.begin(UPDATE_SIZE_UNKNOWN)) { //start with max available size + Update.printError(Serial); + } + } else if (upload.status == UPLOAD_FILE_WRITE) { + /* flashing firmware to ESP*/ + if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { + Update.printError(Serial); + } + } else if (upload.status == UPLOAD_FILE_END) { + if (Update.end(true)) { //true to set the size to the current progress + Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize); + } else { + Update.printError(Serial); + } + } + }); + server.begin(); } -void loop() { - int buttonState = digitalRead(buttonPin); - Serial.println(buttonState); +void loop(void) { + server.handleClient(); + delay(1000); - if (buttonState == HIGH) { - digitalWrite(ledPin, HIGH); - } else { - digitalWrite(ledPin, LOW); + int buttonState = digitalRead(buttonPin); + + if (buttonState!=previousState){ + if (buttonState == HIGH) { + digitalWrite(ledPin, HIGH); + Serial.println("Garage Opened"); + } else { + digitalWrite(ledPin, LOW); + Serial.println("Garage Closed"); + } + previousState=buttonState; } - delay(500); -} \ No newline at end of file +}