Skip to content

Commit bf0474b

Browse files
committedApr 21, 2023
esp32 esp web tools fix
1 parent 5a3a9ef commit bf0474b

5 files changed

+23
-70
lines changed
 

‎src/BootstrapManager.cpp

+6-47
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,18 @@
2020
#include "BootstrapManager.h"
2121

2222

23-
void BootstrapManager::littleFsInit() {
23+
/********************************** BOOTSTRAP FUNCTIONS FOR SETUP() *****************************************/
24+
void BootstrapManager::bootstrapSetup(void (*manageDisconnections)(), void (*manageHardwareButton)(), void (*callback)(char*, byte*, unsigned int)) {
25+
2426
#if defined(ESP8266)
2527
if (!LittleFS.begin()) {
2628
#elif defined(ESP32)
27-
if (!LittleFS.begin(true)) {
29+
if (!LittleFS.begin(true)) {
2830
#endif
2931
Serial.println("LittleFS mount failed");
3032
return;
3133
}
32-
}
33-
34-
/********************************** BOOTSTRAP FUNCTIONS FOR SETUP() *****************************************/
35-
void BootstrapManager::bootstrapSetup(void (*manageDisconnections)(), void (*manageHardwareButton)(), void (*callback)(char*, byte*, unsigned int)) {
3634

37-
littleFsInit();
3835
if (isWifiConfigured() && !forceWebServer) {
3936
isConfigFileOk = true;
4037
// Initialize Wifi manager
@@ -54,29 +51,6 @@ void BootstrapManager::bootstrapSetup(void (*manageDisconnections)(), void (*man
5451

5552
}
5653

57-
/********************************** BOOTSTRAP FUNCTIONS FOR SETUP() *****************************************/
58-
void BootstrapManager::bootstrapSetup(void (*manageDisconnections)(), void (*manageHardwareButton)(), void (*callback)(char*, byte*, unsigned int), bool waitImprov, void (*listener)()) {
59-
60-
littleFsInit();
61-
if (isWifiConfigured() && !forceWebServer) {
62-
isConfigFileOk = true;
63-
// Initialize Wifi manager
64-
wifiManager.setupWiFi(manageDisconnections, manageHardwareButton);
65-
// Initialize Queue Manager
66-
if (mqttIP.length() > 0) {
67-
QueueManager::setupMQTTQueue(callback);
68-
} else {
69-
Serial.println(F("Skip MQTT connection."));
70-
}
71-
// Initialize OTA manager
72-
WifiManager::setupOTAUpload();
73-
} else {
74-
isConfigFileOk = false;
75-
launchWebServerCustom(waitImprov, listener);
76-
}
77-
78-
}
79-
8054
/********************************** BOOTSTRAP FUNCTIONS FOR LOOP() *****************************************/
8155
bool rcpResponseSent = false;
8256
void BootstrapManager::bootstrapLoop(void (*manageDisconnections)(), void (*manageQueueSubscription)(), void (*manageHardwareButton)()) {
@@ -470,6 +444,7 @@ bool BootstrapManager::isWifiConfigured() {
470444
StaticJsonDocument<BUFFER_SIZE> mydoc = readLittleFS("setup.json");
471445
if (mydoc.containsKey("qsid")) {
472446
Serial.println("Storage OK, restoring WiFi and MQTT config.");
447+
deviceName = Helpers::getValue(mydoc["deviceName"]);
473448
microcontrollerIP = Helpers::getValue(mydoc["microcontrollerIP"]);
474449
qsid = Helpers::getValue(mydoc["qsid"]);
475450
qpass = Helpers::getValue(mydoc["qpass"]);
@@ -479,7 +454,6 @@ bool BootstrapManager::isWifiConfigured() {
479454
mqttuser = Helpers::getValue(mydoc["mqttuser"]);
480455
mqttpass = Helpers::getValue(mydoc["mqttpass"]);
481456
additionalParam = Helpers::getValue(mydoc["additionalParam"]);
482-
deviceName = Helpers::getValue(mydoc["deviceName"]);
483457
return true;
484458
} else {
485459
Serial.println("No setup file");
@@ -493,13 +467,6 @@ bool BootstrapManager::isWifiConfigured() {
493467
void BootstrapManager::launchWebServerForOTAConfig() {
494468

495469
#if (IMPROV_ENABLED > 0)
496-
manageImprov();
497-
#endif
498-
return WifiManager::launchWebServerForOTAConfig();
499-
500-
}
501-
502-
void BootstrapManager::manageImprov() {
503470
unsigned long timeNowStatus = 0;
504471
bool switchToWebServer = false;
505472
// If WiFi is not configured, handle improv packet for 15 seconds, then switch to settinigs managed by web server
@@ -511,16 +478,8 @@ void BootstrapManager::manageImprov() {
511478
}
512479
wifiManager.manageImprovWifi();
513480
}
514-
}
515-
516-
void BootstrapManager::launchWebServerCustom(bool waitImprov, void (*listener)()) {
517-
518-
#if (IMPROV_ENABLED > 0)
519-
if (waitImprov) {
520-
manageImprov();
521-
}
522481
#endif
523-
return WifiManager::launchWebServerCustom(listener);
482+
return WifiManager::launchWebServerForOTAConfig();
524483

525484
}
526485

‎src/BootstrapManager.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ class BootstrapManager {
4545
// using JsonDocument = StaticJsonDocument<BUFFER_SIZE>;
4646
StaticJsonDocument<BUFFER_SIZE> parseQueueMsg(char* topic, byte* payload, unsigned int length); // print the message arriving from the queue
4747
StaticJsonDocument<BUFFER_SIZE> parseHttpMsg(String payload, unsigned int length); // print the message arriving from HTTP
48-
void littleFsInit();
4948
void bootstrapSetup(void (*manageDisconnectionFunction)(), void (*manageHardwareButton)(), void (*callback)(char*, byte*, unsigned int)); // bootstrap setup()
50-
void bootstrapSetup(void (*manageDisconnectionFunction)(), void (*manageHardwareButton)(), void (*callback)(char*, byte*, unsigned int), bool waitImprov, void (*listener)()); // bootstrap setup()
5149
void bootstrapLoop(void (*manageDisconnectionFunction)(), void (*manageQueueSubscription)(), void (*manageHardwareButton)()); // bootstrap loop()
5250
static void setMQTTWill(const char *topic, const char *payload, int qos, boolean retain, boolean cleanSession); // set the last will parameters for mqtt
5351
static void publish(const char *topic, const char *payload, boolean retained); // send a message on the queue
@@ -66,9 +64,8 @@ class BootstrapManager {
6664
[[maybe_unused]] String readValueFromFile(const String& filenameToUse, const String& paramName); // read a param from a json file
6765
static bool isWifiConfigured(); // check if wifi is correctly configured
6866
void launchWebServerForOTAConfig(); // if no ssid available, launch web server to get config params via browser
69-
void launchWebServerCustom(bool waitImprov, void (*listener)()); // if no ssid available, launch web server to get config params via browser
7067
static int getWifiQuality(); // get the wifi quality
71-
void manageImprov();
68+
7269
};
7370

7471
#endif

‎src/QueueManager.cpp

+14-1
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,25 @@ void QueueManager::mqttReconnect(void (*manageDisconnections)(), void (*manageQu
110110
Helpers::smartPrintln(F("MQTT attempts="));
111111
Helpers::smartPrintln(mqttReconnectAttemp);
112112
helper.smartDisplay();
113+
114+
if (mqttReconnectAttemp > 15) {
115+
// if fastDisconnectionManagement we need to execute the callback immediately,
116+
// example: power off a watering system can't wait MAX_RECONNECT attemps
117+
if (fastDisconnectionManagement) {
118+
manageDisconnections();
119+
Helpers::smartPrintln(F("Disconnecting WiFi."));
120+
WiFi.reconnect();
121+
}
122+
}
123+
113124
// after MAX_RECONNECT attemps all peripherals are shut down
114-
if (mqttReconnectAttemp >= MAX_RECONNECT || fastDisconnectionManagement) {
125+
if (mqttReconnectAttemp >= MAX_RECONNECT) {
115126
Helpers::smartPrintln(F("Max retry reached, powering off peripherals."));
116127
helper.smartDisplay();
117128
// Manage disconnections, powering off peripherals
118129
manageDisconnections();
130+
Helpers::smartPrintln(F("Disconnecting WiFi."));
131+
WiFi.reconnect();
119132
} else if (mqttReconnectAttemp > 10000) {
120133
mqttReconnectAttemp = 0;
121134
}

‎src/WifiManager.cpp

+2-17
Original file line numberDiff line numberDiff line change
@@ -255,26 +255,11 @@ bool WifiManager::isWifiConfigured() {
255255
void WifiManager::launchWebServerForOTAConfig() {
256256

257257
WiFi.disconnect();
258-
Serial.println(F("Turning HotSpot On"));
258+
Serial.println("Turning HotSpot On");
259+
259260
setupAP();
260261
launchWeb();
261-
while (WiFi.status() != WL_CONNECTED) {
262-
delay(10);
263-
server.handleClient();
264-
}
265-
266-
}
267262

268-
void WifiManager::launchWebServerCustom(void (*listener)()) {
269-
270-
WiFi.disconnect();
271-
Serial.println(F("Turning HotSpot On"));
272-
WiFi.mode(WIFI_STA);
273-
WiFi.disconnect();
274-
delay(DELAY_200);
275-
WiFi.softAP(WIFI_DEVICE_NAME, "");
276-
listener();
277-
server.begin();
278263
while (WiFi.status() != WL_CONNECTED) {
279264
delay(10);
280265
server.handleClient();

‎src/WifiManager.h

-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ class WifiManager {
110110
static int getQuality();
111111
static bool isWifiConfigured(); // check if wifi is correctly configured
112112
static void launchWebServerForOTAConfig(); // if no ssid available, launch web server to get config params via browser
113-
static void launchWebServerCustom(void (*listener)()); // if no ssid available, launch web server to get config params via browser
114113
void manageImprovWifi(); // if no ssid available, launch web server to get config params via browser
115114
void handleImprovPacket();
116115
void sendImprovInfoResponse();

0 commit comments

Comments
 (0)