diff --git a/main/control.c b/main/control.c index f27a9a7..42eb184 100644 --- a/main/control.c +++ b/main/control.c @@ -15,7 +15,8 @@ #define RETURN_FLOW_TEMPERATURE_LOWER_LIMIT_NIGHT 25.0f #define CHAMBER_TEMPERATURE_TARGET 80.0f // Max cutoff temperature #define CHAMBER_TEMPERATURE_THRESHOLD 45.0f // Min threshold for burner enable -#define OUTDOOR_TEMPERATURE_THRESHOLD 13.0f // Min threshold for burner enable +#define SUMMER_MODE_TEMPERATURE_THRESHOLD_HIGH 20.0f // Summer mode will be activated +#define SUMMER_MODE_TEMPERATURE_THRESHOLD_LOW 15.0f // Summer mode will be deactivated --> Heating starts #define CIRCULATION_PUMP_TEMPERATURE_THRESHOLD 30.0f // Min threshold of chamber for circulation pump enable #define BURNER_FAULT_DETECTION_THRESHOLD (60U * 4U) // Burner fault detection after 4 minutes @@ -62,6 +63,7 @@ void initControl(void) void taskControl(void *pvParameters) { bool bHeatingInAction = false; + bool bSummerMode = false; eBurnerState eBurnerState = BURNER_UNKNOWN; int64_t i64BurnerEnableTimestamp = esp_timer_get_time(); @@ -101,10 +103,19 @@ void taskControl(void *pvParameters) sControlTemperatureEntry currentControlEntry = getCurrentTemperatureEntry(); + if (getOutdoorTemperature().average60s.fValue >= SUMMER_MODE_TEMPERATURE_THRESHOLD_HIGH) + { + bSummerMode = true; + } + else if (getOutdoorTemperature().average60s.fValue <= SUMMER_MODE_TEMPERATURE_THRESHOLD_LOW) + { + bSummerMode = false; + } + // Enable burner if outdoor temperature is low and return flow temperature is cooled down if (!bHeatingInAction && (eBurnerState != BURNER_FAULT)) { - if (getOutdoorTemperature().average60s.fValue >= OUTDOOR_TEMPERATURE_THRESHOLD) + if (bSummerMode) { // ESP_LOGI(TAG, "Outdoor temperature too warm: Disabling heating"); setBurnerState(DISABLED);