From bf1b27a7925d051a3612a6612510cc991c5eb3b5 Mon Sep 17 00:00:00 2001 From: iranl Date: Tue, 1 Apr 2025 22:27:50 +0200 Subject: [PATCH] MQTT internal task --- src/networkDevices/NetworkDevice.cpp | 36 +++++++++++++++++++++++----- src/networkDevices/NetworkDevice.h | 1 + 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/networkDevices/NetworkDevice.cpp b/src/networkDevices/NetworkDevice.cpp index 7ce2c65..d4eedae 100644 --- a/src/networkDevices/NetworkDevice.cpp +++ b/src/networkDevices/NetworkDevice.cpp @@ -7,9 +7,19 @@ #include "SPIFFS.h" #include "../MqttTopics.h" #include "PreferencesKeys.h" +#ifdef CONFIG_SOC_SPIRAM_SUPPORTED +#include "esp_psram.h" +#endif void NetworkDevice::init() { + #ifdef CONFIG_SOC_SPIRAM_SUPPORTED + if(esp_psram_get_size() > 0) + { + _mqttInternal = true; + } + #endif + if(_preferences->getBool(preference_mqtt_ssl_enabled, false)) { if (!SPIFFS.begin(true)) { Log->println("SPIFFS Mount Failed"); @@ -28,12 +38,19 @@ void NetworkDevice::init() char* caDest; caDest = (char *)malloc(sizeof(char) * (ca_cert.length()+1)); strcpy(caDest, ca_cert.c_str()); - + if(ca_cert.length() > 1) { _useEncryption = true; Log->println("MQTT over TLS."); - _mqttClientSecure = new espMqttClientSecure(espMqttClientTypes::UseInternalTask::YES); + if(_mqttInternal) + { + _mqttClientSecure = new espMqttClientSecure(espMqttClientTypes::UseInternalTask::YES); + } + else + { + _mqttClientSecure = new espMqttClientSecure(espMqttClientTypes::UseInternalTask::NO); + } _mqttClientSecure->setCACert(caDest); File file2 = SPIFFS.open("/mqtt_ssl.crt"); @@ -48,7 +65,7 @@ void NetworkDevice::init() char* certDest; certDest = (char *)malloc(sizeof(char) * (cert.length()+1)); strcpy(certDest, cert.c_str()); - + String key = file3.readString(); file3.close(); char* keyDest; @@ -70,7 +87,14 @@ void NetworkDevice::init() if (!_useEncryption) { Log->println("MQTT without TLS."); - _mqttClient = new espMqttClient(espMqttClientTypes::UseInternalTask::YES); + if(_mqttInternal) + { + _mqttClient = new espMqttClient(espMqttClientTypes::UseInternalTask::YES); + } + else + { + _mqttClient = new espMqttClient(espMqttClientTypes::UseInternalTask::NO); + } } if(_preferences->getBool(preference_mqtt_log_enabled, false) || _preferences->getBool(preference_webserial_enabled, false)) @@ -101,9 +125,9 @@ void NetworkDevice::init() } void NetworkDevice::update() { - if (_mqttEnabled) + if (_mqttEnabled && !_mqttInternal) { - //getMqttClient()->loop(); + getMqttClient()->loop(); } } diff --git a/src/networkDevices/NetworkDevice.h b/src/networkDevices/NetworkDevice.h index 667bf64..4bf949e 100644 --- a/src/networkDevices/NetworkDevice.h +++ b/src/networkDevices/NetworkDevice.h @@ -64,6 +64,7 @@ protected: bool _useEncryption = false; bool _mqttEnabled = true; + bool _mqttInternal = false; char* _path; #endif