fix meteo (images...)
This commit is contained in:
parent
28c5870ca6
commit
d9ac74a595
@ -32,7 +32,7 @@ if(${IDF_TARGET} STREQUAL "esp32p4" OR ${IDF_TARGET} STREQUAL "esp32s3")
|
||||
lvgl_port_create_c_image("images/mqtt_ok.png" "images/" "AUTO" "NONE")
|
||||
lvgl_port_create_c_image("images/mqtt_ko.png" "images/" "ARGB8888" "NONE")
|
||||
lvgl_port_add_images(${COMPONENT_LIB} "images/")
|
||||
#littlefs_create_partition_image(littlefs images_meteo FLASH_IN_PROJECT)
|
||||
littlefs_create_partition_image(littlefs images_meteo FLASH_IN_PROJECT)
|
||||
elseif(${IDF_TARGET} STREQUAL "linux")
|
||||
idf_component_register(SRC_DIRS . fonts images
|
||||
INCLUDE_DIRS "include"
|
||||
|
||||
@ -119,12 +119,12 @@ void draw_temp(char * tempHumid){
|
||||
void draw_meteo(meteo_event_payload_t *meteo){
|
||||
//if(display_lock("updateTime")){
|
||||
//lv_label_set_text(jour, dateHeure);
|
||||
lv_subject_set_pointer(&forecastH1Subj, &meteo->daily[0]);
|
||||
lv_subject_set_pointer(&forecastH2Subj, &meteo->daily[1]);
|
||||
lv_subject_set_pointer(&forecastH3Subj, &meteo->daily[2]);
|
||||
lv_subject_set_pointer(&forecastD1Subj, &meteo->forecast[0]);
|
||||
lv_subject_set_pointer(&forecastD2Subj, &meteo->forecast[1]);
|
||||
lv_subject_set_pointer(&forecastD3Subj, &meteo->forecast[2]);
|
||||
lv_subject_set_pointer(&forecastH1Subj, &meteo->forecast[0]);
|
||||
lv_subject_set_pointer(&forecastH2Subj, &meteo->forecast[1]);
|
||||
lv_subject_set_pointer(&forecastH3Subj, &meteo->forecast[2]);
|
||||
lv_subject_set_pointer(&forecastD1Subj, &meteo->daily[0]);
|
||||
lv_subject_set_pointer(&forecastD2Subj, &meteo->daily[1]);
|
||||
lv_subject_set_pointer(&forecastD3Subj, &meteo->daily[2]);
|
||||
|
||||
//display_unlock("updateTime");
|
||||
//}
|
||||
@ -244,13 +244,14 @@ void init_display_ihm(){
|
||||
keyboard = lv_sdl_keyboard_create();
|
||||
#else
|
||||
lvgl_port_cfg_t lvgl_cfg = ESP_LVGL_PORT_INIT_CONFIG();
|
||||
lvgl_cfg.task_priority=4;
|
||||
lvgl_cfg.task_priority=18;
|
||||
lvgl_cfg.task_stack=12000;
|
||||
bsp_display_cfg_t cfg = {
|
||||
.lvgl_port_cfg = lvgl_cfg,
|
||||
.buffer_size = 1024*600,//BSP_LCD_DRAW_BUFF_SIZE,
|
||||
.double_buffer = 1,
|
||||
.hw_cfg = {
|
||||
.dsi_bus.lane_bit_rate_mbps= 1000
|
||||
.dsi_bus.lane_bit_rate_mbps= BSP_LCD_MIPI_DSI_LANE_BITRATE_MBPS
|
||||
},
|
||||
.flags = {
|
||||
.buff_dma = false,
|
||||
@ -259,8 +260,8 @@ void init_display_ihm(){
|
||||
}
|
||||
};
|
||||
ESP_LOGE(TAG,"On demarre le display");
|
||||
lv_display_t *dsp = bsp_display_start();
|
||||
//lv_display_t *dsp = bsp_display_start_with_config(&cfg);
|
||||
//lv_display_t *dsp = bsp_display_start();
|
||||
lv_display_t *dsp = bsp_display_start_with_config(&cfg);
|
||||
|
||||
/*bsp_display_lock(0);
|
||||
bsp_display_rotate(dsp,LV_DISP_ROTATION_90);
|
||||
@ -499,7 +500,13 @@ static void weatherdataJour_obs_cb(lv_observer_t *observer, lv_subject_t *subjec
|
||||
{
|
||||
|
||||
// Retrieve weatherdata
|
||||
const struct meteodailyforecast_data *data = subject->value.pointer;
|
||||
struct meteodailyforecast_data *data = subject->value.pointer;
|
||||
|
||||
ESP_LOGE(TAG,"Est valide : %d - %s", data->isValid, data->previsions.desc);
|
||||
ESP_LOGE(TAG,"Est valide : %d - %s", data->isValid, data->previsions.desc);
|
||||
ESP_LOGE(TAG,"Est valide : %d - %s", data->isValid, data->previsions.desc);
|
||||
|
||||
|
||||
bool isMinimal = observer->user_data;
|
||||
ESP_LOGI(TAG, "CB meteo jour declenché. Meteo valide : %b - Mode minimal : %d", data->isValid, isMinimal);
|
||||
if(!data->isValid){
|
||||
@ -538,6 +545,8 @@ static void weatherdataJour_obs_cb(lv_observer_t *observer, lv_subject_t *subjec
|
||||
}
|
||||
}
|
||||
}
|
||||
//free(data);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -547,7 +556,7 @@ static void weatherdataHeure_obs_cb(lv_observer_t *observer, lv_subject_t *subje
|
||||
{
|
||||
ESP_LOGV("MeteoFrance", "CB meteo horaire declenché");
|
||||
// Retrieve weatherdata
|
||||
const struct meteoforecast_data *data = subject->value.pointer;
|
||||
struct meteoforecast_data *data = subject->value.pointer;
|
||||
if(data->isValid){
|
||||
|
||||
//printffd(data);
|
||||
@ -566,6 +575,7 @@ static void weatherdataHeure_obs_cb(lv_observer_t *observer, lv_subject_t *subje
|
||||
lv_label_set_text(datefld, buffer);
|
||||
lv_label_set_text(lv_obj_get_child(temp_desc_icon, 2), data->previsions.desc);
|
||||
lv_label_set_text_fmt(lv_obj_get_child(temp_desc_icon, 0), "%.1f°C", data->previsions.value);
|
||||
//free(data);
|
||||
|
||||
}else{
|
||||
ESP_LOGE(TAG, "Pas de odnnées valides");
|
||||
@ -576,14 +586,17 @@ static void weatherdataHeure_obs_cb(lv_observer_t *observer, lv_subject_t *subje
|
||||
void showMeteoIcon(const char *icon, lv_obj_t *desc_icon, int childNr)
|
||||
{
|
||||
lv_obj_t *img = lv_obj_get_child(desc_icon, childNr);
|
||||
//char *str1 = "A:/littlefs/";
|
||||
char *str1 = "A:/home/marc/domotic/components/domotic_display/images_meteo";
|
||||
#if CONFIG_IDF_TARGET_LINUX
|
||||
char *str1 = "A:/home/marc/esp/domotic/domotic/components/domotic_display/images_meteo/";
|
||||
#else
|
||||
char *str1 = "A:/littlefs/";
|
||||
#endif
|
||||
int sizeOfStr;
|
||||
sizeOfStr = strlen(str1) + strlen(icon) + 6;
|
||||
char *result = malloc(sizeOfStr);
|
||||
snprintf(result,sizeOfStr, "%s%s.png", str1, icon);
|
||||
ESP_LOGV(TAG,"On affiche l'image %s", result);
|
||||
lv_image_set_src(img, "A:/home/marc/esp/domotic/domotic/components/domotic_display/images_meteo/p4j.png");
|
||||
lv_image_set_src(img, result);
|
||||
free(result);
|
||||
}
|
||||
|
||||
|
||||
@ -115,24 +115,21 @@ void traiteEvt(void *arg)
|
||||
case IHM_EVT_METEO_RECUE:{
|
||||
//(void *)evt->pvData; // Pointeur sur tableau
|
||||
//(void *)evt->pvData
|
||||
ESP_LOGE("MeteoFrance", "------------------------------------- Set des subjects J --------------------------------");
|
||||
ESP_LOGE(TAG, "Reception evt MF");
|
||||
|
||||
// On ne veut liberer la memoire que lorsque l'evenement aura été traité!
|
||||
evt->bNeedToFreeData=false;
|
||||
meteo_event_payload_t *datas = (meteo_event_payload_t *) evt->pvData;
|
||||
ESP_LOGE(TAG,"Est valide : %d - %s", datas->daily[0].isValid, datas->daily[0].previsions.desc);
|
||||
ESP_LOGE(TAG,"Est valide : %d - %s", datas->daily[1].isValid, datas->daily[1].previsions.desc);
|
||||
ESP_LOGE(TAG,"Est valide : %d - %s", datas->daily[2].isValid, datas->daily[2].previsions.desc);
|
||||
ESP_LOGE(TAG,"Est valide : %d - %s", datas->forecast[0].isValid, datas->forecast[0].previsions.desc);
|
||||
ESP_LOGE(TAG,"Est valide : %d - %s", datas->forecast[1].isValid, datas->forecast[1].previsions.desc);
|
||||
ESP_LOGE(TAG,"Est valide : %d - %s", datas->forecast[2].isValid, datas->forecast[2].previsions.desc);
|
||||
draw_meteo(datas);
|
||||
// Prévisions des 3 prochains jours
|
||||
//lv_subject_set_pointer(&forecastD1Subj, &dailyDatas[0]);
|
||||
//lv_subject_set_pointer(&forecastD2Subj, &dailyDatas[1]);
|
||||
//lv_subject_set_pointer(&forecastD3Subj, &dailyDatas[2]);
|
||||
|
||||
ESP_LOGE("MeteoFrance", "------------------------------------- Set des subjects H--------------------------------");
|
||||
// Prévisions des 3 prochains jours
|
||||
//ESP_LOGV("MeteoFrance", "Pointeur %lli", datas[0].datetime);
|
||||
//lv_subject_set_pointer(&forecastH1Subj, &datas[0]);
|
||||
//lv_subject_set_pointer(&forecastH2Subj, &datas[1]);
|
||||
// lv_subject_set_pointer(&forecastH3Subj, &datas[2]);
|
||||
|
||||
//lv_subject_set_int(&meteoStatus, 0);
|
||||
//display_unlock("weather_data_retreived");
|
||||
ESP_LOGE(TAG, "------------------------------------- Fin Set des subjects --------------------------------");
|
||||
ESP_LOGE(TAG, "Fin Reception evt MF");
|
||||
break;
|
||||
}
|
||||
|
||||
@ -141,8 +138,10 @@ void traiteEvt(void *arg)
|
||||
break;
|
||||
}
|
||||
// Nettoyage mémoire sécurisé
|
||||
if (evt->bNeedToFreeData && evt->pvData)
|
||||
if (evt->bNeedToFreeData && evt->pvData){
|
||||
ESP_LOGE(TAG, "Libération mémoire");
|
||||
free(evt->pvData);
|
||||
}
|
||||
free(evt);
|
||||
ESP_LOGV(TAG, "Evt traité");
|
||||
}
|
||||
|
||||
@ -135,7 +135,7 @@ void send_event(domo_events evt, void* pDatas) {
|
||||
}
|
||||
|
||||
memcpy(payload->daily, incoming->daily, sizeof(incoming->daily));
|
||||
memcpy(payload->forecast, incoming->daily, sizeof(incoming->forecast));
|
||||
memcpy(payload->forecast, incoming->forecast, sizeof(incoming->forecast));
|
||||
ihmEvt->eEventType = IHM_EVT_METEO_RECUE;
|
||||
ihmEvt->pvData = payload;
|
||||
ihmEvt->bNeedToFreeData = true;
|
||||
|
||||
20
main/main.c
20
main/main.c
@ -853,6 +853,24 @@ void lightSensorTask(void *pvParameter){
|
||||
}
|
||||
*/
|
||||
}
|
||||
#include "esp_littlefs.h"
|
||||
|
||||
void littlefs_mount(void)
|
||||
{
|
||||
esp_vfs_littlefs_conf_t conf = {
|
||||
.base_path = "/littlefs",
|
||||
.partition_label = "littlefs", // ← DOIT matcher partitions.csv
|
||||
.format_if_mount_failed = false
|
||||
};
|
||||
|
||||
esp_err_t ret = esp_vfs_littlefs_register(&conf);
|
||||
|
||||
if (ret != ESP_OK) {
|
||||
printf("LittleFS mount failed: %s\n", esp_err_to_name(ret));
|
||||
} else {
|
||||
printf("LittleFS mounted at /littlefs\n");
|
||||
}
|
||||
}
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
@ -861,7 +879,7 @@ void app_main(void)
|
||||
|
||||
ihm_gateway_init();
|
||||
startEvtManager();
|
||||
|
||||
littlefs_mount();
|
||||
boucleMeteo();
|
||||
|
||||
#if CONFIG_IDF_TARGET_LINUX
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user