mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
tcp stack 6k, move message shuntingYard to scheduler
This commit is contained in:
@@ -40,7 +40,7 @@ build_flags =
|
|||||||
-D CONFIG_ASYNC_TCP_PRIORITY=10 ; default
|
-D CONFIG_ASYNC_TCP_PRIORITY=10 ; default
|
||||||
-D CONFIG_ASYNC_TCP_QUEUE_SIZE=64 ; default
|
-D CONFIG_ASYNC_TCP_QUEUE_SIZE=64 ; default
|
||||||
-D CONFIG_ASYNC_TCP_RUNNING_CORE=1 ; force async_tcp task to be on same core as Arduino app (default is any core)
|
-D CONFIG_ASYNC_TCP_RUNNING_CORE=1 ; force async_tcp task to be on same core as Arduino app (default is any core)
|
||||||
-D CONFIG_ASYNC_TCP_STACK_SIZE=8192 ; stack usage measured: ESP32: ~2.3K, ESP32S3: ~3.5k - (was 6KB/6144, default is 16KB/8192*2)
|
-D CONFIG_ASYNC_TCP_STACK_SIZE=6144 ; default is 16KB/8192*2
|
||||||
; ESPAsyncWebServer
|
; ESPAsyncWebServer
|
||||||
; -D WS_MAX_QUEUED_MESSAGES=0 ; not used, default 8
|
; -D WS_MAX_QUEUED_MESSAGES=0 ; not used, default 8
|
||||||
; -D SSE_MAX_QUEUED_MESSAGES=1 ; for log messages, default 32
|
; -D SSE_MAX_QUEUED_MESSAGES=1 ; for log messages, default 32
|
||||||
|
|||||||
@@ -212,16 +212,20 @@ bool System::command_message(const char * value, const int8_t id, JsonObject out
|
|||||||
return false; // must have a string value
|
return false; // must have a string value
|
||||||
}
|
}
|
||||||
|
|
||||||
auto computed_value = compute(value); // process the message via Shunting Yard
|
EMSESP::webSchedulerService.computed_value.clear();
|
||||||
|
EMSESP::webSchedulerService.raw_value = value;
|
||||||
|
for (uint8_t wait = 0; wait < 2000 && !EMSESP::webSchedulerService.raw_value.empty(); wait++) {
|
||||||
|
delay(1);
|
||||||
|
}
|
||||||
|
|
||||||
if (computed_value.length() == 0) {
|
if (EMSESP::webSchedulerService.computed_value.empty()) {
|
||||||
LOG_WARNING("Message result is empty");
|
LOG_WARNING("Message result is empty");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO("Message: %s", computed_value.c_str()); // send to log
|
LOG_INFO("Message: %s", EMSESP::webSchedulerService.computed_value.c_str()); // send to log
|
||||||
Mqtt::queue_publish(F_(message), computed_value); // send to MQTT if enabled
|
Mqtt::queue_publish(F_(message), EMSESP::webSchedulerService.computed_value); // send to MQTT if enabled
|
||||||
output["api_data"] = computed_value; // send to API
|
output["api_data"] = EMSESP::webSchedulerService.computed_value; // send to API
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -459,6 +459,11 @@ void WebSchedulerService::loop() {
|
|||||||
static uint32_t last_uptime_min = 0;
|
static uint32_t last_uptime_min = 0;
|
||||||
static uint32_t last_uptime_sec = 0;
|
static uint32_t last_uptime_sec = 0;
|
||||||
|
|
||||||
|
if (!raw_value.empty()) { // process a value from system/message command
|
||||||
|
computed_value = compute(raw_value);
|
||||||
|
raw_value.clear();
|
||||||
|
}
|
||||||
|
|
||||||
// get list of scheduler events and exit if it's empty
|
// get list of scheduler events and exit if it's empty
|
||||||
if (scheduleItems_->empty()) {
|
if (scheduleItems_->empty()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -86,6 +86,9 @@ class WebSchedulerService : public StatefulService<WebScheduler> {
|
|||||||
uint8_t count_entities(bool cmd_only = false);
|
uint8_t count_entities(bool cmd_only = false);
|
||||||
bool onChange(const char * cmd);
|
bool onChange(const char * cmd);
|
||||||
|
|
||||||
|
std::string raw_value;
|
||||||
|
std::string computed_value;
|
||||||
|
|
||||||
#if defined(EMSESP_TEST)
|
#if defined(EMSESP_TEST)
|
||||||
void load_test_data();
|
void load_test_data();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user