Timer vom Deep Sleep auslesen

  • :conf:Hallo Leute!

    Habe das Problem mit einem ESP-07, dass ich nach einem Reset nicht rausbekomme wodurch er ausgelöst wurde. Mit dem ResetGrund funktioniert es nicht so richtig. Manchmal geht es und manchmal eben nicht (unterschiedliche Werte). Es kommt mir vor, als ob es ganz willkürlich ist. Habe es dann mal mit diesem DoppelReset probiert, das funktioniert auch nicht richtig. Immer im Wechsel einfacher Reset und dann DoppelReset ausgeführt, egal ob ich 10 mal einen einfachen Reset auslöse oder eben einen DoppelReset. Mit einer Verzögerung (delay) habe ich es auch probiert, ebenfalls nichts. Und jetzt meine eigentliche Frage. Habe gelesen, das man die Zeit nach einem Reset vom Deep Sleep aus einer Speicherzelle auslesen kann (soll angeblich erhalten bleiben)!? Wenn das funktionieren würde, dann kann ich bei einem Wert von "0" (Zeit abgelaufen) sagen, dass es durch das aufwachen aus dem Deep Sleep geschehen ist. Bei einem Wert größer "0" (dann ist die Zeit vom Deep Sleep ja noch nicht abgelaufen), könnte also man mit Sicherheit sagen, das es durch einen z. B. Bewegungsmelder geschehen ist! Ist es so richtig, dass die Restzeit erhalten bleibt? Wenn ja, mal bitte schreiben, wie man diese Zeit auslesen kann, würde es gerne selber mal testen, weis aber eben nicht wie! Wer mit noch einen Tipp bei den anderen Sachen geben kann immer her damit, würde mich sehr freuen. Wenn etwas noch unklar ist bitte schreiben.

    Besten Dank im voraus. :danke_ATDE:

  • Code
    1. rst_info *resetInfo;
    2. resetInfo = ESP.getResetInfoPtr();
    3. Serial.print("\nResetInfo: ");
    4. Serial.println(resetInfo->reason );

    Das geht nicht?

  • Doch das geht schon, habe ich auch probiert, aber die Werte sind manchmal unterschiedlich. Manchmal bekomme ich den Wert 5 (aufwachen aus dem Tiefschlaf) und beim nächsten mal bringt es mir den Wert 6 (aufwachen vom Schalter bzw. Bewegungsmelder) obwohl ich kein Reset am Taster gedrückt habe. Dabei habe ich beim Bewegungsmelder auch darauf geachtet, dass das ganze über einen Transistor negiert wird. Mit Pullup- und auch mit Pulldown-Widerständen habe ich das ganze auch schon getestet.

  • Intern die Zeit-Diff zu ermitteln geht meines Wissens beim ESP8266 nicht. Du müsstest:

    1. die richtige Zeit von einem Zeitserver holen

    2. diese im RTC-Memory speichern

    3. beim Start wieder die aktuelle Zeit von einem Zeitserver holen

    4. die gespeicherte Zeit vom RTC Memory lesen

    4. beide Zeiten vergleichen...


    Hatte bei meinem WEMOS (ESP12) auch festgestellt, dass da manchmal falsche Werte drin standen. Ich habe es auf die Verschaltung des WEMOS Board und dem ein/ausstecken des USB-Ports geschoben. Wobei bei meinem Prg. es nicht katastrophal ist ob der Reset-Reason immer korrekt gesetzt ist.


  • Danke Dir WernerPI, dass ist natürlich auch eine Variante.

    Hat vielleicht noch jemand anderes eine Möglichkeit für mich?

  • Hat denn keiner eine Ahnung wie man den DeepSleep-Timer ausliest oder welche Adressen dafür benutzt werden?

    Edited once, last by locke62 ().