main/automation.c

changeset 64
326c38d3681b
parent 62
2e90ada37476
child 75
224851e81117
equal deleted inserted replaced
63:1d2b4358db4b 64:326c38d3681b
68 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { 68 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) {
69 driver_state->mlt_sp = stageTemp; 69 driver_state->mlt_sp = stageTemp;
70 xSemaphoreGive(xSemaphoreDriver); 70 xSemaphoreGive(xSemaphoreDriver);
71 } 71 }
72 log_msg(TAG, "Changed sp to %.2f", stageTemp); 72 log_msg(TAG, "Changed sp to %.2f", stageTemp);
73 }
74
75
76
77 void change_tl(int max)
78 {
79 if (max) {
80 if (TimeLeft < max)
81 TimeLeft += 60;
82 else
83 TimeLeft = max;
84 } else {
85 if (TimeLeft > 60)
86 TimeLeft -= 60;
87 else
88 TimeLeft = 0;
89 }
90 log_msg(TAG, "Changed timeleft to %d", TimeLeft / 60);
73 } 91 }
74 92
75 93
76 94
77 /* 95 /*
298 if ((Main_Screen == MAIN_AUTO_COOLING_M) && (! recipe.Whirlpool6)) { 316 if ((Main_Screen == MAIN_AUTO_COOLING_M) && (! recipe.Whirlpool6)) {
299 // Skip cooling before whirlpool 63 degrees. 317 // Skip cooling before whirlpool 63 degrees.
300 Main_Screen = MAIN_AUTO_COOLING_C; 318 Main_Screen = MAIN_AUTO_COOLING_C;
301 return true; //goto startover; 319 return true; //goto startover;
302 } 320 }
321 log_msg(TAG, "Prompt start cooling");
303 TopMessage((char *)"Start koelen?"); 322 TopMessage((char *)"Start koelen?");
304 Buttons_Add( 40, 100, 80, 40, (char *)"Start", 0); 323 Buttons_Add( 40, 100, 80, 40, (char *)"Start", 0);
305 Buttons_Add(200, 100, 80, 40, (char *)"Stop", 1); 324 Buttons_Add(200, 100, 80, 40, (char *)"Stop", 1);
306 Buttons[1].dark = true; 325 Buttons[1].dark = true;
307 Buttons_Show(); 326 Buttons_Show();
335 // Skip final whirlpool. 354 // Skip final whirlpool.
336 Main_Screen = MAIN_AUTO_DONE; 355 Main_Screen = MAIN_AUTO_DONE;
337 return true; //goto startover; 356 return true; //goto startover;
338 } 357 }
339 358
359 log_msg(TAG, "Prompt start whirlpool");
340 TopMessage((char *)"Start Whirlpool?"); 360 TopMessage((char *)"Start Whirlpool?");
341 Buttons_Add( 40, 100, 80, 40, (char *)"Start", 0); 361 Buttons_Add( 40, 100, 80, 40, (char *)"Start", 0);
342 Buttons_Add(200, 100, 80, 40, (char *)"Stop", 1); 362 Buttons_Add(200, 100, 80, 40, (char *)"Stop", 1);
343 Buttons[1].dark = true; 363 Buttons[1].dark = true;
344 Buttons_Show(); 364 Buttons_Show();
704 TimerSet(stageTime * 60); 724 TimerSet(stageTime * 60);
705 } 725 }
706 Resume = false; 726 Resume = false;
707 runtime.StageTimeLeft = TimeLeft / 60; 727 runtime.StageTimeLeft = TimeLeft / 60;
708 updateRuntime = true; 728 updateRuntime = true;
709 log_msg(TAG, "Mash step %d temperature reached, rest time %d", Main_Screen - MAIN_AUTO_MASH_IN, TimeLeft / 60); 729 log_msg(TAG, "Mash step %d temperature reached, rest %d minutes", Main_Screen - MAIN_AUTO_MASH_IN, TimeLeft / 60);
710 Buttons_Clear(); 730 Buttons_Clear();
711 Buttons_Add( 0, 120, 60, 40, (char *)"+1m", 0); 731 Buttons_Add( 0, 120, 60, 40, (char *)"+1m", 0);
712 Buttons_Add(260, 120, 60, 40, (char *)"-1m", 1); 732 Buttons_Add(260, 120, 60, 40, (char *)"-1m", 1);
713 Buttons_Show(); 733 Buttons_Show();
714 } 734 }
715 switch (Buttons_Scan()) { 735 switch (Buttons_Scan()) {
716 case 0: if (stageTemp < MaxMash) { 736 case 0: if (stageTemp < MaxMash)
717 change_sp(true); 737 change_sp(true);
718 }
719 break; 738 break;
720 739
721 case 1: if (stageTemp > MinMash) { 740 case 1: if (stageTemp > MinMash)
722 change_sp(false); 741 change_sp(false);
723 }
724 break; 742 break;
725 743
726 default: 744 default:
727 break; 745 break;
728 } 746 }
740 pumpTime = 0; 758 pumpTime = 0;
741 } 759 }
742 if (pumpTime >= equipment.PumpCycle) { 760 if (pumpTime >= equipment.PumpCycle) {
743 if (! pumpRest) { 761 if (! pumpRest) {
744 pumpRest = true; 762 pumpRest = true;
745 log_msg(TAG, "Pump rest"); 763 log_msg(TAG, "Pump stop");
746 } 764 }
747 } else { 765 } else {
748 if (pumpRest) { 766 if (pumpRest) {
749 pumpRest = false; 767 pumpRest = false;
750 log_msg(TAG, "Pump start"); 768 log_msg(TAG, "Pump start");
751 } 769 }
752 } 770 }
753 } 771 }
754 if (TimeLeft) { 772 if (TimeLeft) {
755 switch (Buttons_Scan()) { 773 switch (Buttons_Scan()) {
756 case 0: TimeLeft += 60; 774 case 0: change_tl(21600);
757 runtime.StageTimeLeft = TimeLeft / 60; 775 runtime.StageTimeLeft = TimeLeft / 60;
758 updateRuntime = true; 776 updateRuntime = true;
759 log_msg(TAG, "Changed resttime to %d", runtime.StageTimeLeft);
760 break; 777 break;
761 778
762 case 1: if (TimeLeft < 60) 779 case 1: change_tl(0);
763 TimeLeft = 0;
764 else
765 TimeLeft -= 60;
766 runtime.StageTimeLeft = TimeLeft / 60; 780 runtime.StageTimeLeft = TimeLeft / 60;
767 updateRuntime = true; 781 updateRuntime = true;
768 log_msg(TAG, "Changed resttime to %d", runtime.StageTimeLeft);
769 break; 782 break;
770 783
771 default: break; 784 default: break;
772 } 785 }
773 } 786 }
774 787
775 if (TimeLeft == 0) { 788 if (TimeLeft == 0) {
776 runtime.StageTimeLeft = TimeLeft / 60; 789 runtime.StageTimeLeft = 0;
777 updateRuntime = true; 790 updateRuntime = true;
778 if ((Main_Screen == MAIN_AUTO_MASH_IN) && config.AskAdd) { 791 if ((Main_Screen == MAIN_AUTO_MASH_IN) && config.AskAdd) {
779 /* 792 /*
780 * Add Mash prompt. 793 * Add Mash prompt.
781 */ 794 */
850 if (NewMinute) { 863 if (NewMinute) {
851 runtime.StageTimeLeft = TimeLeft / 60; 864 runtime.StageTimeLeft = TimeLeft / 60;
852 updateRuntime = true; 865 updateRuntime = true;
853 } 866 }
854 } 867 }
855 } else if (MashState == MASH_ADD) { 868 } else if (MashState == MASH_ADD || MashState == MASH_IODINE || MashState == MASH_REMOVE) {
869 if (MashState == MASH_IODINE) {
870 if (TimeSpent % 45 == 0) {
871 if (! beeped) {
872 SoundPlay(SOUND_Warn);
873 beeped = true;
874 }
875 } else {
876 beeped = false;
877 }
878 }
856 switch (Buttons_Scan()) { 879 switch (Buttons_Scan()) {
857 case 0: Main_Screen = MAIN_AUTO_ABORT; 880 case 0: Main_Screen = MAIN_AUTO_ABORT;
858 break; 881 break;
859 case 1: Main_Screen++; 882 case 1: Main_Screen++;
860 break; 883 break;
861 default: break; 884 default: break;
862 } 885 }
863 } else if (MashState == MASH_IODINE) { 886 if (MashState == MASH_IODINE && TimeLeft == 0) {
864 if (TimeSpent % 45 == 0) {
865 if (! beeped) {
866 SoundPlay(SOUND_Warn);
867 beeped = true;
868 }
869 } else {
870 beeped = false;
871 }
872 switch (Buttons_Scan()) {
873 case 0: Main_Screen = MAIN_AUTO_ABORT;
874 break;
875 case 1: Main_Screen++;
876 break;
877 default: break;
878 }
879 if (TimeLeft == 0) {
880 Main_Screen++; 887 Main_Screen++;
881 }
882 } else if (MashState == MASH_REMOVE) {
883 switch (Buttons_Scan()) {
884 case 0: Main_Screen = MAIN_AUTO_ABORT;
885 break;
886 case 1: Main_Screen++;
887 break;
888 default: break;
889 } 888 }
890 } else if (MashState == MASH_INFUSE) { 889 } else if (MashState == MASH_INFUSE) {
891 switch (Buttons_Scan()) { 890 switch (Buttons_Scan()) {
892 case 0: Main_Screen = MAIN_AUTO_ABORT; 891 case 0: Main_Screen = MAIN_AUTO_ABORT;
893 break; 892 break;
1004 case 1: if (stageTemp > 80) { 1003 case 1: if (stageTemp > 80) {
1005 change_sp(false); 1004 change_sp(false);
1006 } 1005 }
1007 break; 1006 break;
1008 1007
1009 case 2: TimeLeft += 60; 1008 case 2: change_tl(21600);
1010 log_msg(TAG, "Increase boiltime to %d minutes", TimeLeft / 60);
1011 break; 1009 break;
1012 1010
1013 case 3: if (TimeLeft > 60) 1011 case 3: change_tl(0);
1014 TimeLeft -= 60;
1015 else
1016 TimeLeft = 0;
1017 log_msg(TAG, "Decrease boiltime to %d minutes", TimeLeft / 60);
1018 break; 1012 break;
1019 1013
1020 case 4: if (BoilPower < 100) 1014 case 4: if (BoilPower < 100)
1021 BoilPower++; 1015 BoilPower++;
1022 log_msg(TAG, "Increase boilpower to %d%%", BoilPower); 1016 log_msg(TAG, "Increase boilpower to %d%%", BoilPower);
1305 } 1299 }
1306 1300
1307 MLT_info(71, 26, true); 1301 MLT_info(71, 26, true);
1308 TimerShow(TimeLeft, 65, 122); 1302 TimerShow(TimeLeft, 65, 122);
1309 switch (Buttons_Scan()) { 1303 switch (Buttons_Scan()) {
1310 case 0: TimeLeft += 60; 1304 case 0: change_tl(7200);
1311 break; 1305 break;
1312 case 1: if (TimeLeft > 60) 1306 case 1: change_tl(0);
1313 TimeLeft -= 60;
1314 else
1315 TimeLeft = 0;
1316 break; 1307 break;
1317 case 2: if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { 1308 case 2: if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) {
1318 if (driver_state->mlt_pv < equipment.PumpMaxTemp) { 1309 if (driver_state->mlt_pv < equipment.PumpMaxTemp) {
1319 if (driver_state->pump_run) 1310 if (driver_state->pump_run)
1320 driver_state->pump_run = 0; 1311 driver_state->pump_run = 0;
1321 else 1312 else
1322 driver_state->pump_run = 1; 1313 driver_state->pump_run = 1;
1314 log_msg(TAG, "Pump switched %s", (driver_state->pump_run)?"on":"off");
1323 } else { 1315 } else {
1324 driver_state->pump_run = 0; 1316 driver_state->pump_run = 0;
1325 } 1317 }
1326 xSemaphoreGive(xSemaphoreDriver); 1318 xSemaphoreGive(xSemaphoreDriver);
1327 } 1319 }

mercurial