mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
update espMqttClient, add own mqtt limit, fix queue display, 3.7.0-dev1d
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)...) {
|
||||||
}
|
}
|
||||||
|
|||||||
14
src/mqtt.cpp
14
src/mqtt.cpp
@@ -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];
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define EMSESP_APP_VERSION "3.7.0-dev.1"
|
#define EMSESP_APP_VERSION "3.7.0-dev.1d"
|
||||||
|
|||||||
Reference in New Issue
Block a user