mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-09 17:29:50 +03:00
scheduler/mqtt running assync with psram, sync without psram
This commit is contained in:
@@ -1538,6 +1538,7 @@ EMSESP::EMSESP()
|
||||
// start all the core services
|
||||
// the services must be loaded in the correct order
|
||||
void EMSESP::start() {
|
||||
system_.PSram(ESP.getPsramSize());
|
||||
// don't need shell if running unit tests
|
||||
#ifndef EMSESP_UNITY
|
||||
// Serial console's shell
|
||||
@@ -1669,6 +1670,9 @@ void EMSESP::loop() {
|
||||
publish_all_loop(); // with HA messages in parts to avoid flooding the mqtt queue
|
||||
mqtt_.loop(); // sends out anything in the MQTT queue
|
||||
webModulesService.loop(); // loop through the external library modules
|
||||
if (system_.PSram() == 0) {
|
||||
webSchedulerService.loop();
|
||||
}
|
||||
|
||||
// force a query on the EMS devices to fetch latest data at a set interval (1 min)
|
||||
scheduled_fetch_values();
|
||||
|
||||
@@ -485,7 +485,6 @@ void System::start() {
|
||||
|
||||
// get current memory values
|
||||
fstotal_ = LittleFS.totalBytes() / 1024; // read only once, it takes 500 ms to read
|
||||
psram_ = ESP.getPsramSize() / 1024;
|
||||
appused_ = ESP.getSketchSize() / 1024;
|
||||
appfree_ = esp_ota_get_running_partition()->size / 1024 - appused_;
|
||||
refreshHeapMem(); // refresh free heap and max alloc heap
|
||||
|
||||
@@ -246,6 +246,10 @@ class System {
|
||||
uint32_t FStotal() {
|
||||
return fstotal_;
|
||||
}
|
||||
|
||||
void PSram(uint32_t psram) {
|
||||
psram_ = psram / 1024;
|
||||
}
|
||||
uint32_t PSram() {
|
||||
return psram_;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,9 @@ void WebSchedulerService::begin() {
|
||||
snprintf(topic, sizeof(topic), "%s/#", F_(scheduler));
|
||||
Mqtt::subscribe(EMSdevice::DeviceType::SCHEDULER, topic, nullptr); // use empty function callback
|
||||
#ifndef EMSESP_STANDALONE
|
||||
xTaskCreate((TaskFunction_t)scheduler_task, "scheduler_task", 4096, NULL, 1, NULL);
|
||||
if (EMSESP::system_.PSram()) {
|
||||
xTaskCreate((TaskFunction_t)scheduler_task, "scheduler_task", 4096, NULL, 1, NULL);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user