Wenn ich oben das aus dem SerMon sehe, dann fragt der Controller alle 40Sekunden?
Las den mal laufen - bis zum reset:
#include <Arduino.h>
#include <ESP8266WebServer.h>
#include <OneWire.h>
#include <DallasTemperature.h>
float temperatur; // globale Variable für Temperatur
unsigned long altzeit; // speicher für millis()
unsigned long lastRequest;
int x = 0;
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
const char *ssid = "xxx";
const char *pass = "xxx";
ESP8266WebServer server(80);
//---------------------------------------------------
int handleRootPath()
{
Serial.print("Requesting temperatures...");
server.send(200, "text/plain", String(temperatur));
Serial.print("DONE by: ");
lastRequest = millis();
Serial.println(lastRequest);
}
//---------------------------------------------------
void setup()
{
Serial.begin(115200);
// Start up the library
sensors.begin();
WiFi.persistent(false); // daten nicht in EEprom
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());
server.on("/", handleRootPath);
server.begin();
}
void loop()
{
server.handleClient();
restartESP();
getOneWireTemperature();
}
void getOneWireTemperature()
{
if (millis() - altzeit > 2000) // sind 2s vergangen ?
{
altzeit = millis();
temperatur = sensors.getTempCByIndex(0);
//Serial.print("Temperatur "); Serial.print(temperatur); Serial.print(" Startzeit "); Serial.println(millis() - lastRequest);
sensors.requestTemperatures();
}
}
void restartESP()
{
const unsigned long zeit = 1200000;
static unsigned long intervall = zeit ;
if (millis() - lastRequest > intervall)
{
intervall += zeit;
Serial.print("letzter Request "); Serial.println(millis() - lastRequest);
Serial.println("Es sind über 2 Minuten vergangen ");
if (intervall > 5 * zeit)
{
Serial.println("Restart ESP");
ESP.restart(); //ESP reset
}
}
}