Skip to content

Commit

Permalink
scheduler/mqtt running assync with psram, sync without psram
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDvP committed Aug 15, 2024
1 parent 7dc4dc6 commit 20b833b
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 7 deletions.
20 changes: 15 additions & 5 deletions lib/framework/MqttSettingsService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,12 @@ void MqttSettingsService::startClient() {
}
#ifndef TASMOTA_SDK
if (_state.enableTLS) {
isSecure = true;
_mqttClient = new espMqttClientSecure(espMqttClientTypes::UseInternalTask::NO);
isSecure = true;
if (emsesp::EMSESP::system_.PSram() > 0) {
_mqttClient = new espMqttClientSecure(espMqttClientTypes::UseInternalTask::YES);
} else {
_mqttClient = new espMqttClientSecure(espMqttClientTypes::UseInternalTask::NO);
}
if (_state.rootCA == "insecure") {
static_cast<espMqttClientSecure *>(_mqttClient)->setInsecure();
} else {
Expand All @@ -59,8 +63,12 @@ void MqttSettingsService::startClient() {
return;
}
#endif
isSecure = false;
_mqttClient = new espMqttClient(espMqttClientTypes::UseInternalTask::NO);
isSecure = false;
if (emsesp::EMSESP::system_.PSram() > 0) {
_mqttClient = new espMqttClient(espMqttClientTypes::UseInternalTask::YES);
} else {
_mqttClient = new espMqttClient(espMqttClientTypes::UseInternalTask::NO);
}
static_cast<espMqttClient *>(_mqttClient)->onConnect([this](bool sessionPresent) { onMqttConnect(sessionPresent); });
static_cast<espMqttClient *>(_mqttClient)->onDisconnect([this](espMqttClientTypes::DisconnectReason reason) { onMqttDisconnect(reason); });
static_cast<espMqttClient *>(_mqttClient)
Expand All @@ -76,7 +84,9 @@ void MqttSettingsService::loop() {
_disconnectedAt = configureMqtt() ? 0 : uuid::get_uptime();
_reconfigureMqtt = false;
}
_mqttClient->loop();
if (emsesp::EMSESP::system_.PSram() == 0) {
_mqttClient->loop();
}
}

bool MqttSettingsService::isEnabled() {
Expand Down
4 changes: 4 additions & 0 deletions src/emsesp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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();
Expand Down
1 change: 0 additions & 1 deletion src/system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions src/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,10 @@ class System {
uint32_t FStotal() {
return fstotal_;
}

void PSram(uint32_t psram) {
psram_ = psram / 1024;
}
uint32_t PSram() {
return psram_;
}
Expand Down
4 changes: 3 additions & 1 deletion src/web/WebSchedulerService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down

0 comments on commit 20b833b

Please sign in to comment.