diff --git a/code/components/jomjol_fileserver_ota/server_ota.cpp b/code/components/jomjol_fileserver_ota/server_ota.cpp index 0ea8f4a1..bdfd8f35 100644 --- a/code/components/jomjol_fileserver_ota/server_ota.cpp +++ b/code/components/jomjol_fileserver_ota/server_ota.cpp @@ -608,7 +608,15 @@ void task_reboot(void *pvParameter) esp_camera_deinit(); WIFIDestroy(); - vTaskDelay(5000 / portTICK_PERIOD_MS); + + // write a reboot, to identify a reboot by purpouse + FILE* pfile = fopen("/sdcard/reboot.txt", "w"); + std::string _s_zw= "reboot"; + fwrite(_s_zw.c_str(), strlen(_s_zw.c_str()), 1, pfile); + fclose(pfile); + + + vTaskDelay(5000 / portTICK_PERIOD_MS); esp_restart(); // Reset type: CPU Reset (Reset both CPUs) vTaskDelay(5000 / portTICK_PERIOD_MS); diff --git a/code/components/jomjol_tfliteclass/server_tflite.cpp b/code/components/jomjol_tfliteclass/server_tflite.cpp index 6ca4c181..c01e8f38 100644 --- a/code/components/jomjol_tfliteclass/server_tflite.cpp +++ b/code/components/jomjol_tfliteclass/server_tflite.cpp @@ -34,10 +34,30 @@ long auto_intervall = 0; bool auto_isrunning = false; int countRounds = 0; +bool isPlannedReboot = false; static const char *TAG = "TFLITE SERVER"; +void CheckIsPlannedReboot() +{ + FILE *pfile; + if ((pfile = fopen("/sdcard/reboot.txt", "r")) == NULL) + { + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Not a planned reboot."); + isPlannedReboot = false; + } + else + { + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "Planned reboot."); + DeleteFile("/sdcard/reboot.txt"); // Prevent Boot Loop!!! + isPlannedReboot = true; + } + + +} + + int getCountFlowRounds() { return countRounds; @@ -772,14 +792,18 @@ void task_autodoFlow(void *pvParameter) { int64_t fr_start, fr_delta_ms; - if (esp_reset_reason() == ESP_RST_PANIC) { - LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Restarted due to an Exception/panic! Postponing first round start by 5 minutes to allow for an OTA or to fetch the log!"); - LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Setting logfile level to DEBUG until the next reboot!"); - LogFile.setLogLevel(ESP_LOG_DEBUG); - //MQTTPublish(GetMQTTMainTopic() + "/" + "status", "Postponing first round", false); - vTaskDelay(60*5000 / portTICK_RATE_MS); // Wait 5 minutes to give time to do an OTA or fetch the log + if (!isPlannedReboot) + { + if (esp_reset_reason() == ESP_RST_PANIC) { + LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Restarted due to an Exception/panic! Postponing first round start by 5 minutes to allow for an OTA or to fetch the log!"); + LogFile.WriteToFile(ESP_LOG_WARN, TAG, "Setting logfile level to DEBUG until the next reboot!"); + LogFile.setLogLevel(ESP_LOG_DEBUG); + //MQTTPublish(GetMQTTMainTopic() + "/" + "status", "Postponing first round", false); + vTaskDelay(60*5000 / portTICK_RATE_MS); // Wait 5 minutes to give time to do an OTA or fetch the log + } } + ESP_LOGD(TAG, "task_autodoFlow: start"); doInit(); diff --git a/code/components/jomjol_tfliteclass/server_tflite.h b/code/components/jomjol_tfliteclass/server_tflite.h index 8ae046b9..d857946e 100644 --- a/code/components/jomjol_tfliteclass/server_tflite.h +++ b/code/components/jomjol_tfliteclass/server_tflite.h @@ -20,6 +20,8 @@ void TFliteDoAutoStart(); bool isSetupModusActive(); int getCountFlowRounds(); +void CheckIsPlannedReboot(); + esp_err_t GetJPG(std::string _filename, httpd_req_t *req); esp_err_t GetRawJPG(httpd_req_t *req); diff --git a/code/main/main.cpp b/code/main/main.cpp index be257c2a..82dfe627 100644 --- a/code/main/main.cpp +++ b/code/main/main.cpp @@ -177,6 +177,7 @@ extern "C" void app_main(void) LogFile.WriteToFile(ESP_LOG_INFO, TAG, versionFormated); LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Reset reason: " + getResetReason()); + CheckIsPlannedReboot(); CheckOTAUpdate(); CheckUpdate(); #ifdef ENABLE_SOFTAP