diff -r c7b8a9931b59 -r 2e90ada37476 main/automation.c --- a/main/automation.c Thu Jul 04 15:57:43 2019 +0200 +++ b/main/automation.c Thu Jul 04 21:46:12 2019 +0200 @@ -59,6 +59,21 @@ static const char *TAG = "automation"; +void change_sp(bool up) +{ + if (up) + stageTemp += 0.25; + else + stageTemp -= 0.25; + if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { + driver_state->mlt_sp = stageTemp; + xSemaphoreGive(xSemaphoreDriver); + } + log_msg(TAG, "Changed sp to %.2f", stageTemp); +} + + + /* * Automation init function that only runs once when a * new screen is entered. @@ -69,6 +84,7 @@ switch (Main_Screen) { case MAIN_AUTO_INIT1: + log_msg(TAG, "Automation startup"); #ifdef CONFIG_TEMP_SENSORS_SIMULATOR Fake_MLT = recipe.MashStep[0].Temperature - 10; Fake_HLT = recipe.SpargeTemp - 15; @@ -82,7 +98,7 @@ if (recipe.MashStep[i].Resttime) LastMashStep = i; } - ESP_LOGI(TAG, "Last mash step %d", LastMashStep); + log_msg(TAG, "Last mash step %d", LastMashStep); // Check for a crashed session. if (runtime.AutoModeStarted) { @@ -111,7 +127,7 @@ } xSemaphoreGive(xSemaphoreDriver); } - ESP_LOGI(TAG, "Resume brew screen %d, time left %d", Main_Screen, TimeLeft); + log_msg(TAG, "Resume brew screen %d, time left %d", Main_Screen, TimeLeft); log_begin((time_t)0); update_json(); log_annotation(ANNOTATION_SYSTEM, (char *)"Resume"); @@ -232,7 +248,7 @@ Buttons_Add( 5, 30, 60, 40, (char *)"+sp", 0); Buttons_Add(255, 30, 60, 40, (char *)"-sp", 1); Buttons_Show(); - ESP_LOGI(TAG, "Mash done, going to boil."); + log_msg(TAG, "Mash done, going to boil."); Sub_Screen = 0; break; @@ -262,7 +278,7 @@ Buttons_Add( 3, 190, 60, 40, (char *)"+1m", 2); Buttons_Add(257, 190, 60, 40, (char *)"-1m", 3); Buttons_Show(); - ESP_LOGI(TAG, "Boil temperature reached, boil %d minutes", (TimeLeft / 60) -1); + log_msg(TAG, "Boil temperature reached, boil %d minutes", (TimeLeft / 60) -1); log_annotation(ANNOTATION_STAGE, (char *)"Koken"); Sub_Screen = 0; break; @@ -345,11 +361,11 @@ TFT_setFont(DEJAVU24_FONT, NULL); if (Main_Screen == MAIN_AUTO_DONE) { TFT_print((char *)"Brouwen is gereed.", CENTER, CENTER); - ESP_LOGI(TAG, "Brew is done"); + log_msg(TAG, "Brew is done"); SoundPlay(SOUND_End); } else { TFT_print((char *)"Brouwen is afgebroken.", CENTER, CENTER); - ESP_LOGI(TAG, "Brew is aborted"); + log_msg(TAG, "Brew is aborted"); SoundPlay(SOUND_Warn); } log_close(); @@ -476,6 +492,7 @@ case 1: loop = false; Main_Screen = MAIN_AUTO_INIT2; + log_msg(TAG, "Brew `%s' on `%s'", recipe.Name, equipment.Name); break; default: break; @@ -533,6 +550,7 @@ } else { runtime.UseHLT = _UseHLT = false; } + log_msg(TAG, "Use HLT %s", (_UseHLT)?"true":"false"); updateRuntime = true; if (_UseHLT) { /* @@ -545,7 +563,7 @@ AvailableTime += recipe.MashStep[i].Resttime; if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { driver_state->hlt_sp = recipe.SpargeTemp - ((AvailableTime / 2) + 2); - ESP_LOGI(TAG, "HLT preheat set to %4.1f", driver_state->hlt_sp); + log_msg(TAG, "HLT preheat set to %4.2f", driver_state->hlt_sp); xSemaphoreGive(xSemaphoreDriver); } } @@ -569,6 +587,7 @@ if (driver_state->hlt_pv >= driver_state->hlt_sp) { Main_Screen = MAIN_AUTO_MASH_IN; driver_state->hlt_sp = recipe.SpargeTemp; // Set final setpoint + log_msg(TAG, "HLT preheat done"); } xSemaphoreGive(xSemaphoreDriver); } @@ -616,9 +635,9 @@ MashState = Sub_Screen = MASH_WAITTEMP; snprintf(msg, 255, "{\"main\":\"%d\",\"sub\":\"%d\",\"timer\":\"\"}", Main_Screen, Sub_Screen); ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); - ESP_LOGI(TAG, "Mash step %d type: %s time: %d temp: %4.1f min: %4.1f max: %4.1f", + log_msg(TAG, "Mash step %d type: %s time: %d sp: %4.2f sv: %4.3f", Main_Screen - MAIN_AUTO_MASH_IN, mashTypes[recipe.MashStep[Main_Screen - MAIN_AUTO_MASH_IN].Type], - stageTime, stageTemp, MinMash, MaxMash); + stageTime, stageTemp, temp_MLT); if (Main_Screen > MAIN_AUTO_MASH_IN) { // Do not annotate before the log is open. @@ -658,7 +677,7 @@ driver_state->mlt_mode = MLT_MODE_OFF; xSemaphoreGive(xSemaphoreDriver); } - ESP_LOGI(TAG, "Mash infusion prompt"); + log_msg(TAG, "Mash infusion prompt"); } else { Buttons_Add( 5, 30, 60, 40, (char *)"+sp", 0); Buttons_Add(255, 30, 60, 40, (char *)"-sp", 1); @@ -687,7 +706,7 @@ Resume = false; runtime.StageTimeLeft = TimeLeft / 60; updateRuntime = true; - ESP_LOGI(TAG, "Mash step %d temperature reached, rest time %d", Main_Screen - MAIN_AUTO_MASH_IN, TimeLeft / 60); + log_msg(TAG, "Mash step %d temperature reached, rest time %d", Main_Screen - MAIN_AUTO_MASH_IN, TimeLeft / 60); Buttons_Clear(); Buttons_Add( 0, 120, 60, 40, (char *)"+1m", 0); Buttons_Add(260, 120, 60, 40, (char *)"-1m", 1); @@ -695,20 +714,12 @@ } switch (Buttons_Scan()) { case 0: if (stageTemp < MaxMash) { - stageTemp += 0.25; - if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { - driver_state->mlt_sp = stageTemp; - xSemaphoreGive(xSemaphoreDriver); - } + change_sp(true); } break; case 1: if (stageTemp > MinMash) { - stageTemp -= 0.25; - if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { - driver_state->mlt_sp = stageTemp; - xSemaphoreGive(xSemaphoreDriver); - } + change_sp(false); } break; @@ -731,12 +742,12 @@ if (pumpTime >= equipment.PumpCycle) { if (! pumpRest) { pumpRest = true; - ESP_LOGI(TAG, "Pump rest"); + log_msg(TAG, "Pump rest"); } } else { if (pumpRest) { pumpRest = false; - ESP_LOGI(TAG, "Pump start"); + log_msg(TAG, "Pump start"); } } } @@ -745,6 +756,7 @@ case 0: TimeLeft += 60; runtime.StageTimeLeft = TimeLeft / 60; updateRuntime = true; + log_msg(TAG, "Changed resttime to %d", runtime.StageTimeLeft); break; case 1: if (TimeLeft < 60) @@ -753,6 +765,7 @@ TimeLeft -= 60; runtime.StageTimeLeft = TimeLeft / 60; updateRuntime = true; + log_msg(TAG, "Changed resttime to %d", runtime.StageTimeLeft); break; default: break; @@ -780,7 +793,7 @@ MashState = Sub_Screen = MASH_ADD; snprintf(msg, 63, "{\"main\":\"%d\",\"sub\":\"%d\",\"timer\":\"Mout storten?\"}", Main_Screen, Sub_Screen); ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); - ESP_LOGI(TAG, "Mash add prompt"); + log_msg(TAG, "Mash add prompt"); break; } if (((Main_Screen - MAIN_AUTO_MASH_IN) == LastMashStep) && config.AskIodine) { @@ -804,7 +817,7 @@ MashState = Sub_Screen = MASH_IODINE; snprintf(msg, 63, "{\"main\":\"%d\",\"sub\":\"%d\",\"timer\":\"Jodium test?\"}", Main_Screen, Sub_Screen); ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); - ESP_LOGI(TAG, "Mash iodine test prompt"); + log_msg(TAG, "Mash iodine test prompt"); break; } if ((Main_Screen == MAIN_AUTO_MASH_OUT) && config.AskRemove) { @@ -826,7 +839,7 @@ MashState = Sub_Screen = MASH_REMOVE; snprintf(msg, 63, "{\"main\":\"%d\",\"sub\":\"%d\",\"timer\":\"Mout verwijderen?\"}", Main_Screen, Sub_Screen); ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); - ESP_LOGI(TAG, "Mash remove prompt"); + log_msg(TAG, "Mash remove prompt"); break; } if (Main_Screen != MAIN_AUTO_ABORT) @@ -923,16 +936,14 @@ MLT_info(71, 26, true); switch (Buttons_Scan()) { - case 0: if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { - driver_state->mlt_sp += 0.25; - xSemaphoreGive(xSemaphoreDriver); - } + case 0: if (stageTemp < 105) { + change_sp(true); + } break; - case 1: if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { - driver_state->mlt_sp -= 0.25; - xSemaphoreGive(xSemaphoreDriver); - } + case 1: if (stageTemp > 80) { + change_sp(false); + } break; default: break; @@ -946,7 +957,7 @@ Resume = false; if (NewMinute) { if ((runtime.HopAddition < recipe.Additions) && (TimeLeft <= ((recipe.Addition[runtime.HopAddition].Time * 60) + 60))) { - ESP_LOGI(TAG, "Hop addition %d at %d minutes", runtime.HopAddition + 1, recipe.Addition[runtime.HopAddition].Time); + log_msg(TAG, "Hop addition %d at %d minutes", runtime.HopAddition + 1, recipe.Addition[runtime.HopAddition].Time); TopMessage(recipe.Addition[runtime.HopAddition].Name); log_annotation(ANNOTATION_EVENT, recipe.Addition[runtime.HopAddition].Name); SoundPlay(SOUND_AddHop); @@ -960,6 +971,7 @@ if (TimeLeft < 60) { if (Output) { log_annotation(ANNOTATION_STAGE, (char *)"Vlamuit"); + log_msg(TAG, "Boil flame off"); } // Flameout Output = 0; @@ -984,33 +996,35 @@ TimerShow(TimeLeft, 65, 190); switch (Buttons_Scan()) { - case 0: if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { - driver_state->mlt_sp += 0.25; - xSemaphoreGive(xSemaphoreDriver); - } + case 0: if (stageTemp < 105) { + change_sp(true); + } break; - case 1: if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { - driver_state->mlt_sp -= 0.25; - xSemaphoreGive(xSemaphoreDriver); - } + case 1: if (stageTemp > 80) { + change_sp(false); + } break; case 2: TimeLeft += 60; + log_msg(TAG, "Increase boiltime to %d minutes", TimeLeft / 60); break; case 3: if (TimeLeft > 60) TimeLeft -= 60; else TimeLeft = 0; + log_msg(TAG, "Decrease boiltime to %d minutes", TimeLeft / 60); break; case 4: if (BoilPower < 100) BoilPower++; + log_msg(TAG, "Increase boilpower to %d%%", BoilPower); break; case 5: if (BoilPower > 0) BoilPower--; + log_msg(TAG, "Decrease boilpower to %d%%", BoilPower); break; default: break; @@ -1018,7 +1032,7 @@ if (TimeLeft == 0) { Main_Screen = MAIN_AUTO_WHIRLPOOL9; - ESP_LOGI(TAG, "Boil is ready"); + log_msg(TAG, "Boil is ready"); } break; @@ -1058,7 +1072,7 @@ snprintf(msg, 63, "{\"main\":\"%d\",\"sub\":\"%d\",\"timer\":\"\"}", Main_Screen, Sub_Screen); ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); CoolBeep = false; - ESP_LOGI(TAG, "Start cooling from %6.2f to %4.1f", ds18b20_state->mlt_temperature, stageTemp); + log_msg(TAG, "Start cooling from %6.2f to %4.1f", ds18b20_state->mlt_temperature, stageTemp); if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { driver_state->mlt_mode = MLT_MODE_OFF; driver_state->mlt_sp = stageTemp; @@ -1121,6 +1135,7 @@ } xSemaphoreGive(xSemaphoreDriver); } + log_msg(TAG, "Increase sp to %.2f", driver_state->mlt_sp); break; case 0: Buttons_Add( 60, 150, 90, 40, (char *)"Stoppen", 4); @@ -1142,6 +1157,7 @@ } xSemaphoreGive(xSemaphoreDriver); } + log_msg(TAG, "Decrease sp to %.2f", driver_state->mlt_sp); break; case 3: if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { @@ -1154,6 +1170,7 @@ driver_state->pump_run = 0; } runtime.PumpCooling = driver_state->pump_run; + log_msg(TAG, "Pump turned %s", (driver_state->pump_run)?"on":"off"); updateRuntime = true; xSemaphoreGive(xSemaphoreDriver); } @@ -1260,7 +1277,7 @@ runtime.StageTimeLeft = TimeWhirlPool; updateRuntime = true; MLT_info(71, 26, false); - ESP_LOGI(TAG, "Whirlpool %d minutes, sp %4.1f", TimeWhirlPool, driver_state->mlt_sp); + log_msg(TAG, "Whirlpool %d minutes, sp %4.1f", TimeWhirlPool, driver_state->mlt_sp); Buttons_Add(255, 120, 60, 40, (char *)"+1m", 0); Buttons_Add( 5, 120, 60, 40, (char *)"-1m", 1); Buttons_Add(255, 200, 60, 40, (char *)"Pomp", 2);