221 set_7seg_font_atrib(12, 2, 1, TFT_DARKGREY); |
221 set_7seg_font_atrib(12, 2, 1, TFT_DARKGREY); |
222 snprintf(s_timer, 9, "%02d:%02d:%02d", Hours, Minutes, Seconds); |
222 snprintf(s_timer, 9, "%02d:%02d:%02d", Hours, Minutes, Seconds); |
223 TFT_print(s_timer, X, Y); |
223 TFT_print(s_timer, X, Y); |
224 _oldTime = Time; |
224 _oldTime = Time; |
225 snprintf(msg, 31, "{\"timer\":\"%s\"}", s_timer); |
225 snprintf(msg, 31, "{\"timer\":\"%s\"}", s_timer); |
226 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
226 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
227 } |
227 } |
228 } |
228 } |
229 |
229 |
230 |
230 |
231 |
231 |
239 TFT_setFont(DEJAVU24_FONT, NULL); |
239 TFT_setFont(DEJAVU24_FONT, NULL); |
240 TFT_fillRect(0, 0, 319, 25, TFT_NAVY); |
240 TFT_fillRect(0, 0, 319, 25, TFT_NAVY); |
241 TFT_print(s_top_msg, CENTER, 2); |
241 TFT_print(s_top_msg, CENTER, 2); |
242 font_transparent = 0; |
242 font_transparent = 0; |
243 snprintf(msg, 63, "{\"top_msg\":\"%s\"}", s_top_msg); |
243 snprintf(msg, 63, "{\"top_msg\":\"%s\"}", s_top_msg); |
244 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
244 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
245 } |
245 } |
246 |
246 |
247 |
247 |
248 |
248 |
249 void MLT_info(int x, int y, bool update) |
249 void MLT_info(int x, int y, bool update) |
262 if (! update) { |
262 if (! update) { |
263 TFT_fillRect(x, y, 178, 90, _bg); |
263 TFT_fillRect(x, y, 178, 90, _bg); |
264 TFT_drawRect(x, y, 178, 90, _fg); |
264 TFT_drawRect(x, y, 178, 90, _fg); |
265 TFT_drawFastHLine(x, y + 21, 178, _fg); |
265 TFT_drawFastHLine(x, y + 21, 178, _fg); |
266 TFT_setFont(DEJAVU18_FONT, NULL); |
266 TFT_setFont(DEJAVU18_FONT, NULL); |
267 TFT_print("MLT", x + 67, y + 3); |
267 TFT_print((char *)"MLT", x + 67, y + 3); |
268 } |
268 } |
269 |
269 |
270 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { |
270 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { |
271 sprintf(ctemp, "%7.3f", driver_state->mlt_pv); |
271 sprintf(ctemp, "%7.3f", driver_state->mlt_pv); |
272 if (driver_state->mlt_mode) { |
272 if (driver_state->mlt_mode) { |
301 } else { |
301 } else { |
302 TFT_fillCircle(x + 146, y + 11, 8, _bg); |
302 TFT_fillCircle(x + 146, y + 11, 8, _bg); |
303 } |
303 } |
304 lpump = cpump; |
304 lpump = cpump; |
305 snprintf(msg, 31, "{\"pump_led\":\"%s\"}", cpump ? "1":"0"); |
305 snprintf(msg, 31, "{\"pump_led\":\"%s\"}", cpump ? "1":"0"); |
306 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
306 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
307 } |
307 } |
308 |
308 |
309 if (equipment.SSR2 == SSR2_ON_IDLE) { |
309 if (equipment.SSR2 == SSR2_ON_IDLE) { |
310 cpwr = (HLT_pin) ? true : false; |
310 cpwr = (HLT_pin) ? true : false; |
311 if ((cpwr != lpwr) || (! update)) { |
311 if ((cpwr != lpwr) || (! update)) { |
314 } else { |
314 } else { |
315 TFT_fillCircle(x + 126, y + 11, 8, _bg); |
315 TFT_fillCircle(x + 126, y + 11, 8, _bg); |
316 } |
316 } |
317 lpwr = cpwr; |
317 lpwr = cpwr; |
318 snprintf(msg, 31, "{\"hlt_led\":\"%s\"}", cpwr ? "1":"0"); |
318 snprintf(msg, 31, "{\"hlt_led\":\"%s\"}", cpwr ? "1":"0"); |
319 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
319 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
320 } |
320 } |
321 } |
321 } |
322 |
322 |
323 if (strcmp(ctemp, ltemp) || (! update)) { |
323 if (strcmp(ctemp, ltemp) || (! update)) { |
324 TFT_setFont(USER_FONT, "/spiffs/fonts/Grotesk24x48.fon"); |
324 TFT_setFont(USER_FONT, "/spiffs/fonts/Grotesk24x48.fon"); |
325 TFT_print(ctemp, x + 5, y + 23); |
325 TFT_print(ctemp, x + 5, y + 23); |
326 strncpy(ltemp, ctemp, 16); |
326 strncpy(ltemp, ctemp, 16); |
327 snprintf(msg, 31, "{\"mlt_pv\":\"%s\"}", ctemp); |
327 snprintf(msg, 31, "{\"mlt_pv\":\"%s\"}", ctemp); |
328 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
328 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
329 } |
329 } |
330 |
330 |
331 TFT_setFont(DEJAVU18_FONT, NULL); |
331 TFT_setFont(DEJAVU18_FONT, NULL); |
332 if (strcmp(csp, lsp) || (! update)) { |
332 if (strcmp(csp, lsp) || (! update)) { |
333 TFT_clearStringRect(x + 5, y + 70, "123.45 sp"); |
333 TFT_clearStringRect(x + 5, y + 70, (char *)"123.45 sp"); |
334 TFT_print(csp, x + 5, y + 70); |
334 TFT_print(csp, x + 5, y + 70); |
335 strncpy(lsp, csp, 16); |
335 strncpy(lsp, csp, 16); |
336 snprintf(msg, 31, "{\"mlt_sp\":\"%s\"}", csp); |
336 snprintf(msg, 31, "{\"mlt_sp\":\"%s\"}", csp); |
337 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
337 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
338 } |
338 } |
339 if (strcmp(cpower, lpower) || (! update)) { |
339 if (strcmp(cpower, lpower) || (! update)) { |
340 TFT_clearStringRect(x + 120, y + 70, "100%"); |
340 TFT_clearStringRect(x + 120, y + 70, (char *)"100%"); |
341 TFT_print(cpower, x + 120, y + 70); |
341 TFT_print(cpower, x + 120, y + 70); |
342 strncpy(lpower, cpower, 16); |
342 strncpy(lpower, cpower, 16); |
343 snprintf(msg, 31, "{\"mlt_power\":\"%s\"}", cpower); |
343 snprintf(msg, 31, "{\"mlt_power\":\"%s\"}", cpower); |
344 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
344 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
345 } |
345 } |
346 } |
346 } |
347 |
347 |
348 |
348 |
349 |
349 |
363 if (! update) { |
363 if (! update) { |
364 TFT_fillRect(x, y, 178, H, _bg); |
364 TFT_fillRect(x, y, 178, H, _bg); |
365 TFT_drawRect(x, y, 178, H, _fg); |
365 TFT_drawRect(x, y, 178, H, _fg); |
366 TFT_drawFastHLine(x, y + 21, 178, _fg); |
366 TFT_drawFastHLine(x, y + 21, 178, _fg); |
367 TFT_setFont(DEJAVU18_FONT, NULL); |
367 TFT_setFont(DEJAVU18_FONT, NULL); |
368 TFT_print("HLT", x + 67, y + 3); |
368 TFT_print((char *)"HLT", x + 67, y + 3); |
369 } |
369 } |
370 |
370 |
371 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { |
371 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { |
372 sprintf(ctemp, "%7.3f", driver_state->hlt_pv); |
372 sprintf(ctemp, "%7.3f", driver_state->hlt_pv); |
373 if (driver_state->hlt_mode == HLT_MODE_BANG) { |
373 if (driver_state->hlt_mode == HLT_MODE_BANG) { |
390 } else { |
390 } else { |
391 TFT_fillCircle(x + 166, y + 11, 8, _bg); |
391 TFT_fillCircle(x + 166, y + 11, 8, _bg); |
392 } |
392 } |
393 lon = con; |
393 lon = con; |
394 snprintf(msg, 31, "{\"hlt_led\":\"%s\"}", con ? "1":"0"); |
394 snprintf(msg, 31, "{\"hlt_led\":\"%s\"}", con ? "1":"0"); |
395 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
395 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
396 } |
396 } |
397 |
397 |
398 if (strcmp(ltemp, ctemp) || (! update)) { |
398 if (strcmp(ltemp, ctemp) || (! update)) { |
399 if (small) { |
399 if (small) { |
400 TFT_setFont(USER_FONT, "/spiffs/fonts/DejaVuSans24.fon"); |
400 TFT_setFont(USER_FONT, "/spiffs/fonts/DejaVuSans24.fon"); |
403 TFT_setFont(USER_FONT, "/spiffs/fonts/Grotesk24x48.fon"); |
403 TFT_setFont(USER_FONT, "/spiffs/fonts/Grotesk24x48.fon"); |
404 TFT_print(ctemp, x + 5, y + 23); |
404 TFT_print(ctemp, x + 5, y + 23); |
405 } |
405 } |
406 strncpy(ltemp, ctemp, 16); |
406 strncpy(ltemp, ctemp, 16); |
407 snprintf(msg, 31, "{\"hlt_pv\":\"%s\"}", ctemp); |
407 snprintf(msg, 31, "{\"hlt_pv\":\"%s\"}", ctemp); |
408 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
408 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
409 } |
409 } |
410 |
410 |
411 H = (small) ? 50 : 70; |
411 H = (small) ? 50 : 70; |
412 TFT_setFont(DEJAVU18_FONT, NULL); |
412 TFT_setFont(DEJAVU18_FONT, NULL); |
413 if (strcmp(csp, lsp) || (! update)) { |
413 if (strcmp(csp, lsp) || (! update)) { |
414 TFT_clearStringRect(x + 5, y + H, "123.45 sp"); |
414 TFT_clearStringRect(x + 5, y + H, (char *)"123.45 sp"); |
415 TFT_print(csp, x + 5, y + H); |
415 TFT_print(csp, x + 5, y + H); |
416 strncpy(lsp, csp, 16); |
416 strncpy(lsp, csp, 16); |
417 snprintf(msg, 31, "{\"hlt_sp\":\"%s\"}", csp); |
417 snprintf(msg, 31, "{\"hlt_sp\":\"%s\"}", csp); |
418 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
418 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
419 } |
419 } |
420 if (strcmp(cpower, lpower) || (! update)) { |
420 if (strcmp(cpower, lpower) || (! update)) { |
421 TFT_clearStringRect(x + 120, y + H, "100%"); |
421 TFT_clearStringRect(x + 120, y + H, (char *)"100%"); |
422 TFT_print(cpower, x + 120, y + H); |
422 TFT_print(cpower, x + 120, y + H); |
423 strncpy(lpower, cpower, 16); |
423 strncpy(lpower, cpower, 16); |
424 snprintf(msg, 31, "{\"hlt_power\":\"%s\"}", cpower); |
424 snprintf(msg, 31, "{\"hlt_power\":\"%s\"}", cpower); |
425 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
425 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
426 } |
426 } |
427 } |
427 } |
428 |
428 |
429 |
429 |
430 |
430 |
526 /* |
526 /* |
527 * With each screenchange, remove the timer too. |
527 * With each screenchange, remove the timer too. |
528 */ |
528 */ |
529 Sub_Screen = 0; |
529 Sub_Screen = 0; |
530 snprintf(msg, 63, "{\"main\":\"%d\",\"sub\":\"%d\",\"timer\":\"\"}", Main_Screen, Sub_Screen); |
530 snprintf(msg, 63, "{\"main\":\"%d\",\"sub\":\"%d\",\"timer\":\"\"}", Main_Screen, Sub_Screen); |
531 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
531 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
532 |
532 |
533 ESP_LOGI(TAG, "Change screen %d to %d", Old_Screen, Main_Screen); |
533 ESP_LOGI(TAG, "Change screen %d to %d", Old_Screen, Main_Screen); |
534 _bg = TFT_BLACK; |
534 _bg = TFT_BLACK; |
535 TFT_fillScreen(_bg); |
535 TFT_fillScreen(_bg); |
536 TFT_resetclipwin(); |
536 TFT_resetclipwin(); |
537 Buttons_Clear(); |
537 Buttons_Clear(); |
538 Old_Screen = Main_Screen; |
538 Old_Screen = Main_Screen; |
539 |
539 |
540 switch (Main_Screen) { |
540 switch (Main_Screen) { |
541 case MAIN_MODE_FREE: |
541 case MAIN_MODE_FREE: |
542 TopMessage("Hoofdmenu"); |
542 TopMessage((char *)"Hoofdmenu"); |
543 MLT_info(71, 26, false); |
543 MLT_info(71, 26, false); |
544 if ((equipment.SSR2 == SSR2_HLT_SHARE) || (equipment.SSR2 == SSR2_HLT_IND)) { |
544 if ((equipment.SSR2 == SSR2_HLT_SHARE) || (equipment.SSR2 == SSR2_HLT_IND)) { |
545 HLT_info(71,150, false, false); |
545 HLT_info(71,150, false, false); |
546 } |
546 } |
547 Buttons_Add( 5, 26, 60, 40, "Hand", 0); |
547 Buttons_Add( 5, 26, 60, 40, (char *)"Hand", 0); |
548 Buttons_Add(255, 26, 60, 40, "Auto", 1); |
548 Buttons_Add(255, 26, 60, 40, (char *)"Auto", 1); |
549 Buttons_Add( 5, 200, 60, 40, "Info", 2); |
549 Buttons_Add( 5, 200, 60, 40, (char *)"Info", 2); |
550 Buttons_Add(255, 200, 60, 40, "Tools", 3); |
550 Buttons_Add(255, 200, 60, 40, (char *)"Tools", 3); |
551 Buttons_Show(); |
551 Buttons_Show(); |
552 break; |
552 break; |
553 |
553 |
554 case MAIN_MODE_CALIBRATION: |
554 case MAIN_MODE_CALIBRATION: |
555 Calibration_Init(); |
555 Calibration_Init(); |
558 case MAIN_INFO: |
558 case MAIN_INFO: |
559 sprintf(temp_buf, "BrewBoard %s", app_desc->version); |
559 sprintf(temp_buf, "BrewBoard %s", app_desc->version); |
560 TopMessage(temp_buf); |
560 TopMessage(temp_buf); |
561 _fg = TFT_YELLOW; |
561 _fg = TFT_YELLOW; |
562 TFT_setFont(UBUNTU16_FONT, NULL); |
562 TFT_setFont(UBUNTU16_FONT, NULL); |
563 TFT_print("Written by Michiel Broek (C) 2018\r\n\n", 0, 50); |
563 TFT_print((char *)"Written by Michiel Broek (C) 2018\r\n\n", 0, 50); |
564 // ------------------------------------- |
564 // ------------------------------------- |
565 _fg = TFT_ORANGE; |
565 _fg = TFT_ORANGE; |
566 TFT_print("Parts are written by Chris Morgan,\r\n", 0, LASTY); |
566 TFT_print((char *)"Parts are written by Chris Morgan,\r\n", 0, LASTY); |
567 TFT_print("Brett Beauregard, Blake Felt, LoBo,\r\n", 0, LASTY); |
567 TFT_print((char *)"Brett Beauregard, Blake Felt, LoBo,\r\n", 0, LASTY); |
568 TFT_print("and David Antliff.\r\n", 0, LASTY); |
568 TFT_print((char *)"and David Antliff.\r\n", 0, LASTY); |
569 ShowInteger(1,140, "Free memory", " bytes", esp_get_free_heap_size()); |
569 ShowInteger(1,140, (char *)"Free memory", (char *)" bytes", esp_get_free_heap_size()); |
570 ShowText(1,158, "IDF version", (char *)esp_get_idf_version()); |
570 ShowText(1,158, (char *)"IDF version", (char *)esp_get_idf_version()); |
571 Buttons_Add(130, 200, 60, 40, "Ok", 0); |
571 Buttons_Add(130, 200, 60, 40, (char *)"Ok", 0); |
572 Buttons[0].dark = true; |
572 Buttons[0].dark = true; |
573 Buttons_Show(); |
573 Buttons_Show(); |
574 break; |
574 break; |
575 |
575 |
576 case MAIN_TOOLS: |
576 case MAIN_TOOLS: |
577 TopMessage("Tools menu"); |
577 TopMessage((char *)"Tools menu"); |
578 Buttons_Add( 20, 40,120, 40, "Setup", 0); |
578 Buttons_Add( 20, 40,120, 40, (char *)"Setup", 0); |
579 Buttons_Add( 20,120,120, 40, "Bestanden", 1); |
579 Buttons_Add( 20,120,120, 40, (char *)"Bestanden", 1); |
580 Buttons_Add(180, 40,120, 40, "Recepten", 2); |
580 Buttons_Add(180, 40,120, 40, (char *)"Recepten", 2); |
581 Buttons_Add(180,120,120, 40, "Updates", 3); |
581 Buttons_Add(180,120,120, 40, (char *)"Updates", 3); |
582 Buttons_Add(130, 200, 60, 40, "Ok", 4); |
582 Buttons_Add(130, 200, 60, 40, (char *)"Ok", 4); |
583 Buttons[4].dark = true; |
583 Buttons[4].dark = true; |
584 Buttons_Show(); |
584 Buttons_Show(); |
585 break; |
585 break; |
586 |
586 |
587 case MAIN_TOOLS_SETUP: |
587 case MAIN_TOOLS_SETUP: |
672 default: break; |
672 default: break; |
673 } |
673 } |
674 if (System_TimeOk && (now != last)) { |
674 if (System_TimeOk && (now != last)) { |
675 last = now; |
675 last = now; |
676 strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); |
676 strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); |
677 TFT_setFont(DEJAVU18_FONT, NULL); |
|
678 _bg = TFT_BLACK; |
677 _bg = TFT_BLACK; |
679 _fg = TFT_ORANGE; |
678 _fg = TFT_ORANGE; |
|
679 TFT_setFont(DEJAVU18_FONT, NULL); |
680 TFT_print(strftime_buf, CENTER, 125); |
680 TFT_print(strftime_buf, CENTER, 125); |
681 snprintf(msg, 63, "{\"timer\":\"%s\"}", strftime_buf); // Fix string termination and only send once/second. |
681 snprintf(msg, 63, "{\"timer\":\"%s\"}", strftime_buf); // Fix string termination and only send once/second. |
682 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
682 ws_server_send_text_clients((char *)"/ws", msg, strlen(msg)); |
683 } |
683 } |
684 break; |
684 break; |
685 |
685 |
686 case MAIN_MODE_CALIBRATION: |
686 case MAIN_MODE_CALIBRATION: |
687 Calibration_Loop(); |
687 Calibration_Loop(); |