From 79c59138977ec4abd804e52217a4f6e5d307c65f Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Fri, 16 Sep 2022 23:04:17 +0300 Subject: esp32-cam: try reconnecting to wifi when connection is lost... --- esp32-cam/CameraWebServer/CameraWebServer.ino | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/esp32-cam/CameraWebServer/CameraWebServer.ino b/esp32-cam/CameraWebServer/CameraWebServer.ino index bc95f76..ef589d9 100644 --- a/esp32-cam/CameraWebServer/CameraWebServer.ino +++ b/esp32-cam/CameraWebServer/CameraWebServer.ino @@ -35,11 +35,22 @@ // =========================== #include "wifi_password.h" +volatile float disconnected_since = 0; + 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() { Serial.begin(115200); - Serial.setDebugOutput(true); + //Serial.setDebugOutput(true); Serial.println(); camera_config_t config; @@ -123,6 +134,9 @@ void setup() { s->set_vflip(s, 1); #endif + WiFi.onEvent(onWiFiDisconnect, ARDUINO_EVENT_WIFI_STA_DISCONNECTED); + WiFi.onEvent(onWiFiConnect, ARDUINO_EVENT_WIFI_STA_CONNECTED); + WiFi.begin(ssid, password); WiFi.setSleep(false); @@ -141,6 +155,11 @@ void setup() { } 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 delay(10000); } -- cgit v1.2.3