2022-02-08 16:47:17 +01:00
|
|
|
#include "PeriodicTasks.h"
|
|
|
|
|
|
|
|
|
|
void periodicTasksInit() {
|
|
|
|
|
//задачи редкого выполнения
|
|
|
|
|
ts.add(
|
2022-09-19 01:41:15 +02:00
|
|
|
PTASK, 1000 * 60, [&](void*) {
|
2022-09-13 16:39:55 +02:00
|
|
|
// fs
|
|
|
|
|
getFSInfo();
|
2022-02-08 21:47:20 +01:00
|
|
|
// heap
|
|
|
|
|
String heap = prettyBytes(ESP.getFreeHeap());
|
|
|
|
|
SerialPrint(F("i"), F("HEAP"), heap);
|
2023-02-08 11:24:18 +03:00
|
|
|
SerialPrint(F("i"), F("IoTItems"), (String)IoTItems.size());
|
2022-02-09 21:55:17 +01:00
|
|
|
printGlobalVarSize();
|
2022-02-08 21:47:20 +01:00
|
|
|
jsonWriteStr_(errorsHeapJson, F("heap"), heap);
|
|
|
|
|
// rssi
|
|
|
|
|
jsonWriteInt_(errorsHeapJson, F("rssi"), RSSIquality());
|
|
|
|
|
// uptime
|
|
|
|
|
jsonWriteStr_(errorsHeapJson, F("upt"), prettyMillis(millis()));
|
2022-02-12 03:09:57 +01:00
|
|
|
jsonWriteStr_(errorsHeapJson, F("uptm"), prettyMillis(mqttUptime));
|
2022-02-22 16:40:46 +01:00
|
|
|
jsonWriteStr_(errorsHeapJson, F("uptw"), prettyMillis(wifiUptime));
|
2022-02-16 00:53:52 +01:00
|
|
|
// flash
|
|
|
|
|
jsonWriteInt_(errorsHeapJson, F("fl"), flashWriteNumber);
|
2022-02-08 21:47:20 +01:00
|
|
|
// build ver
|
|
|
|
|
jsonWriteStr_(errorsHeapJson, F("bver"), String(FIRMWARE_VERSION));
|
2022-02-16 00:53:52 +01:00
|
|
|
jsonWriteStr_(errorsHeapJson, F("bn"), String(FIRMWARE_NAME));
|
2022-09-19 01:41:15 +02:00
|
|
|
jsonWriteStr_(errorsHeapJson, F("wver"), getWebVersion());
|
2022-02-22 16:40:46 +01:00
|
|
|
// reset reason
|
|
|
|
|
jsonWriteStr_(errorsHeapJson, F("rst"), ESP_getResetReason());
|
2022-02-08 16:47:17 +01:00
|
|
|
periodicWsSend();
|
|
|
|
|
},
|
|
|
|
|
nullptr, true);
|
2022-02-16 00:53:52 +01:00
|
|
|
SerialPrint("i", "Task", "Periodic tasks init");
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void printGlobalVarSize() {
|
|
|
|
|
size_t settingsFlashJsonSize = settingsFlashJson.length();
|
2022-02-22 16:40:46 +01:00
|
|
|
// SerialPrint(F("i"), F("settingsFlashJson"), String(settingsFlashJsonSize));
|
2022-10-20 00:18:41 +03:00
|
|
|
size_t valuesFlashJsonSize = valuesFlashJson.length();
|
2022-02-09 21:55:17 +01:00
|
|
|
size_t errorsHeapJsonSize = errorsHeapJson.length();
|
2022-02-22 16:40:46 +01:00
|
|
|
// SerialPrint(F("i"), F("errorsHeapJson"), String(errorsHeapJsonSize));
|
2022-02-15 20:43:54 +01:00
|
|
|
size_t devListHeapJsonSize = devListHeapJson.length();
|
2022-02-22 16:40:46 +01:00
|
|
|
// SerialPrint(F("i"), F("devListHeapJson"), String(devListHeapJsonSize));
|
2022-02-09 21:55:17 +01:00
|
|
|
|
2022-10-20 00:18:41 +03:00
|
|
|
SerialPrint(F("i"), F("Var summ sz"), String(settingsFlashJsonSize + valuesFlashJsonSize + errorsHeapJsonSize + devListHeapJsonSize));
|
2022-02-22 17:13:24 +01:00
|
|
|
|
2022-02-09 21:55:17 +01:00
|
|
|
size_t halfBuffer = JSON_BUFFER_SIZE / 2;
|
|
|
|
|
|
2022-02-16 00:53:52 +01:00
|
|
|
if (settingsFlashJsonSize > halfBuffer ||
|
2022-10-20 00:18:41 +03:00
|
|
|
valuesFlashJsonSize > halfBuffer ||
|
2022-02-16 00:53:52 +01:00
|
|
|
errorsHeapJsonSize > halfBuffer ||
|
|
|
|
|
devListHeapJsonSize > halfBuffer) {
|
2022-02-11 00:22:59 +01:00
|
|
|
SerialPrint(F("EE"), F("Json"), F("Insufficient buffer size!!!"));
|
2022-02-12 03:09:57 +01:00
|
|
|
jsonWriteInt(errorsHeapJson, "jse1", 1);
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
2022-02-13 00:40:15 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef ESP8266
|
|
|
|
|
String ESP_getResetReason(void) {
|
|
|
|
|
return ESP.getResetReason();
|
|
|
|
|
}
|
2023-05-27 02:02:33 +03:00
|
|
|
#endif
|
2023-10-17 22:21:13 +03:00
|
|
|
#if defined(esp32s2_4mb) || defined(esp32s3_16mb) || defined(esp32c3m_4mb)
|
2023-05-27 02:02:33 +03:00
|
|
|
String ESP_getResetReason(void) {
|
|
|
|
|
return ESP32GetResetReason(0); // CPU 0
|
|
|
|
|
}
|
|
|
|
|
String ESP32GetResetReason(uint32_t cpu_no) {
|
|
|
|
|
// tools\sdk\include\esp32\rom\rtc.h
|
|
|
|
|
switch (rtc_get_reset_reason((RESET_REASON)cpu_no)) {
|
|
|
|
|
case POWERON_RESET:
|
|
|
|
|
return F("Vbat power on reset"); // 1
|
|
|
|
|
case RTC_SW_SYS_RESET:
|
|
|
|
|
return F("Software reset digital core"); // 3
|
|
|
|
|
// case OWDT_RESET:
|
|
|
|
|
// return F("Legacy Watchdog reset digital core"); // 4
|
|
|
|
|
case DEEPSLEEP_RESET:
|
|
|
|
|
return F("Deep Sleep reset digital core"); // 5
|
|
|
|
|
// case SDIO_RESET:
|
|
|
|
|
// return F("Reset by SLC module, reset digital core"); // 6
|
|
|
|
|
case TG0WDT_SYS_RESET:
|
|
|
|
|
return F("Timer Group0 Watchdog reset digital core"); // 7
|
|
|
|
|
case TG1WDT_SYS_RESET:
|
|
|
|
|
return F("Timer Group1 Watchdog reset digital core"); // 8
|
|
|
|
|
case RTCWDT_SYS_RESET:
|
|
|
|
|
return F("RTC Watchdog Reset digital core"); // 9
|
|
|
|
|
case INTRUSION_RESET:
|
|
|
|
|
return F("Instrusion tested to reset CPU"); // 10
|
|
|
|
|
case TG0WDT_CPU_RESET:
|
|
|
|
|
return F("Time Group reset CPU"); // 11
|
|
|
|
|
case RTC_SW_CPU_RESET:
|
|
|
|
|
return F("Software reset CPU"); // 12
|
|
|
|
|
case RTCWDT_CPU_RESET:
|
|
|
|
|
return F("RTC Watchdog Reset CPU"); // 13
|
|
|
|
|
// case EXT_CPU_RESET:
|
|
|
|
|
// return F("or APP CPU, reseted by PRO CPU"); // 14
|
|
|
|
|
case RTCWDT_BROWN_OUT_RESET:
|
|
|
|
|
return F("Reset when the vdd voltage is not stable"); // 15
|
|
|
|
|
case RTCWDT_RTC_RESET:
|
|
|
|
|
return F("RTC Watchdog reset digital core and rtc module"); // 16
|
|
|
|
|
default:
|
|
|
|
|
return F("NO_MEAN"); // 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
2023-10-02 21:29:02 +03:00
|
|
|
#if defined(esp32_4mb) || defined(esp32_16mb) || defined(esp32cam_4mb)
|
2022-02-13 00:40:15 +01:00
|
|
|
String ESP_getResetReason(void) {
|
|
|
|
|
return ESP32GetResetReason(0); // CPU 0
|
|
|
|
|
}
|
|
|
|
|
String ESP32GetResetReason(uint32_t cpu_no) {
|
|
|
|
|
// tools\sdk\include\esp32\rom\rtc.h
|
|
|
|
|
switch (rtc_get_reset_reason((RESET_REASON)cpu_no)) {
|
|
|
|
|
case POWERON_RESET:
|
|
|
|
|
return F("Vbat power on reset"); // 1
|
|
|
|
|
case SW_RESET:
|
|
|
|
|
return F("Software reset digital core"); // 3
|
|
|
|
|
case OWDT_RESET:
|
2022-02-22 17:13:24 +01:00
|
|
|
return F("Legacy Watchdog reset digital core"); // 4
|
2022-02-13 00:40:15 +01:00
|
|
|
case DEEPSLEEP_RESET:
|
|
|
|
|
return F("Deep Sleep reset digital core"); // 5
|
|
|
|
|
case SDIO_RESET:
|
|
|
|
|
return F("Reset by SLC module, reset digital core"); // 6
|
|
|
|
|
case TG0WDT_SYS_RESET:
|
2022-02-22 17:13:24 +01:00
|
|
|
return F("Timer Group0 Watchdog reset digital core"); // 7
|
2022-02-13 00:40:15 +01:00
|
|
|
case TG1WDT_SYS_RESET:
|
2022-02-22 17:13:24 +01:00
|
|
|
return F("Timer Group1 Watchdog reset digital core"); // 8
|
2022-02-13 00:40:15 +01:00
|
|
|
case RTCWDT_SYS_RESET:
|
2022-02-22 17:13:24 +01:00
|
|
|
return F("RTC Watchdog Reset digital core"); // 9
|
2022-02-13 00:40:15 +01:00
|
|
|
case INTRUSION_RESET:
|
|
|
|
|
return F("Instrusion tested to reset CPU"); // 10
|
|
|
|
|
case TGWDT_CPU_RESET:
|
|
|
|
|
return F("Time Group reset CPU"); // 11
|
|
|
|
|
case SW_CPU_RESET:
|
|
|
|
|
return F("Software reset CPU"); // 12
|
|
|
|
|
case RTCWDT_CPU_RESET:
|
2022-02-22 17:13:24 +01:00
|
|
|
return F("RTC Watchdog Reset CPU"); // 13
|
2022-02-13 00:40:15 +01:00
|
|
|
case EXT_CPU_RESET:
|
|
|
|
|
return F("or APP CPU, reseted by PRO CPU"); // 14
|
|
|
|
|
case RTCWDT_BROWN_OUT_RESET:
|
|
|
|
|
return F("Reset when the vdd voltage is not stable"); // 15
|
|
|
|
|
case RTCWDT_RTC_RESET:
|
2022-02-22 17:13:24 +01:00
|
|
|
return F("RTC Watchdog reset digital core and rtc module"); // 16
|
2022-02-13 00:40:15 +01:00
|
|
|
default:
|
|
|
|
|
return F("NO_MEAN"); // 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|