Skip to content

Wifi health check #47

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 17, 2025
Merged

Wifi health check #47

merged 3 commits into from
Jun 17, 2025

Conversation

tavdog
Copy link
Member

@tavdog tavdog commented Jun 17, 2025

We check for wifi connectivity and attempt reconnect and finally reboot. This is to catch power outages or wifi outages.

tavdog added 2 commits June 16, 2025 12:36
call wifi_health_check and if not connected start counting up to 10 and reboot if no connection. also reboot after 10 minutes of config portal waiting because might have gotten stuck there after power outage.
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @tavdog, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the device's network resilience by implementing a robust WiFi health check mechanism. It introduces automatic reconnection attempts and a system reboot as a fallback for persistent disconnections, both at startup and during runtime. Additionally, it includes minor adjustments to reduce logging verbosity in the graphics module.

Highlights

  • WiFi Health Check Implementation: Introduced a new wifi_health_check function that periodically verifies WiFi connectivity. If the device is disconnected, it attempts to reconnect and tracks consecutive failures.
  • System Reboot on Persistent Disconnection: Configured the system to automatically reboot if WiFi remains disconnected for 10 consecutive health checks (in wifi.c) or if the initial WiFi connection is not established within 10 minutes at startup (in main.c).
  • Periodic Health Check Integration: Integrated calls to the new wifi_health_check function into the main application loops to ensure continuous monitoring of network status.
  • Logging Reduction: Reduced verbose logging in the gfx.c file by commenting out several ESP_LOGI and ESP_LOGW statements related to WebP drawing and animation.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a WiFi health check mechanism with a reboot strategy. The feedback focuses on using named constants to improve code maintainability.

vTaskDelay(pdMS_TO_TICKS(1 * 1000));
if (counter > 600) esp_restart(); // after 10 minutes reboot because maybe we got stuck here after power outage or something.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The magic number 600 representing the WiFi connection timeout should be a named constant for better readability.

      if (counter > INITIAL_WIFI_CONNECT_TIMEOUT_SECONDS) esp_restart();

@@ -272,8 +275,9 @@ static bool has_saved_config = false;
ap_config.ap.max_connection = 4;
ap_config.ap.authmode = WIFI_AUTH_OPEN;
ap_config.ap.beacon_interval = 100; // Default beacon interval
// failure_retry_cnt ??

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Please clarify the purpose of the // failure_retry_cnt ?? comment, or remove it if it's no longer relevant.

src/wifi.c Outdated
}

// If counter reaches threshold, reboot the system
if (s_wifi_disconnect_counter >= 10) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The magic number 10 for the disconnect counter threshold should be a named constant for clarity.

    if (s_wifi_disconnect_counter >= MAX_WIFI_DISCONNECT_REBOOT_ATTEMPTS) {

if (s_wifi_disconnect_counter >= 10) {
ESP_LOGE(TAG, "WiFi disconnected for 10 consecutive checks. Rebooting system...");
// Wait a moment before rebooting
vTaskDelay(pdMS_TO_TICKS(1000));

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The magic number 1000 for the reboot delay should be a named constant for readability.

        vTaskDelay(pdMS_TO_TICKS(WIFI_HEALTH_REBOOT_DELAY_MS));

@tavdog
Copy link
Member Author

tavdog commented Jun 17, 2025

fixes #43

@tavdog tavdog merged commit b0d7ff9 into main Jun 17, 2025
1 check passed
@tavdog tavdog deleted the wifi_health_check branch June 29, 2025 22:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant