add outdoor threshold

This commit is contained in:
Hendrik Schutter 2025-03-01 15:17:22 +01:00
parent 3771a83fcc
commit fa958dd53b

View File

@ -10,9 +10,11 @@
#define PERIODIC_INTERVAL 1U // run control loop every 1sec
#define RETURN_FLOW_TEMPERATURE_LOWER_LIMIT_DAY 30.0
#define RETURN_FLOW_TEMPERATURE_LOWER_LIMIT_NIGHT 25.0
#define CHAMPER_TEMPERATURE_TARGET 80.0
#define RETURN_FLOW_TEMPERATURE_LOWER_LIMIT_DAY 30.0f
#define RETURN_FLOW_TEMPERATURE_LOWER_LIMIT_NIGHT 25.0f
#define CHAMPER_TEMPERATURE_TARGET 80.0f // Max cut off temperature, burner will stop if chamber is even or higher
#define CHAMPER_TEMPERATURE_THRESHOLD 45.0f // Min threshold temperature for enabling burner, burner will only start if chamber is even or lower
#define OUTDOOR_TEMPERATURE_THRESHOLD 15.0f // Min threshold temperature for enabling burner, burner will only start if outdoor is even or lower
#define BURNER_FAULT_DETECTION_THRESHOLD (60U * 3U) // Detect burner fault if after 3 minutes no burner start detected
static const char *TAG = "smart-oil-heater-control-system-control";
@ -132,15 +134,26 @@ void taskControl(void *pvParameters)
if ((bHeatingInAction == false) && (bBurnerFaultDetected == false))
{
if ((getReturnFlowTemperature().average60s.fValue <= currentControlEntry.fReturnFlowTemperature) && (getChamberTemperature().fCurrentValue <= 45.0))
if ((getReturnFlowTemperature().average60s.fValue <= currentControlEntry.fReturnFlowTemperature) && (getChamberTemperature().fCurrentValue <= CHAMPER_TEMPERATURE_THRESHOLD))
{
ESP_LOGI(TAG, "Return Flow Target Temperature reached: Enable Burner");
bHeatingInAction = true;
setCirculationPumpState(ENABLED);
setBurnerState(ENABLED);
setSafetyControlState(ENABLED);
i64BurnerEnableTimestamp = esp_timer_get_time();
sControlState = CONTROL_HEATING;
if (getOutdoorTemperature().average60s.fValue >= OUTDOOR_TEMPERATURE_THRESHOLD)
{
ESP_LOGI(TAG, "Outdoor temperature too warm: Waiting for winter.");
setCirculationPumpState(DISABLED);
setBurnerState(DISABLED);
setSafetyControlState(DISABLED);
sControlState = CONTROL_OUTDOOR_TOO_WARM;
}
else
{
ESP_LOGI(TAG, "Return Flow Target Temperature reached: Enable Burner");
bHeatingInAction = true;
setCirculationPumpState(ENABLED);
setBurnerState(ENABLED);
setSafetyControlState(ENABLED);
i64BurnerEnableTimestamp = esp_timer_get_time();
sControlState = CONTROL_HEATING;
}
}
else
{