diff --git a/components/audio/CMakeLists.txt b/components/audio/CMakeLists.txt new file mode 100644 index 0000000..e7dac22 --- /dev/null +++ b/components/audio/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "audio.c" + INCLUDE_DIRS "include" + REQUIRES esp32_p4_function_ev_board) diff --git a/components/audio/audio.c b/components/audio/audio.c new file mode 100644 index 0000000..bcfbda6 --- /dev/null +++ b/components/audio/audio.c @@ -0,0 +1,102 @@ +#include +#include "audio.h" +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/queue.h" +#include "esp_log.h" +#include "bsp/esp-bsp.h" + +/* Buffer for reading/writing to I2S driver. Same length as SPIFFS buffer and I2S buffer, for optimal read/write performance. + Recording audio data path: + I2S peripheral -> I2S buffer (DMA) -> App buffer (RAM) -> SPIFFS buffer -> External SPI Flash. + Vice versa for playback. */ +#define BUFFER_SIZE (1024) +#define SAMPLE_RATE (16000) // For recording +#define DEFAULT_VOLUME (25) + +/* Globals */ +static const char *TAG = "audio"; +TaskHandle_t audio_task_handle; + + +// Very simple WAV header, ignores most fields +typedef struct __attribute__((packed)) +{ + uint8_t ignore_0[22]; + uint16_t num_channels; + uint32_t sample_rate; + uint8_t ignore_1[6]; + uint16_t bits_per_sample; + uint8_t ignore_2[4]; + uint32_t data_size; + uint8_t data[]; +} dumb_wav_header_t; + +static void audio_task(void *arg) +{ + esp_codec_dev_handle_t spk_codec_dev = bsp_audio_codec_speaker_init(); + assert(spk_codec_dev); + esp_codec_dev_set_out_vol(spk_codec_dev, DEFAULT_VOLUME); + + /* Pointer to a file that is going to be played */ + const char music_filename[] = "/littlefs/sounds/imperial_march.wav"; + const char *play_filename = music_filename; + + while (1) { + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + + int16_t *wav_bytes = malloc(BUFFER_SIZE); + assert(wav_bytes != NULL); + + /* Open WAV file */ + ESP_LOGI(TAG, "Playing file %s", play_filename); + FILE *play_file = fopen(play_filename, "rb"); + if (play_file == NULL) { + ESP_LOGW(TAG, "%s file does not exist!", play_filename); + break; + } + + /* Read WAV header file */ + dumb_wav_header_t wav_header; + if (fread((void *)&wav_header, 1, sizeof(wav_header), play_file) != sizeof(wav_header)) { + ESP_LOGW(TAG, "Error in reading file"); + break; + } + ESP_LOGI(TAG, "Number of channels: %" PRIu16 "", wav_header.num_channels); + ESP_LOGI(TAG, "Bits per sample: %" PRIu16 "", wav_header.bits_per_sample); + ESP_LOGI(TAG, "Sample rate: %" PRIu32 "", wav_header.sample_rate); + ESP_LOGI(TAG, "Data size: %" PRIu32 "", wav_header.data_size); + + esp_codec_dev_sample_info_t fs = { + .sample_rate = wav_header.sample_rate, + .channel = wav_header.num_channels, + .bits_per_sample = wav_header.bits_per_sample, + }; + esp_codec_dev_open(spk_codec_dev, &fs); + + uint32_t bytes_send_to_i2s = 0; + while (bytes_send_to_i2s < wav_header.data_size) { + /* Get data from SPIFFS and send it to codec */ + size_t bytes_read_from_spiffs = fread(wav_bytes, 1, BUFFER_SIZE, play_file); + esp_codec_dev_write(spk_codec_dev, wav_bytes, bytes_read_from_spiffs); + bytes_send_to_i2s += bytes_read_from_spiffs; + } + fclose(play_file); + free(wav_bytes); + esp_codec_dev_close(spk_codec_dev); + } + } + +void playSound(void) +{ + if(audio_task_handle==NULL){ + BaseType_t ret = xTaskCreate(audio_task, "audio_task", 4096, NULL, 6, &audio_task_handle); + assert(ret == pdPASS); + } + xTaskNotifyGive(audio_task_handle); +} + + diff --git a/components/audio/include/audio.h b/components/audio/include/audio.h new file mode 100644 index 0000000..898b21b --- /dev/null +++ b/components/audio/include/audio.h @@ -0,0 +1,2 @@ + +void playSound(void); diff --git a/components/audio/sounds/imperial_march.wav b/components/audio/sounds/imperial_march.wav new file mode 100644 index 0000000..995e86e Binary files /dev/null and b/components/audio/sounds/imperial_march.wav differ diff --git a/components/domotic_display/CMakeLists.txt b/components/domotic_display/CMakeLists.txt index 545876e..ca29386 100644 --- a/components/domotic_display/CMakeLists.txt +++ b/components/domotic_display/CMakeLists.txt @@ -32,7 +32,6 @@ 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) elseif(${IDF_TARGET} STREQUAL "linux") idf_component_register(SRC_DIRS . fonts images INCLUDE_DIRS "include" diff --git a/components/domotic_display/ihm.c b/components/domotic_display/ihm.c index 1b1a1d1..83d0773 100644 --- a/components/domotic_display/ihm.c +++ b/components/domotic_display/ihm.c @@ -39,7 +39,7 @@ lv_subject_t dateHeureSubj; lv_obj_t *lblTempInt; lv_obj_t *lblTempExt; char tempExtStr[6]; -char tempIntStr[6]; +char tempIntStr[50]; char hauteurCuveStr[9]; char hauteurCuveEvolStr[9]; lv_subject_t tempIntSubj; @@ -112,14 +112,17 @@ void draw_time(struct tm *dateHeure){ void draw_tempExt(char * tempHumid){ //if(display_lock("draw_temp")){ - lv_label_set_text_fmt(lblTempExt,LV_SYMBOL_HOME "\xEF\x8B\x8A : %.1f°C", atof(tempHumid)); + //lv_label_set_text_fmt(lblTempExt,LV_SYMBOL_HOME "\xEF\x8B\x8A : %.1f°C", atof(tempHumid)); + lv_subject_copy_string(&tempExtSubj,tempHumid); // display_unlock("draw_temp"); //} } void draw_temp(char * tempHumid){ //if(display_lock("draw_temp")){ - lv_label_set_text_fmt(lblTempInt, "\xEE\x86\xB0\xEF\x8B\x8A : %s", tempHumid); + ESP_LOGE(TAG, "draw_temp : %s", tempHumid); + lv_subject_copy_string(&tempIntSubj,tempHumid); + //lv_label_set_text_fmt(lblTempInt, "\xEE\x86\xB0\xEF\x8B\x8A : %s", tempHumid); // display_unlock("draw_temp"); //} @@ -146,6 +149,7 @@ lv_obj_t* lblEtatMachine; static lv_style_t style_lbvValue; static lv_style_t style_btn; +/* lv_theme_t *lv_theme_create(void) { lv_theme_t *theme = lv_zalloc(sizeof(*theme)); @@ -162,6 +166,7 @@ void lv_theme_copy(lv_theme_t *dst, const lv_theme_t *src) } lv_memcpy(dst, src, sizeof(*src)); } + */ static void create_ui(void*) { // Initialisation du thème @@ -613,7 +618,7 @@ void showMeteoIcon(const char *icon, lv_obj_t *desc_icon, int childNr) #if CONFIG_IDF_TARGET_LINUX char *str1 = "A:/home/marc/esp/domotic/domotic/components/domotic_display/images_meteo/"; #else - char *str1 = "A:/littlefs/"; + char *str1 = "A:/littlefs/images_meteo/"; #endif int sizeOfStr; sizeOfStr = strlen(str1) + strlen(icon) + 6; @@ -810,7 +815,7 @@ static lv_obj_t* weatherH_fragment_create_obj(int horaireNr, lv_obj_t *parent, b lv_obj_t *desc = lv_label_create(container); lv_obj_set_name(desc, "meteo_desc"); lv_label_set_long_mode(desc, LV_LABEL_LONG_MODE_WRAP); - lv_obj_set_size(desc, 85, LV_SIZE_CONTENT); + lv_obj_set_size(desc, 130, LV_SIZE_CONTENT); //lv_obj_set_style_text_color(desc, lv_color_white(), 0); lv_label_set_text(desc, name); lv_obj_set_style_text_align(desc, LV_TEXT_ALIGN_CENTER, 0); @@ -1288,6 +1293,15 @@ static inline void u8_to_2digits(char *buf, uint8_t v) } +// Ce callback est appelé lorsque le pointeur "tempExt"/"tempInt" est modifié +static void temp_observer_cb(lv_observer_t *observer, lv_subject_t *subject){ + lv_obj_t *tempObj = lv_observer_get_target_obj(observer); + char *templateValue = lv_observer_get_user_data(observer); + char *temp = lv_subject_get_string(subject); + //ESP_LOGE(TAG,"On passe dans temp_observer_cb pour %s avec %s - %s ",lv_obj_get_name(tempObj), templateValue, temp); + lv_label_set_text_fmt(tempObj,templateValue,temp); +} + static void time_observer_cb(lv_observer_t *observer, lv_subject_t *subject) { LV_UNUSED(observer); @@ -1759,7 +1773,7 @@ void messageCardContent(lv_obj_t *cont_messages) lv_subject_init_string(&tempExtSubj, tempExtStr, NULL, 6, "--"); - lv_subject_init_string(&tempIntSubj, tempIntStr, NULL, 6, "--"); + lv_subject_init_string(&tempIntSubj, tempIntStr, NULL, 50, "--"); lv_subject_init_string(&hauteurCuveSubj, hauteurCuveStr, NULL, 9, "--"); lv_subject_init_string(&hauteurCuveEvolSubj, hauteurCuveEvolStr, NULL, 9, "--"); @@ -1840,11 +1854,16 @@ void messageCardContent(lv_obj_t *cont_messages) lv_obj_set_flex_flow(subContent, LV_FLEX_FLOW_COLUMN); lv_obj_set_size(subContent, LV_PCT(70), LV_PCT(100)); lblTempInt = lv_label_create(subContent); - lv_label_set_text(lblTempInt, "\xEE\x86\xB0\xEF\x8B\x8A : --°C"); + lv_obj_set_name(lblTempInt,"lblTempInt"); + char *templateValue="\xEE\x86\xB0\xEF\x8B\x8A : %s"; lv_obj_set_style_text_font(lblTempInt, lv_theme_get_font_large(lblTempInt),0); + lv_subject_add_observer_obj(&tempIntSubj, temp_observer_cb, lblTempInt, templateValue); + lblTempExt = lv_label_create(subContent); - lv_label_set_text(lblTempExt, LV_SYMBOL_HOME "\xEF\x8B\x8A : --°C"); + lv_obj_set_name(lblTempExt,"lblTempExt"); + char *templateValue2=LV_SYMBOL_HOME "\xEF\x8B\x8A : %s°C"; lv_obj_set_style_text_font(lblTempExt, lv_theme_get_font_large(lblTempExt),0); + lv_subject_add_observer_obj(&tempExtSubj, temp_observer_cb, lblTempExt, templateValue2); /*for (size_t i = 0; i < 2; i++) { @@ -1867,11 +1886,11 @@ void messageCardContent(lv_obj_t *cont_messages) lv_obj_set_flex_flow(apps, LV_FLEX_FLOW_ROW); lv_obj_set_style_pad_column(apps, 6, 0); - create_card(apps, "Météo", meteoCardContent, meteoCb); + create_card(apps, "Météo", meteoCardContent, meteoCb,400); - create_card(apps, "Volets", coverCardContent, voletsCb); - create_card(apps, "Minuteur", minuteurCardContent, minuteurCb); - create_card(apps, "Messagerie", messageCardContent, messagerieCb); + create_card(apps, "Volets", coverCardContent, voletsCb,150); + create_card(apps, "Minuteur", minuteurCardContent, minuteurCb,300); + create_card(apps, "Messagerie", messageCardContent, messagerieCb,300); return; } @@ -1953,7 +1972,7 @@ static void app_card_click_cb(lv_event_t *e) app_cb(base_obj); } -void create_card(lv_obj_t *parent, char *lbl, void (*contentFct)(lv_obj_t *), app_cb_t app_cb) +void create_card(lv_obj_t *parent, char *lbl, void (*contentFct)(lv_obj_t *), app_cb_t app_cb, int width) { //lv_style_init(&objstyle); //lv_style_init(&txtstyle); @@ -1968,7 +1987,10 @@ void create_card(lv_obj_t *parent, char *lbl, void (*contentFct)(lv_obj_t *), ap lv_obj_set_id(app_card, "app_card"); lv_obj_set_name(app_card, "app_card"); //lv_obj_remove_style_all(app_card); - lv_obj_set_size(app_card, 300, 200); + if(width>0) + lv_obj_set_size(app_card, width, 200); + else + lv_obj_set_size(app_card, 300, 200); //lv_obj_set_size(app_card, 100, 60); lv_obj_set_style_radius(app_card, 20, 0); lv_obj_set_style_bg_opa(app_card, 50, 0); diff --git a/components/domotic_display/ihm_gateway.c b/components/domotic_display/ihm_gateway.c index 18a222e..b8fea5e 100644 --- a/components/domotic_display/ihm_gateway.c +++ b/components/domotic_display/ihm_gateway.c @@ -49,7 +49,7 @@ void ihm_gateway_process_queue(void) { if (!evt) return; UBaseType_t pending = uxQueueMessagesWaiting(xIHMEventQueue); - ESP_LOGE(TAG,"Evt recu %d. La queue comporte %d éléments à traiter", evt->eEventType, pending); + ESP_LOGV(TAG,"Evt recu %d. La queue comporte %d éléments à traiter", evt->eEventType, pending); lv_async_call(traiteEvt, evt); } @@ -66,6 +66,7 @@ void traiteEvt(void *arg) case IHM_EVT_TIME_SETTED: draw_time(evt->pvData); + evt->bNeedToFreeData=false; break; case IHM_EVT_OTA_STARTED: @@ -74,10 +75,12 @@ void traiteEvt(void *arg) case IHM_EVT_HUMID_TEMP: draw_temp((char *)evt->pvData); + evt->bNeedToFreeData=false; break; case IHM_EVT_TEMP_RECUE: draw_tempExt((char *)evt->pvData); + evt->bNeedToFreeData=false; break; case IHM_EVT_PUISSANCE_EMISE: @@ -94,7 +97,7 @@ void traiteEvt(void *arg) WashingMachineState wms = traiteMessage(etatMachine); char etat[80]; getEtatMachineStr(wms, etat,80); - ESP_LOGE(TAG,"Etat machine : %s", etat); + ESP_LOGI(TAG,"Etat machine : %s", etat); draw_minuteur(etat); // lv_label_set_text(lblEtatMachine, etatFormate); break; @@ -110,24 +113,24 @@ void traiteEvt(void *arg) case IHM_EVT_METEO_RECUE:{ //(void *)evt->pvData; // Pointeur sur tableau //(void *)evt->pvData - ESP_LOGE(TAG, "Reception evt MF"); + ESP_LOGI(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; for (size_t i = 0; i < 3; i++) { - ESP_LOGE(TAG,"Type: %s - Valide : %d - %s", datas->daily[i].type, datas->daily[i].isValid, datas->daily[i].previsions.desc); + ESP_LOGI(TAG,"Type: %s - Valide : %d - %s", datas->daily[i].type, datas->daily[i].isValid, datas->daily[i].previsions.desc); } for (size_t i = 0; i < 3; i++) { - ESP_LOGE(TAG,"Type: %s - Valide : %d - %s - %s - %f", datas->forecast[i].type, datas->forecast[i].isValid, datas->forecast[i].previsions.desc, datas->forecast[i].previsions.icon, datas->forecast[i].previsions.value); + ESP_LOGI(TAG,"Type: %s - Valide : %d - %s - %s - %f", datas->forecast[i].type, datas->forecast[i].isValid, datas->forecast[i].previsions.desc, datas->forecast[i].previsions.icon, datas->forecast[i].previsions.value); } draw_meteo(datas); //lv_subject_set_int(&meteoStatus, 0); //display_unlock("weather_data_retreived"); - ESP_LOGE(TAG, "Fin Reception evt MF"); + ESP_LOGI(TAG, "Fin Reception evt MF"); break; } diff --git a/components/eventsManager/CMakeLists.txt b/components/eventsManager/CMakeLists.txt index 171fbde..20243aa 100644 --- a/components/eventsManager/CMakeLists.txt +++ b/components/eventsManager/CMakeLists.txt @@ -1,3 +1,3 @@ idf_component_register(SRCS "obtain_time.c" "eventsManager.c" obtain_time.c INCLUDE_DIRS "include" - REQUIRES mqtt esp_netif meteofrance) + REQUIRES mqtt esp_netif meteofrance audio) diff --git a/components/eventsManager/eventsManager.c b/components/eventsManager/eventsManager.c index a6080a5..1c3c4d7 100644 --- a/components/eventsManager/eventsManager.c +++ b/components/eventsManager/eventsManager.c @@ -6,6 +6,7 @@ #include "obtain_time.h" #include #include "meteofrance.h" +#include "audio.h" EventGroupHandle_t domotic_event_group; QueueHandle_t ihm_queue; @@ -26,8 +27,42 @@ void startEvtManager(){ /* Tache updateTime - FIN*/ } +const char * domo_event_to_str(domo_events evt) +{ + switch (evt) { + case EVT_WIFI_CONNECTED: return "WIFI_CONNECTED"; + case EVT_TIME_SETTED: return "TIME_SETTED"; + case EVT_BTN_VOLET: return "BTN_VOLET"; + case EVT_PUISSANCE_RECUE: return "PUISSANCE_RECUE"; + case EVT_ETAT_MACHINE: return "ETAT_MACHINE"; + case EVT_HAUTEUR_CUVE: return "HAUTEUR_CUVE"; + case EVT_METEO_RECUE: return "METEO_RECUE"; + case EVT_TEMP_EXT: return "TEMP_EXT"; + case EVT_TEMP_INT: return "TEMP_INT"; + case EVT_FIN_MACHINE: return "FIN_MACHINE"; + default: return "EVT_UNKNOWN"; + } +} + +const char * ihm_event_to_str(eIHMEvent_t evt) +{ + switch (evt) { + case IHM_EVT_WIFI_STATUS: return "IHM_WIFI_STATUS"; + case IHM_EVT_TIME_SETTED: return "IHM_TIME_SETTED"; + case IHM_EVT_OTA_STARTED: return "IHM_OTA_STARTED"; + case IHM_EVT_OTA_PROGRESS: return "IHM_OTA_PROGRESS"; + case IHM_EVT_HUMID_TEMP: return "IHM_HUMID_TEMP"; + case IHM_EVT_PUISSANCE_EMISE: return "IHM_PUISSANCE_EMISE"; + case IHM_EVT_ETAT_MACHINE: return "IHM_ETAT_MACHINE"; + case IHM_EVT_HAUTEUR_CUVE: return "IHM_HAUTEUR_CUVE"; + case IHM_EVT_METEO_RECUE: return "IHM_METEO_RECUE"; + case IHM_EVT_TEMP_RECUE: return "IHM_TEMP_RECUE"; + default: return "IHM_EVT_UNKNOWN"; + } +} + void send_event(domo_events evt, void* pDatas) { - ESP_LOGV(TAG,"On est dans l'event handler %i", evt); + ESP_LOGI(TAG, "EventManager: On est dans l'event handler %s", domo_event_to_str(evt)); xIHMEvent_t *ihmEvt = malloc(sizeof(xIHMEvent_t)); if (!ihmEvt) { @@ -81,10 +116,11 @@ void send_event(domo_events evt, void* pDatas) { case EVT_BTN_VOLET: esp_mqtt_client_publish(client, "volets", pDatas, 0, 0, 0); free(ihmEvt); // rien à envoyer à l'IHM + ihmEvt = NULL; return; case EVT_PUISSANCE_RECUE: - ESP_LOGE(TAG, "Puissance recue %i", *(int*)pDatas); + ESP_LOGI(TAG, "Puissance recue %i", *(int*)pDatas); int *data = malloc(sizeof(int)); if (!data) { ESP_LOGE(TAG, "malloc failed for puissance_5mn"); @@ -170,13 +206,21 @@ void send_event(domo_events evt, void* pDatas) { break; } + case EVT_FIN_MACHINE:{ + playSound(); + free(ihmEvt); // rien à envoyer à l'IHM + ihmEvt = NULL; + break; + } + default: ESP_LOGE(TAG, "Unhandled event type"); free(ihmEvt); + ihmEvt = NULL; return; } - ESP_LOGE(TAG, "Envoi d'un evt %i a l'IHM", ihmEvt->eEventType); if( ihm_queue != NULL && ihmEvt){ + ESP_LOGI(TAG, "Suite %s : Envoi d'un evt %s (%i) a l'IHM", domo_event_to_str(evt), ihm_event_to_str(ihmEvt->eEventType),ihmEvt->eEventType); if (xQueueSendToFront(ihm_queue, &ihmEvt, pdMS_TO_TICKS(10)) != pdPASS) { ESP_LOGE(TAG, "La queue est pleine"); @@ -186,5 +230,8 @@ void send_event(domo_events evt, void* pDatas) { } free(ihmEvt); } + }else{ + ESP_LOGI(TAG, "Suite %s : on n'envoie rien a l'IHM", domo_event_to_str(evt)); + } } diff --git a/components/eventsManager/include/eventsManager.h b/components/eventsManager/include/eventsManager.h index 9aca7d2..9b71186 100644 --- a/components/eventsManager/include/eventsManager.h +++ b/components/eventsManager/include/eventsManager.h @@ -34,7 +34,8 @@ typedef enum domo_events{ EVT_HAUTEUR_CUVE, EVT_METEO_RECUE, EVT_TEMP_EXT, - EVT_TEMP_INT + EVT_TEMP_INT, + EVT_FIN_MACHINE } domo_events; void startEvtManager(); QueueHandle_t getIHMQueueHandle(); diff --git a/components/washingMachineState/CMakeLists.txt b/components/washingMachineState/CMakeLists.txt index 0d888fe..c3fe370 100644 --- a/components/washingMachineState/CMakeLists.txt +++ b/components/washingMachineState/CMakeLists.txt @@ -1,2 +1,2 @@ -idf_component_register(SRCS "washingMachineState.c" PRIV_REQUIRES json +idf_component_register(SRCS "washingMachineState.c" PRIV_REQUIRES json eventsManager INCLUDE_DIRS "include") diff --git a/components/washingMachineState/washingMachineState.c b/components/washingMachineState/washingMachineState.c index 0980177..ce07549 100644 --- a/components/washingMachineState/washingMachineState.c +++ b/components/washingMachineState/washingMachineState.c @@ -2,11 +2,13 @@ #include #include #include "washingMachineState.h" +#include "eventsManager.h" #include #define TAG "WMS" WashingMachineState wms; +bool stateOn; // Indique si la machine est en route WashingMachineState traiteMessage(char* message){ @@ -25,6 +27,15 @@ WashingMachineState traiteMessage(char* message){ wms.depuis = timestamp; wms.ack = ack; + if(wms.etat==LAVEUSE_LAVAGE){ + stateOn=true; + } + if(wms.etat==LAVEUSE_ARRET && stateOn){ + //Fin détectée ! + stateOn=false; + send_event(EVT_FIN_MACHINE, NULL); + } + cJSON_Delete(root); return wms; diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index b3ba1a7..585e2ef 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -5,12 +5,13 @@ set(comps heap nvs_flash esp_netif image_downloader fatfs protocol_examples_comm if(${IDF_TARGET} STREQUAL "esp32p4") message(STATUS "SIMULATION_QEMU = OOF --> main standard") - list(APPEND comps esp32_p4_function_ev_board sdmmc vfs littlefs app_update esp_https_ota espcoredump esp_http_server esp_wifi ) + list(APPEND comps esp32_p4_function_ev_board sdmmc vfs littlefs app_update esp_https_ota espcoredump esp_http_server esp_wifi) idf_component_register(SRCS main.c communication.c INCLUDE_DIRS "./include" REQUIRES ${comps} EMBED_TXTFILES ${PROJECT_DIR}/main/ca_cert.pem EMBED_FILES "index.html") + littlefs_create_partition_image(littlefs medias FLASH_IN_PROJECT) elseif(${IDF_TARGET} STREQUAL "linux") message(STATUS "Linux Mode --> main standard") list(APPEND comps vfs esp_http_server) diff --git a/main/main.c b/main/main.c index 72ed0e8..f29e39d 100644 --- a/main/main.c +++ b/main/main.c @@ -908,6 +908,8 @@ void app_main(void) #if CONFIG_IDF_TARGET_ESP32P4 + //playSound(); + //send_event(EVT_FIN_MACHINE,NULL); // Configuration de la sonde Temp/Humid. am2302_config_t am2302_config = { .gpio_num = AM2302_GPIO, @@ -919,6 +921,8 @@ void app_main(void) xTaskCreate(&readTempHumid, "read_temp_task", 8192, NULL, 5, NULL); #endif + + } void boucleMeteo() diff --git a/main/medias/images_meteo/p10j.png b/main/medias/images_meteo/p10j.png new file mode 100644 index 0000000..71ded95 Binary files /dev/null and b/main/medias/images_meteo/p10j.png differ diff --git a/main/medias/images_meteo/p10n.png b/main/medias/images_meteo/p10n.png new file mode 100644 index 0000000..934d74e Binary files /dev/null and b/main/medias/images_meteo/p10n.png differ diff --git a/main/medias/images_meteo/p11j.png b/main/medias/images_meteo/p11j.png new file mode 100644 index 0000000..33723f3 Binary files /dev/null and b/main/medias/images_meteo/p11j.png differ diff --git a/main/medias/images_meteo/p11n.png b/main/medias/images_meteo/p11n.png new file mode 100644 index 0000000..33723f3 Binary files /dev/null and b/main/medias/images_meteo/p11n.png differ diff --git a/main/medias/images_meteo/p12bisj.png b/main/medias/images_meteo/p12bisj.png new file mode 100644 index 0000000..c8364d3 Binary files /dev/null and b/main/medias/images_meteo/p12bisj.png differ diff --git a/main/medias/images_meteo/p12j.png b/main/medias/images_meteo/p12j.png new file mode 100644 index 0000000..f8ed806 Binary files /dev/null and b/main/medias/images_meteo/p12j.png differ diff --git a/main/medias/images_meteo/p12n.png b/main/medias/images_meteo/p12n.png new file mode 100644 index 0000000..7a7a9d5 Binary files /dev/null and b/main/medias/images_meteo/p12n.png differ diff --git a/main/medias/images_meteo/p13bisj.png b/main/medias/images_meteo/p13bisj.png new file mode 100644 index 0000000..c5adf8c Binary files /dev/null and b/main/medias/images_meteo/p13bisj.png differ diff --git a/main/medias/images_meteo/p13j.png b/main/medias/images_meteo/p13j.png new file mode 100644 index 0000000..c5adf8c Binary files /dev/null and b/main/medias/images_meteo/p13j.png differ diff --git a/main/medias/images_meteo/p13n.png b/main/medias/images_meteo/p13n.png new file mode 100644 index 0000000..c5adf8c Binary files /dev/null and b/main/medias/images_meteo/p13n.png differ diff --git a/main/medias/images_meteo/p14bisj.png b/main/medias/images_meteo/p14bisj.png new file mode 100644 index 0000000..5054cde Binary files /dev/null and b/main/medias/images_meteo/p14bisj.png differ diff --git a/main/medias/images_meteo/p14j.png b/main/medias/images_meteo/p14j.png new file mode 100644 index 0000000..5054cde Binary files /dev/null and b/main/medias/images_meteo/p14j.png differ diff --git a/main/medias/images_meteo/p14n.png b/main/medias/images_meteo/p14n.png new file mode 100644 index 0000000..5054cde Binary files /dev/null and b/main/medias/images_meteo/p14n.png differ diff --git a/main/medias/images_meteo/p15j.png b/main/medias/images_meteo/p15j.png new file mode 100644 index 0000000..1f9b1e8 Binary files /dev/null and b/main/medias/images_meteo/p15j.png differ diff --git a/main/medias/images_meteo/p15n.png b/main/medias/images_meteo/p15n.png new file mode 100644 index 0000000..1f9b1e8 Binary files /dev/null and b/main/medias/images_meteo/p15n.png differ diff --git a/main/medias/images_meteo/p16bisj.png b/main/medias/images_meteo/p16bisj.png new file mode 100644 index 0000000..a3fd4f9 Binary files /dev/null and b/main/medias/images_meteo/p16bisj.png differ diff --git a/main/medias/images_meteo/p16j.png b/main/medias/images_meteo/p16j.png new file mode 100644 index 0000000..a3fd4f9 Binary files /dev/null and b/main/medias/images_meteo/p16j.png differ diff --git a/main/medias/images_meteo/p16n.png b/main/medias/images_meteo/p16n.png new file mode 100644 index 0000000..a3fd4f9 Binary files /dev/null and b/main/medias/images_meteo/p16n.png differ diff --git a/main/medias/images_meteo/p17j.png b/main/medias/images_meteo/p17j.png new file mode 100644 index 0000000..e88c19d Binary files /dev/null and b/main/medias/images_meteo/p17j.png differ diff --git a/main/medias/images_meteo/p17n.png b/main/medias/images_meteo/p17n.png new file mode 100644 index 0000000..243ab07 Binary files /dev/null and b/main/medias/images_meteo/p17n.png differ diff --git a/main/medias/images_meteo/p18j.png b/main/medias/images_meteo/p18j.png new file mode 100644 index 0000000..26903ef Binary files /dev/null and b/main/medias/images_meteo/p18j.png differ diff --git a/main/medias/images_meteo/p18n.png b/main/medias/images_meteo/p18n.png new file mode 100644 index 0000000..26903ef Binary files /dev/null and b/main/medias/images_meteo/p18n.png differ diff --git a/main/medias/images_meteo/p19j.png b/main/medias/images_meteo/p19j.png new file mode 100644 index 0000000..2dcf66e Binary files /dev/null and b/main/medias/images_meteo/p19j.png differ diff --git a/main/medias/images_meteo/p19n.png b/main/medias/images_meteo/p19n.png new file mode 100644 index 0000000..51b7ee2 Binary files /dev/null and b/main/medias/images_meteo/p19n.png differ diff --git a/main/medias/images_meteo/p1j.png b/main/medias/images_meteo/p1j.png new file mode 100644 index 0000000..456aaf4 Binary files /dev/null and b/main/medias/images_meteo/p1j.png differ diff --git a/main/medias/images_meteo/p1n.png b/main/medias/images_meteo/p1n.png new file mode 100644 index 0000000..17a334f Binary files /dev/null and b/main/medias/images_meteo/p1n.png differ diff --git a/main/medias/images_meteo/p20j.png b/main/medias/images_meteo/p20j.png new file mode 100644 index 0000000..0fff270 Binary files /dev/null and b/main/medias/images_meteo/p20j.png differ diff --git a/main/medias/images_meteo/p20n.png b/main/medias/images_meteo/p20n.png new file mode 100644 index 0000000..0fff270 Binary files /dev/null and b/main/medias/images_meteo/p20n.png differ diff --git a/main/medias/images_meteo/p21j.png b/main/medias/images_meteo/p21j.png new file mode 100644 index 0000000..38e32da Binary files /dev/null and b/main/medias/images_meteo/p21j.png differ diff --git a/main/medias/images_meteo/p21n.png b/main/medias/images_meteo/p21n.png new file mode 100644 index 0000000..f74cad9 Binary files /dev/null and b/main/medias/images_meteo/p21n.png differ diff --git a/main/medias/images_meteo/p22j.png b/main/medias/images_meteo/p22j.png new file mode 100644 index 0000000..820bdd9 Binary files /dev/null and b/main/medias/images_meteo/p22j.png differ diff --git a/main/medias/images_meteo/p22n.png b/main/medias/images_meteo/p22n.png new file mode 100644 index 0000000..820bdd9 Binary files /dev/null and b/main/medias/images_meteo/p22n.png differ diff --git a/main/medias/images_meteo/p23j.png b/main/medias/images_meteo/p23j.png new file mode 100644 index 0000000..82f7b10 Binary files /dev/null and b/main/medias/images_meteo/p23j.png differ diff --git a/main/medias/images_meteo/p23n.png b/main/medias/images_meteo/p23n.png new file mode 100644 index 0000000..82f7b10 Binary files /dev/null and b/main/medias/images_meteo/p23n.png differ diff --git a/main/medias/images_meteo/p24j.png b/main/medias/images_meteo/p24j.png new file mode 100644 index 0000000..90a2442 Binary files /dev/null and b/main/medias/images_meteo/p24j.png differ diff --git a/main/medias/images_meteo/p24n.png b/main/medias/images_meteo/p24n.png new file mode 100644 index 0000000..93efeff Binary files /dev/null and b/main/medias/images_meteo/p24n.png differ diff --git a/main/medias/images_meteo/p25j.png b/main/medias/images_meteo/p25j.png new file mode 100644 index 0000000..56361d9 Binary files /dev/null and b/main/medias/images_meteo/p25j.png differ diff --git a/main/medias/images_meteo/p25n.png b/main/medias/images_meteo/p25n.png new file mode 100644 index 0000000..56361d9 Binary files /dev/null and b/main/medias/images_meteo/p25n.png differ diff --git a/main/medias/images_meteo/p26j.png b/main/medias/images_meteo/p26j.png new file mode 100644 index 0000000..e3bbf64 Binary files /dev/null and b/main/medias/images_meteo/p26j.png differ diff --git a/main/medias/images_meteo/p26n.png b/main/medias/images_meteo/p26n.png new file mode 100644 index 0000000..347900d Binary files /dev/null and b/main/medias/images_meteo/p26n.png differ diff --git a/main/medias/images_meteo/p27j.png b/main/medias/images_meteo/p27j.png new file mode 100644 index 0000000..97ba1cb Binary files /dev/null and b/main/medias/images_meteo/p27j.png differ diff --git a/main/medias/images_meteo/p27n.png b/main/medias/images_meteo/p27n.png new file mode 100644 index 0000000..97ba1cb Binary files /dev/null and b/main/medias/images_meteo/p27n.png differ diff --git a/main/medias/images_meteo/p28j.png b/main/medias/images_meteo/p28j.png new file mode 100644 index 0000000..24e0e49 Binary files /dev/null and b/main/medias/images_meteo/p28j.png differ diff --git a/main/medias/images_meteo/p28n.png b/main/medias/images_meteo/p28n.png new file mode 100644 index 0000000..2546521 Binary files /dev/null and b/main/medias/images_meteo/p28n.png differ diff --git a/main/medias/images_meteo/p29j.png b/main/medias/images_meteo/p29j.png new file mode 100644 index 0000000..865932a Binary files /dev/null and b/main/medias/images_meteo/p29j.png differ diff --git a/main/medias/images_meteo/p29n.png b/main/medias/images_meteo/p29n.png new file mode 100644 index 0000000..865932a Binary files /dev/null and b/main/medias/images_meteo/p29n.png differ diff --git a/main/medias/images_meteo/p2j.png b/main/medias/images_meteo/p2j.png new file mode 100644 index 0000000..fe0add7 Binary files /dev/null and b/main/medias/images_meteo/p2j.png differ diff --git a/main/medias/images_meteo/p2n.png b/main/medias/images_meteo/p2n.png new file mode 100644 index 0000000..48ceeb8 Binary files /dev/null and b/main/medias/images_meteo/p2n.png differ diff --git a/main/medias/images_meteo/p30j.png b/main/medias/images_meteo/p30j.png new file mode 100644 index 0000000..b74b5fe Binary files /dev/null and b/main/medias/images_meteo/p30j.png differ diff --git a/main/medias/images_meteo/p30n.png b/main/medias/images_meteo/p30n.png new file mode 100644 index 0000000..5f587e7 Binary files /dev/null and b/main/medias/images_meteo/p30n.png differ diff --git a/main/medias/images_meteo/p31j.png b/main/medias/images_meteo/p31j.png new file mode 100644 index 0000000..5007106 Binary files /dev/null and b/main/medias/images_meteo/p31j.png differ diff --git a/main/medias/images_meteo/p31n.png b/main/medias/images_meteo/p31n.png new file mode 100644 index 0000000..5007106 Binary files /dev/null and b/main/medias/images_meteo/p31n.png differ diff --git a/main/medias/images_meteo/p32j.png b/main/medias/images_meteo/p32j.png new file mode 100644 index 0000000..05ea58c Binary files /dev/null and b/main/medias/images_meteo/p32j.png differ diff --git a/main/medias/images_meteo/p32n.png b/main/medias/images_meteo/p32n.png new file mode 100644 index 0000000..05ea58c Binary files /dev/null and b/main/medias/images_meteo/p32n.png differ diff --git a/main/medias/images_meteo/p3bisj.png b/main/medias/images_meteo/p3bisj.png new file mode 100644 index 0000000..233c5e6 Binary files /dev/null and b/main/medias/images_meteo/p3bisj.png differ diff --git a/main/medias/images_meteo/p3j.png b/main/medias/images_meteo/p3j.png new file mode 100644 index 0000000..bd9eb1a Binary files /dev/null and b/main/medias/images_meteo/p3j.png differ diff --git a/main/medias/images_meteo/p3n.png b/main/medias/images_meteo/p3n.png new file mode 100644 index 0000000..bd9eb1a Binary files /dev/null and b/main/medias/images_meteo/p3n.png differ diff --git a/main/medias/images_meteo/p4j.png b/main/medias/images_meteo/p4j.png new file mode 100644 index 0000000..3ab2d7b Binary files /dev/null and b/main/medias/images_meteo/p4j.png differ diff --git a/main/medias/images_meteo/p4n.png b/main/medias/images_meteo/p4n.png new file mode 100644 index 0000000..a2a464e Binary files /dev/null and b/main/medias/images_meteo/p4n.png differ diff --git a/main/medias/images_meteo/p5bisj.png b/main/medias/images_meteo/p5bisj.png new file mode 100644 index 0000000..8c55f74 Binary files /dev/null and b/main/medias/images_meteo/p5bisj.png differ diff --git a/main/medias/images_meteo/p5j.png b/main/medias/images_meteo/p5j.png new file mode 100644 index 0000000..281fa7f Binary files /dev/null and b/main/medias/images_meteo/p5j.png differ diff --git a/main/medias/images_meteo/p5n.png b/main/medias/images_meteo/p5n.png new file mode 100644 index 0000000..f39b708 Binary files /dev/null and b/main/medias/images_meteo/p5n.png differ diff --git a/main/medias/images_meteo/p6bisj.png b/main/medias/images_meteo/p6bisj.png new file mode 100644 index 0000000..246da99 Binary files /dev/null and b/main/medias/images_meteo/p6bisj.png differ diff --git a/main/medias/images_meteo/p6j.png b/main/medias/images_meteo/p6j.png new file mode 100644 index 0000000..246da99 Binary files /dev/null and b/main/medias/images_meteo/p6j.png differ diff --git a/main/medias/images_meteo/p6n.png b/main/medias/images_meteo/p6n.png new file mode 100644 index 0000000..246da99 Binary files /dev/null and b/main/medias/images_meteo/p6n.png differ diff --git a/main/medias/images_meteo/p7j.png b/main/medias/images_meteo/p7j.png new file mode 100644 index 0000000..e75ff9e Binary files /dev/null and b/main/medias/images_meteo/p7j.png differ diff --git a/main/medias/images_meteo/p7n.png b/main/medias/images_meteo/p7n.png new file mode 100644 index 0000000..e75ff9e Binary files /dev/null and b/main/medias/images_meteo/p7n.png differ diff --git a/main/medias/images_meteo/p8j.png b/main/medias/images_meteo/p8j.png new file mode 100644 index 0000000..7c09d37 Binary files /dev/null and b/main/medias/images_meteo/p8j.png differ diff --git a/main/medias/images_meteo/p8n.png b/main/medias/images_meteo/p8n.png new file mode 100644 index 0000000..7c09d37 Binary files /dev/null and b/main/medias/images_meteo/p8n.png differ diff --git a/main/medias/images_meteo/p9j.png b/main/medias/images_meteo/p9j.png new file mode 100644 index 0000000..8ac0732 Binary files /dev/null and b/main/medias/images_meteo/p9j.png differ diff --git a/main/medias/images_meteo/p9n.png b/main/medias/images_meteo/p9n.png new file mode 100644 index 0000000..8ac0732 Binary files /dev/null and b/main/medias/images_meteo/p9n.png differ diff --git a/main/medias/sounds/imperial_march.wav b/main/medias/sounds/imperial_march.wav new file mode 100644 index 0000000..995e86e Binary files /dev/null and b/main/medias/sounds/imperial_march.wav differ diff --git a/partitions.csv b/partitions.csv index 7d99991..6383f0b 100644 --- a/partitions.csv +++ b/partitions.csv @@ -1,10 +1,10 @@ # ESP-IDF Partition Table # Name, Type, SubType, Offset, Size, Flags -nvs,data,nvs,,0x6000,, -otadata,data,ota,,0x2000,, -phy_init,data,phy,,0x1000,, -factory,app,factory,,3M,, -ota_0,app,ota_0,,3M,, -ota_1,app,ota_1,,3M,, -littlefs,data,littlefs,,1M,, -coredump, data, coredump,,64K,, +nvs,data,nvs,,0x6000, +otadata,data,ota,,0x2000, +phy_init,data,phy,,0x1000, +factory,app,factory,,3M, +ota_0,app,ota_0,,3M, +ota_1,app,ota_1,,3M, +littlefs,data,littlefs,,3M, +coredump,data,coredump,,64K,