main/automation.c

changeset 121
30aca5888d2b
parent 119
1cef3c25426b
child 126
e133a292ad21
--- a/main/automation.c	Tue Nov 02 14:47:43 2021 +0100
+++ b/main/automation.c	Sat Jun 25 15:24:55 2022 +0200
@@ -109,7 +109,7 @@
 		log_msg(TAG, "Automation startup");
 #ifdef CONFIG_TEMP_SENSORS_SIMULATOR
 		Fake_MLT = recipe.MashStep[0].Step_temp - 10;
-		Fake_HLT = recipe.SpargeTemp - 15;
+		Fake_HLT = recipe.SpargeTemp - 45;
                 if (xSemaphoreTake(xSemaphoreDS18B20, 10) == pdTRUE) {
                     ds18b20_state->mlt_temperature = ((int)(Fake_MLT * 16)) / 16.0;
                     ds18b20_state->hlt_temperature = ((int)(Fake_HLT * 16)) / 16.0;
@@ -594,16 +594,21 @@
 		ESP_LOGD(TAG, "Use HLT %s", (_UseHLT)?"true":"false");
                 updateRuntime = true;
                 if (_UseHLT) {
-                    /*
-                     * Calculate HLT setpoint for pre-heat. Substract the
-                     * available Mash rest times, asume 0.5 degrees/minute
-                     * heat capacity during mash.
-                     */
+		    /*
+		     * Calculate HLT setpoint for pre-heat.
+		     * Substract the available Mash rest plus ramp times,
+		     * asume 0.67 degrees/minute heat capacity during mash.
+		     */
                     int AvailableTime = 0;
-                    for (int i = 1; i < 6; i++) // Only normal Mash steps
-                        AvailableTime += recipe.MashStep[i].Step_time;
+                    for (int i = 0; i < recipe.Mashsteps; i++) {
+			if (recipe.MashStep[i].Step_temp < 75) {
+                            AvailableTime += (recipe.MashStep[i].Step_time + recipe.MashStep[i].Ramp_time);
+			}
+		    }
                     if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) {
-                        driver_state->hlt_sp = recipe.SpargeTemp - ((AvailableTime / 2) + 2);
+                        driver_state->hlt_sp = recipe.SpargeTemp - ((AvailableTime / 1.5) + 2);
+			if (driver_state->hlt_sp < 10.0)
+			    driver_state->hlt_sp = 10.0;
                         log_msg(TAG, "HLT preheat set to %4.2f", driver_state->hlt_sp);
                         xSemaphoreGive(xSemaphoreDriver);
                     }

mercurial