![]()
Das musst Du im Verbund sehen - ich hab die Kommentare reingefügt.
void handleRootPath()
{
Serial.print("Requesting temperatures...");
server.send(200, "text/plain", String(temperatur));
Serial.print("DONE by: ");
lastRequest = millis(); // Bei jedem Request wird sich die aktuelle Zeit gemerkt
Serial.println(lastRequest);
}
void restartESP()
{
const unsigned long zeit = 1200000; // Das ist meine Zeitbasis
static unsigned long intervall = zeit ; // setze das erste Intervall mit der Zeitbasis
// Wenn die aktuelle Zeit abzüglich des Merkers > des Intervall
if (millis() - lastRequest > intervall)
{
// darf ich lastRequest nicht zurücksetzen, sondern muss für den nächsten
// Durchlauf das Intervall erhöhen, denn sonst
intervall += zeit;
// stimmt hier die Berechnung des Zeitraumes nicht
Serial.print("letzter Request "); Serial.println(millis() - lastRequest);
Serial.println("Es sind über 2 Minuten vergangen ");
// Hier prüfe ich, ob das intervall jetzt > das Fünfache der Basis ist (also eigentlich sollten es 10 Minuten sein)
if (intervall > 5 * zeit)
{
// und würde erst dann resetten
Serial.println("Restart ESP");
ESP.restart(); //ESP reset
}
}
}
Zwei Dinge:
Die Zeitbasis hat eine 0 zuviel - siehe auch das eingebaute Serial.println.
die Variable intervall ist static initiallisiert. Das heist sie bekommt beiom ersten Aufruf den zugewiesenen Wert und vergisst den nicht, wenn die Funktion verlassen wird.
Also ähnlich deiner altZeit. Allerdings ist die eben nur in der Funktion gültig und kann auch nur da verändert werden.
Das mit dem zaehler (5*zeit) habe ich absichtlich gemacht, damit evtl, kurze Ausfälle der Verbindung nicht zum sofortigen Reset führen. Das wäre jetzt erst nach 10 Minuten der Fall. Bei einer Temp-Messung vollkommen ausreichend.