diff --git a/ESPtermostat.ino b/ESPtermostat.ino index bbb14d1..f854b21 100644 --- a/ESPtermostat.ino +++ b/ESPtermostat.ino @@ -22,11 +22,12 @@ DallasTemperature sensor(&oneWire); //========== Init variables ========== -float temperature; +float avgTemperature; String metrics; bool heating; float reqTemp = 21.5; float offset = 0.25; +float correction[3] = {CORRECTION1, CORRECTION2, CORRECTION3}; //================================= @@ -128,7 +129,7 @@ void setup() { String repply; if(request->hasParam("temp")) { - repply = String(temperature); + repply = String(avgTemperature); }else if(request->hasParam("relay")){ repply = String(heating); }else if(THERMOSTAT && request->hasParam("reqtemp")){ @@ -165,27 +166,45 @@ void notFound(AsyncWebServerRequest *request) { } void thermostatCheck(){ - if(temperature <= (reqTemp - offset)){ + if(avgTemperature <= (reqTemp - offset)){ heating = 1; digitalWrite(RELAY_PIN, !heating); - }else if(temperature >= (reqTemp + offset)){ + }else if(avgTemperature >= (reqTemp + offset)){ heating = 0; digitalWrite(RELAY_PIN, !heating); } } void readSensor() { - float tempC = sensor.getTempCByIndex(0); + uint8_t ds18Count = sensor.getDS18Count(); + float tempC[ds18Count]; + float temperature[ds18Count]; + float avgTemperature; + int savedTemperatures = 0; - if(tempC != DEVICE_DISCONNECTED_C){ - // read the actual temperature after it's been converted - temperature = tempC + CORRECTION; - // do what you need with the temperature here + for(int i=0; i