#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 startzeit; // Timeout
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...");
Serial.println("DONE");
server.send(200, "text/plain", String(temperatur));
x = 1;
return x;
}
//---------------------------------------------------
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() - startzeit);
sensors.requestTemperatures();
}
}
void restartESP()
{
// Serial.print("Startzeit ");Serial.println(millis() - startzeit);
if (x == 1) {
startzeit = millis();
x = 0;
}
if (millis() - startzeit > 120000) {
startzeit = millis();
Serial.print("Startzeit ");Serial.println(millis() - startzeit);
Serial.println("Es sind über 2 Minuten vergangen ");
Serial.println("Restart ESP");
ESP.restart(); //ESP reset
}
}