esp32-cam: try reconnecting to wifi when connection is lost...

This commit is contained in:
Evgeny Zinoviev 2022-09-16 23:04:17 +03:00
parent 9a736d13bf
commit 79c5913897

View File

@ -35,11 +35,22 @@
// =========================== // ===========================
#include "wifi_password.h" #include "wifi_password.h"
volatile float disconnected_since = 0;
void startCameraServer(); void startCameraServer();
void onWiFiDisconnect(WiFiEvent_t event, WiFiEventInfo_t info) {
disconnected_since = millis();
WiFi.reconnect();
}
void onWiFiConnect(WiFiEvent_t event, WiFiEventInfo_t info) {
disconnected_since = 0;
}
void setup() { void setup() {
Serial.begin(115200); Serial.begin(115200);
Serial.setDebugOutput(true); //Serial.setDebugOutput(true);
Serial.println(); Serial.println();
camera_config_t config; camera_config_t config;
@ -123,6 +134,9 @@ void setup() {
s->set_vflip(s, 1); s->set_vflip(s, 1);
#endif #endif
WiFi.onEvent(onWiFiDisconnect, ARDUINO_EVENT_WIFI_STA_DISCONNECTED);
WiFi.onEvent(onWiFiConnect, ARDUINO_EVENT_WIFI_STA_CONNECTED);
WiFi.begin(ssid, password); WiFi.begin(ssid, password);
WiFi.setSleep(false); WiFi.setSleep(false);
@ -141,6 +155,11 @@ void setup() {
} }
void loop() { void loop() {
if (disconnected_since != 0 && (millis() - disconnected_since) > 60000) {
ESP.restart();
return;
}
// Do nothing. Everything is done in another task by the web server // Do nothing. Everything is done in another task by the web server
delay(10000); delay(10000);
} }