fonctionnel

This commit is contained in:
Marc 2024-07-22 00:24:15 +02:00
parent 1f5593de04
commit b0f5150f81
2 changed files with 96 additions and 10 deletions

View File

@ -30,7 +30,7 @@
#define EXAMPLE_LCD_LVGL_DIRECT_MODE (1)
#define EXAMPLE_LCD_LVGL_AVOID_TEAR (1)
#define EXAMPLE_LCD_RGB_BOUNCE_BUFFER_MODE (1)
#define EXAMPLE_LCD_DRAW_BUFF_DOUBLE (0)
#define EXAMPLE_LCD_DRAW_BUFF_DOUBLE (1)
#define EXAMPLE_LCD_DRAW_BUFF_HEIGHT (100)
#define EXAMPLE_LCD_RGB_BUFFER_NUMS (2)
#define EXAMPLE_LCD_RGB_BOUNCE_BUFFER_HEIGHT (10)
@ -93,6 +93,10 @@ static esp_lcd_touch_handle_t touch_handle = NULL;
static lv_display_t *lvgl_disp = NULL;
static lv_indev_t *lvgl_touch_indev = NULL;
lv_obj_t * chart;
lv_chart_series_t * ser1;
static esp_err_t app_lcd_init(void)
{
esp_err_t ret = ESP_OK;
@ -300,15 +304,21 @@ static void app_main_display(void)
char tempExtStr[6];
char tempIntStr[6];
char hauteurCuveStr[6];
char hauteurCuveStr[9];
char hauteurCuveEvolStr[9];
lv_subject_t tempIntSubj;
lv_subject_t tempExtSubj;
lv_subject_t hauteurCuveSubj;
lv_subject_t hauteurCuveEvolSubj;
char *upEvent = "monter";
char *downEvent = "descendre";
char* topicTempExt="house/temp/282A802600008059";
char *topicTempExt="house/temp/282A802600008059";
char *topicHauteurCuve="house/cuve/hauteur";
char *topicTempInt="house/temp/287DCF1E00008020";
char *topicHauteurCuveEvol="house/cuve/hauteurEvol";
esp_mqtt_client_handle_t client;
static void event_handler(lv_event_t *e)
@ -342,7 +352,8 @@ void draw_ihm()
{
lv_subject_init_string(&tempExtSubj, tempExtStr, NULL, 6, "--");
lv_subject_init_string(&tempIntSubj, tempIntStr, NULL, 6, "--");
lv_subject_init_string(&hauteurCuveSubj, hauteurCuveStr, NULL, 6, "--");
lv_subject_init_string(&hauteurCuveSubj, hauteurCuveStr, NULL, 9, "--");
lv_subject_init_string(&hauteurCuveEvolSubj, hauteurCuveEvolStr, NULL, 9, "--");
// keys.clear();
lv_obj_clean(lv_scr_act());
@ -353,8 +364,8 @@ void draw_ihm()
// lv_style_set_bg_opa(&style_btn, LV_OPA_50);
// lv_style_set_border_width(&style_btn, 2);
// lv_style_set_border_color(&style_btn, lv_color_black());
lv_style_set_width(&style_btn, 120);
lv_style_set_height(&style_btn, 120);
lv_style_set_width(&style_btn, 180);
lv_style_set_height(&style_btn, 180);
// Un style pour les conteneurs (température, cuve ...)
static lv_style_t style_container;
@ -362,14 +373,14 @@ void draw_ihm()
lv_style_set_pad_all(&style_container, 5);
// lv_style_set_height(&style_container,LV_SIZE_CONTENT);
lv_style_set_height(&style_container, 80);
lv_style_set_width(&style_container, 130);
lv_style_set_width(&style_container, 200);
lv_style_set_bg_color(&style_container, lv_palette_lighten(LV_PALETTE_BLUE_GREY, 4));
lv_style_set_align(&style_container, LV_ALIGN_BOTTOM_LEFT);
lv_style_set_flex_cross_place(&style_container, LV_FLEX_ALIGN_END);
static lv_style_t style_lbvValue;
lv_style_init(&style_lbvValue);
lv_style_set_text_font(&style_lbvValue, &lv_font_montserrat_26);
lv_style_set_text_font(&style_lbvValue, &lv_font_montserrat_40);
lv_obj_set_flex_flow(lv_screen_active(), LV_FLEX_FLOW_ROW);
lv_obj_set_style_pad_column(lv_screen_active(), 1, 0);
@ -437,6 +448,7 @@ void draw_ihm()
lv_obj_align(btnUp, LV_ALIGN_CENTER, 0, -40);
lv_obj_remove_flag(btnUp, LV_OBJ_FLAG_PRESS_LOCK);
lv_obj_t *label = lv_label_create(btnUp);
lv_obj_add_style(label, &style_lbvValue, 0);
lv_label_set_text(label, LV_SYMBOL_UP);
lv_obj_center(label);
@ -446,8 +458,22 @@ void draw_ihm()
lv_obj_align(btnDwn, LV_ALIGN_CENTER, 0, -40);
lv_obj_remove_flag(btnDwn, LV_OBJ_FLAG_PRESS_LOCK);
label = lv_label_create(btnDwn);
lv_obj_add_style(label, &style_lbvValue, 0);
lv_label_set_text(label, LV_SYMBOL_DOWN);
lv_obj_center(label);
/*Create a chart*/
chart = lv_chart_create(lv_screen_active());
lv_obj_set_size(chart, 200, 200);
lv_chart_set_type(chart, LV_CHART_TYPE_LINE); /*Show lines and points too*/
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 130);
ser1 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_GREEN), LV_CHART_AXIS_PRIMARY_Y);;
ser1->y_points[0] = lv_rand(0, 40);
ser1->y_points[1] = lv_rand(0, 40);
ser1->y_points[2] = lv_rand(0, 40);
lv_chart_refresh(chart); /*Required after direct set*/
}
/* The examples use WiFi configuration that you can set via project configuration menu
@ -592,6 +618,24 @@ static void log_error_if_nonzero(const char *message, int error_code)
}
}
void splitIt(char * payload, unsigned int length, int * datas){
char *sep=",";
char *token;
char *saveptr1;
token = strtok_r(payload, sep, &saveptr1);
datas[0]=atoi(token);
token = strtok_r(NULL, sep, &saveptr1);
datas[1]=atoi(token);
token = strtok_r(NULL, sep, &saveptr1);
datas[2]=atoi(token);
token = strtok_r(NULL, sep, &saveptr1);
datas[3]=atoi(token);
}
/*
* @brief Event handler registered to receive MQTT events
*
@ -617,6 +661,15 @@ static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_
msg_id = esp_mqtt_client_subscribe(client, topicTempExt, 0);
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
msg_id = esp_mqtt_client_subscribe(client, topicTempInt, 0);
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
msg_id = esp_mqtt_client_subscribe(client, topicHauteurCuve, 0);
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
msg_id = esp_mqtt_client_subscribe(client, topicHauteurCuveEvol, 0);
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
msg_id = esp_mqtt_client_subscribe(client, "/topic/qos1", 1);
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
@ -642,8 +695,37 @@ static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_
ESP_LOGI(TAG, "MQTT_EVENT_DATA");
printf("TOPIC=%.*s\r\n", event->topic_len, event->topic);
printf("DATA=%.*s\r\n", event->data_len, event->data);
if(strncmp(event->topic, topicTempExt,27)==0){
lvgl_port_lock(0);
lv_subject_copy_string(&tempExtSubj, event->data);
lvgl_port_unlock();
}else if(strncmp(event->topic, topicTempInt,27)==0){
lvgl_port_lock(0);
lv_subject_copy_string(&tempIntSubj, event->data);
lvgl_port_unlock();
}else if(strncmp(event->topic, topicHauteurCuveEvol,22)==0){
int datas[4] ={};
splitIt(event->data, event->data_len, datas);
ser1->y_points[0]=130-datas[0];
ser1->y_points[1]=130-datas[1];
ser1->y_points[2]=130-datas[2];
ser1->y_points[3]=130-datas[3];
lvgl_port_lock(0);
lv_chart_refresh(chart);
lvgl_port_unlock();
//lv_subject_copy_string(&hauteurCuveEvolSubj, event->data);
}else if(strncmp(event->topic, topicHauteurCuve,18)==0){
lvgl_port_lock(0);
char *datas=NULL;
datas = (char *) malloc( event->data_len * sizeof(char) );
stpncpy(datas, event->data, event->data_len);
datas[event->data_len]='\0';
lv_subject_copy_string(&hauteurCuveSubj, datas);
lvgl_port_unlock();
}else{
ESP_LOGE(TAG, "None match :-(");
}
break;
case MQTT_EVENT_ERROR:
ESP_LOGI(TAG, "MQTT_EVENT_ERROR");
@ -716,6 +798,10 @@ void app_main(void)
}
ESP_ERROR_CHECK(ret);
/* Show LVGL objects */
lvgl_port_lock(0);
app_main_display();
lvgl_port_unlock();
ESP_LOGI(TAG, "ESP_WIFI_MODE_STA");
wifi_init_sta();
mqtt_app_start();

View File

@ -1773,7 +1773,7 @@ CONFIG_LV_FONT_MONTSERRAT_26=y
# CONFIG_LV_FONT_MONTSERRAT_34 is not set
# CONFIG_LV_FONT_MONTSERRAT_36 is not set
# CONFIG_LV_FONT_MONTSERRAT_38 is not set
# CONFIG_LV_FONT_MONTSERRAT_40 is not set
CONFIG_LV_FONT_MONTSERRAT_40=y
# CONFIG_LV_FONT_MONTSERRAT_42 is not set
# CONFIG_LV_FONT_MONTSERRAT_44 is not set
# CONFIG_LV_FONT_MONTSERRAT_46 is not set