Add WiFi reconnect watchdog to self-heal from wedged WiFi stack#2319
Merged
Conversation
When the network drops at runtime and the WiFi stack is wedged (e.g. the ESP32 driver getting stuck after a long uptime, see #2276), the main loop kept calling wifi_reconnect_bypass() forever with no recovery: the device stayed stale until a manual reboot. The reboot watchdog only existed in the ESPWifiManualSetup path, which the default WiFiManager build doesn't compile. Count consecutive reconnection failures in the runtime loop and ESPRestart(2) once they exceed maxRetryWatchDog, mirroring the existing manual-setup watchdog. Gated behind the new WifiReconnectWatchDog flag (default on) so environments where an unexpected reboot is undesirable can opt out; disabled for theengs-plug to avoid interrupting the relay state.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description:
When the network drops at runtime and the WiFi stack is wedged (e.g. the ESP32 driver getting stuck after a long uptime, see #2276), the main loop kept calling wifi_reconnect_bypass() forever with no recovery: the device stayed stale until a manual reboot. The reboot watchdog only existed in the ESPWifiManualSetup path, which the default WiFiManager build doesn't compile.
Count consecutive reconnection failures in the runtime loop and ESPRestart(2) once they exceed maxRetryWatchDog, mirroring the existing manual-setup watchdog. Gated behind the new WifiReconnectWatchDog flag (default on) so environments where an unexpected reboot is undesirable can opt out; disabled for theengs-plug to avoid interrupting the relay state.
Checklist: