mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
scheduler/mqtt running assync with psram, sync without psram
This commit is contained in:
@@ -42,7 +42,11 @@ void MqttSettingsService::startClient() {
|
||||
#ifndef TASMOTA_SDK
|
||||
if (_state.enableTLS) {
|
||||
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 {
|
||||
@@ -60,7 +64,11 @@ void MqttSettingsService::startClient() {
|
||||
}
|
||||
#endif
|
||||
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)
|
||||
@@ -76,7 +84,9 @@ void MqttSettingsService::loop() {
|
||||
_disconnectedAt = configureMqtt() ? 0 : uuid::get_uptime();
|
||||
_reconfigureMqtt = false;
|
||||
}
|
||||
if (emsesp::EMSESP::system_.PSram() == 0) {
|
||||
_mqttClient->loop();
|
||||
}
|
||||
}
|
||||
|
||||
bool MqttSettingsService::isEnabled() {
|
||||
|
||||
@@ -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
|
||||
if (EMSESP::system_.PSram()) {
|
||||
xTaskCreate((TaskFunction_t)scheduler_task, "scheduler_task", 4096, NULL, 1, NULL);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user