update espMqttClient, add own mqtt limit, fix queue display, 3.7.0-dev1d

This commit is contained in:
MichaelDvP
2023-08-31 08:09:54 +02:00
parent 7e45c89fcd
commit 120c0b5ca2
5 changed files with 17 additions and 8 deletions

View File

@@ -29,7 +29,7 @@ the LICENSE file.
#endif #endif
#ifndef EMC_MIN_FREE_MEMORY #ifndef EMC_MIN_FREE_MEMORY
#define EMC_MIN_FREE_MEMORY 61440 #define EMC_MIN_FREE_MEMORY 16384
#endif #endif
#ifndef EMC_ESP8266_MULTITHREADING #ifndef EMC_ESP8266_MULTITHREADING
@@ -37,7 +37,7 @@ the LICENSE file.
#endif #endif
#ifndef EMC_ALLOW_NOT_CONNECTED_PUBLISH #ifndef EMC_ALLOW_NOT_CONNECTED_PUBLISH
#define EMC_ALLOW_NOT_CONNECTED_PUBLISH 0 #define EMC_ALLOW_NOT_CONNECTED_PUBLISH 1
#endif #endif
#ifndef EMC_WAIT_FOR_CONNACK #ifndef EMC_WAIT_FOR_CONNACK

View File

@@ -15,8 +15,7 @@ the LICENSE file.
#include "esp_task_wdt.h" #include "esp_task_wdt.h"
#define EMC_SEMAPHORE_TAKE() xSemaphoreTake(_xSemaphore, portMAX_DELAY) #define EMC_SEMAPHORE_TAKE() xSemaphoreTake(_xSemaphore, portMAX_DELAY)
#define EMC_SEMAPHORE_GIVE() xSemaphoreGive(_xSemaphore) #define EMC_SEMAPHORE_GIVE() xSemaphoreGive(_xSemaphore)
// #define EMC_GET_FREE_MEMORY() std::max(ESP.getMaxAllocHeap(), ESP.getMaxAllocPsram()) #define EMC_GET_FREE_MEMORY() std::max(ESP.getMaxAllocHeap(), ESP.getMaxAllocPsram())
#define EMC_GET_FREE_MEMORY() ESP.getFreeHeap()
#define EMC_YIELD() vTaskDelay(1) #define EMC_YIELD() vTaskDelay(1)
#define EMC_GENERATE_CLIENTID(x) snprintf(x, EMC_CLIENTID_LENGTH, "esp32%06llx", ESP.getEfuseMac()); #define EMC_GENERATE_CLIENTID(x) snprintf(x, EMC_CLIENTID_LENGTH, "esp32%06llx", ESP.getEfuseMac());
#elif defined(ARDUINO_ARCH_ESP8266) #elif defined(ARDUINO_ARCH_ESP8266)

View File

@@ -131,7 +131,7 @@ class MqttClient {
uint32_t timeSent; uint32_t timeSent;
espMqttClientInternals::Packet packet; espMqttClientInternals::Packet packet;
template <typename... Args> template <typename... Args>
OutgoingPacket(uint32_t t, espMqttClientTypes::Error error, Args &&... args) OutgoingPacket(uint32_t t, espMqttClientTypes::Error & error, Args &&... args)
: timeSent(t) : timeSent(t)
, packet(error, std::forward<Args>(args)...) { , packet(error, std::forward<Args>(args)...) {
} }

View File

@@ -124,6 +124,8 @@ void Mqtt::resubscribe() {
// Main MQTT loop - sends out top item on publish queue // Main MQTT loop - sends out top item on publish queue
void Mqtt::loop() { void Mqtt::loop() {
queuecount_ = mqttClient_->getQueue();
// exit if MQTT is not enabled or if there is no network connection // exit if MQTT is not enabled or if there is no network connection
if (!connected()) { if (!connected()) {
return; return;
@@ -142,7 +144,7 @@ void Mqtt::loop() {
EMSESP::publish_sensor_values(false); EMSESP::publish_sensor_values(false);
} }
queuecount_ = mqttClient_->getQueue(); // wait for empty queue before sending scheduled device messages
if (queuecount_ > 0) { if (queuecount_ > 0) {
return; return;
} }
@@ -482,7 +484,7 @@ void Mqtt::on_connect() {
connecting_ = true; connecting_ = true;
connectcount_++; // count # reconnects. not currently used. connectcount_++; // count # reconnects. not currently used.
queuecount_ = 0; queuecount_ = mqttClient_->getQueue();
load_settings(); // reload MQTT settings - in case they have changes load_settings(); // reload MQTT settings - in case they have changes
@@ -590,6 +592,14 @@ bool Mqtt::queue_message(const uint8_t operation, const std::string & topic, con
if (!mqtt_enabled_ || topic.empty()) { if (!mqtt_enabled_ || topic.empty()) {
return false; // quit, not using MQTT return false; // quit, not using MQTT
} }
// check free mem
if (ESP.getFreeHeap() < 60 * 1204) {
if (operation == Operation::PUBLISH) {
mqtt_message_id_++;
mqtt_publish_fails_++;
}
return false; // quit, not using MQTT
}
uint16_t packet_id = 0; uint16_t packet_id = 0;
char fulltopic[MQTT_TOPIC_MAX_SIZE]; char fulltopic[MQTT_TOPIC_MAX_SIZE];

View File

@@ -1 +1 @@
#define EMSESP_APP_VERSION "3.7.0-dev.1" #define EMSESP_APP_VERSION "3.7.0-dev.1d"