🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    M5Paper: can't reconnect to WiFi after 'esp_light_sleep' (on power)

    Scheduled Pinned Locked Moved Arduino
    1 Posts 1 Posters 2.3k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Hamnet
      last edited by Hamnet

      I'm working on an app for M5Paper which will spend most of it's time asleep or shutdown; waking every few hours to check data from the internet (and depending on the results, either update the display or don't).

      So the loop function attempts to connect to WiFi and load the data, then disconnects; then either updates the display or doesn't; then attempts to shutdown. If the M5paper is on power, then the M5.shutdown command has no effect, so the code then calls esp_light_sleep_start.

      When it wakes up, if the unit is on battery (so it's a complete start-up) it all works as normal. If it is on power (so it's just resuming after 'light sleep') then it fails to connect to WiFi.

      If I replace the call to esp_light_sleep_start with a call to delay for the same period, then it connects repeatedly without issue.

      A summary of the code (this is using the WiFiMulti (ESP8266WiFiMulti) library by Markus Sattler, dated 16.05.2015, to support working across several locations with different WiFi availability):

      WiFiMulti wifiMulti;
      
      boolean connectToWifi()
      {
        uint8_t tRes;
      
        for (int i = 0; i < NUMWIFINETWORKS; i++) {
          wifiMulti.addAP(aWifiNetworks[i], aWifiPasswords[i]);
        }
      
        Serial.printf("Connecting Wifi... trying %d networks\n", NUMWIFINETWORKS);
        if ((tRes = wifiMulti.run()) == WL_CONNECTED) {
          Serial.print("WiFi connected ");
          Serial.println(WiFi.SSID());
          Serial.print("IP address: ");
          Serial.println(WiFi.localIP());
          return true;
        } else {
          Serial.printf("Failed to connnect to WiFi: %d.\n", tRes);
        }
      
        return false;
      }
      
      void disconnectFromWifi()
      {
        Serial.println("disconnecting from WiFi");
        WiFi.disconnect();
      }
      

      Evidently something in the course of esp_light_sleep_start 'breaks' something that the WiFi needs, so I need to reset it. But I don't know what, or how I can reset it!

      Can anyone shed any light?

      1 Reply Last reply Reply Quote 0

      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

      With your input, this post could be even better 💗

      Register Login
      • First post
        Last post