Moin,
ich hatte mich auch mit dem Lightsleep Mode beschäftigt, weil nur in
diesem Mode die GPIO-Ausgänge ihren Output festhalten ...
Dabei bin ich in Beispielen auf einen dort erwähnten Fehler gestoßen,
der behoben wurde, indem nach dem wifi_fpm_do_sleep ein delay mit einer
Zeit, die länger ist als die sleep-zeit eingebaut werden muss. Der
Sleepmode startet dann und der callback wird (zumindest bei mir) dann
nach der Zeit ausgeführt.
Hier ein Schnipsel (mit ein paar Debug-Ausgaben):
1 | Serial.println("3 >>>>>>>>>>>> Enter light sleep mode for 10 Sec");
|
2 | Serial.flush();
|
3 |
|
4 | // Here all the code to put con light sleep
|
5 | // the problem is that there is a bug on this
|
6 | // process
|
7 | //wifi_station_disconnect(); //not needed
|
8 | WiFi.mode(WIFI_STA);
|
9 |
|
10 | uint32_t sleep_time_in_ms = 10000;
|
11 | wifi_set_opmode(NULL_MODE);
|
12 | wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
|
13 | wifi_fpm_open();
|
14 | wifi_fpm_set_wakeup_cb(callback);
|
15 |
|
16 | wifi_fpm_do_sleep(sleep_time_in_ms *1000 );
|
17 |
|
18 | Serial.println("Delay after sleep mode START");
|
19 | delay(sleep_time_in_ms + 1);
|
20 |
|
21 | Serial.println("Exit light sleep mode");
|
22 | wifi_set_sleep_type(NONE_SLEEP_T);
|
1 | void callback() {
|
2 | Serial.println("4 >>>>>>>>>>>> Callback");
|
3 | Serial.flush();
|
4 | }
|
Probier es mal aus.
Gruß
A.