diff --git a/Arduino/BTCDieselHeater/BTCDieselHeater.ino b/Arduino/BTCDieselHeater/BTCDieselHeater.ino index ec27dee..39e0d24 100644 --- a/Arduino/BTCDieselHeater/BTCDieselHeater.ino +++ b/Arduino/BTCDieselHeater/BTCDieselHeater.ino @@ -316,12 +316,18 @@ void setup() { #if USE_WIFI == 1 - initWifi(WiFi_TriggerPin, FAILEDSSID, FAILEDPASSWORD); + bool wifiConnected = initWifi(WiFi_TriggerPin, FAILEDSSID, FAILEDPASSWORD); #if USE_OTA == 1 initOTA(); #endif // USE_OTA #if USE_WEBSERVER == 1 - initWebServer(); + if(wifiConnected) { + DebugPort.println("Starting heater web server"); + initWebServer(); + } + else { + DebugPort.println("SKIPPED starting heater web server"); + } #endif // USE_WEBSERVER #endif // USE_WIFI diff --git a/Arduino/BTCDieselHeater/src/WiFi/BTCWebServer.cpp b/Arduino/BTCDieselHeater/src/WiFi/BTCWebServer.cpp index 560aa16..6bc0e27 100644 --- a/Arduino/BTCDieselHeater/src/WiFi/BTCWebServer.cpp +++ b/Arduino/BTCDieselHeater/src/WiFi/BTCWebServer.cpp @@ -52,13 +52,18 @@ void handleWMConfig() { } void handleReset() { server.send(200, "text/plain", "Resetting Wifi Settings!"); - DebugPort.println("diconnecting client and wifi"); + DebugPort.println("diconnecting client and wifi, then rebooting"); //client.disconnect(); // wifi_station_disconnect(); wm.disconnect(); wm.resetSettings(); + + delay(1000); + ESP.restart(); + + } void handleNotFound() { @@ -96,6 +101,13 @@ void initWebServer(void) { DebugPort.println("HTTP server started"); } + +void stopWebServer() +{ + server.close(); + webSocket.close(); +} + unsigned char cVal; bool doWebServer(void) { diff --git a/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.cpp b/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.cpp index 412f6cd..fffc1fb 100644 --- a/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.cpp +++ b/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.cpp @@ -23,18 +23,21 @@ #include "BTCWifi.h" #include "../Utility/DebugPort.h" #include +#include "esp_system.h" + // select which pin will trigger the configuration portal when set to LOW #define FAILEDSSID "BTCESP32" #define FAILEDPASSWORD "thereisnospoon" WiFiManager wm; +extern void stopWebServer(); unsigned int timeout = 120; // seconds to run for unsigned int startTime = millis(); bool isAP = false; bool portalRunning = false; -bool startCP = true; // start AP and webserver if true, else start only webserver +bool startCP = false;//true; // start AP and webserver if true, else start only webserver int TRIG_PIN; @@ -42,11 +45,21 @@ void configModeCallback (WiFiManager *myWiFiManager); void saveConfigCallback (); -void initWifi(int initpin,const char *failedssid, const char *failedpassword) +bool initWifi(int initpin,const char *failedssid, const char *failedpassword) { TRIG_PIN = initpin; pinMode(TRIG_PIN, INPUT_PULLUP); + uint8_t MAC[6]; + esp_read_mac(MAC, ESP_MAC_WIFI_STA); + char msg[64]; + sprintf(msg, "STA MAC address: %02X:%02X:%02X:%02X:%02X:%02X", MAC[0], MAC[1], MAC[2], MAC[3], MAC[4], MAC[5]); + DebugPort.println(msg); + esp_read_mac(MAC, ESP_MAC_WIFI_SOFTAP); + sprintf(msg, "AP MAC address: %02X:%02X:%02X:%02X:%02X:%02X", MAC[0], MAC[1], MAC[2], MAC[3], MAC[4], MAC[5]); + DebugPort.println(msg); + + //reset settings - wipe credentials for testing // wm.resetSettings(); @@ -71,6 +84,7 @@ void initWifi(int initpin,const char *failedssid, const char *failedpassword) if(isAP) { WiFi.softAPConfig(IPAddress(192, 168, 100, 1), IPAddress(192, 168, 100, 1), IPAddress(255,255,255,0)); } + return false; } else { //if you get here you have connected to the WiFi @@ -79,6 +93,7 @@ void initWifi(int initpin,const char *failedssid, const char *failedpassword) DebugPort.print("IP address: "); DebugPort.println(WiFi.localIP()); } + return true; } void doWiFiManager(){ @@ -101,6 +116,7 @@ void doWiFiManager(){ // is configuration portal requested? // if(TRIG_PIN == 1 && (!portalRunning)) { if(digitalRead(TRIG_PIN) == LOW && !portalRunning) { + stopWebServer(); if(startCP){ DebugPort.println("Button Pressed, Starting Config Portal"); wm.setConfigPortalBlocking(false); diff --git a/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.h b/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.h index 8ac1fc4..569ede4 100644 --- a/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.h +++ b/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.h @@ -27,7 +27,7 @@ #include void doWiFiManager(); - void initWifi(int initpin,const char *failedssid, const char *failedpassword); + bool initWifi(int initpin,const char *failedssid, const char *failedpassword); const char* getWifiAddrStr(); bool isWifiConnected(); bool isWifiAP();