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.