mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2026-07-28 17:42:45 +00:00
Merge branch 'dev' into core3
This commit is contained in:
@@ -19,6 +19,9 @@ For more details go to [emsesp.org](https://emsesp.org/).
|
|||||||
- fix setting date/time on Junkers thermostats
|
- fix setting date/time on Junkers thermostats
|
||||||
- offset of hpminflowtemp [#3144](https://github.com/emsesp/EMS-ESP32/issues/3144)
|
- offset of hpminflowtemp [#3144](https://github.com/emsesp/EMS-ESP32/issues/3144)
|
||||||
- water circulation command [#3149](https://github.com/emsesp/EMS-ESP32/pull/3149)
|
- water circulation command [#3149](https://github.com/emsesp/EMS-ESP32/pull/3149)
|
||||||
|
- start scheduler after customEntities, delay scheduler loop after startup, handling of `system/restart` command [#3146](https://github.com/emsesp/EMS-ESP32/issues/3146)
|
||||||
|
- possible memory leaks fixed.
|
||||||
|
- repeated startup schedules compute value
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
|
|
||||||
@@ -27,4 +30,5 @@ For more details go to [emsesp.org](https://emsesp.org/).
|
|||||||
- network fallback to AP only after start [#3090](https://github.com/emsesp/EMS-ESP32/issues/3090)
|
- network fallback to AP only after start [#3090](https://github.com/emsesp/EMS-ESP32/issues/3090)
|
||||||
- replaced Web async-validator with custom validator and toast with native snackbar to reduce bundle size
|
- replaced Web async-validator with custom validator and toast with native snackbar to reduce bundle size
|
||||||
- Dewtemperature for Easycontrol calculated by ems-esp [#3135](https://github.com/emsesp/EMS-ESP32/issues/3135)
|
- Dewtemperature for Easycontrol calculated by ems-esp [#3135](https://github.com/emsesp/EMS-ESP32/issues/3135)
|
||||||
- add option for sync thermostat to ntp, allow different time zones [#3148](https://github.com/emsesp/EMS-ESP32/discussions/3148), **defaults to no sync**.
|
- add option for sync thermostat to ntp, allow different time zones [#3148](https://github.com/emsesp/EMS-ESP32/discussions/3148), **defaults to sync**.
|
||||||
|
- block too many GET requests [mentioned in #3104](https://github.com/emsesp/EMS-ESP32/issues/3104)
|
||||||
|
|||||||
@@ -537,11 +537,13 @@ bool AnalogSensor::update(uint8_t gpio, const char * org_name, double offset, do
|
|||||||
if (deleted) {
|
if (deleted) {
|
||||||
LOG_DEBUG("Removing analog sensor GPIO %02d", gpio);
|
LOG_DEBUG("Removing analog sensor GPIO %02d", gpio);
|
||||||
EMSESP::system_.remove_gpio(gpio); // remove from used list only
|
EMSESP::system_.remove_gpio(gpio); // remove from used list only
|
||||||
EMSESP::nvs_.remove(AnalogCustomization.name);
|
if (EMSESP::nvs_.isKey(AnalogCustomization.name)) {
|
||||||
|
EMSESP::nvs_.remove(AnalogCustomization.name);
|
||||||
|
}
|
||||||
settings.analogCustomizations.remove(AnalogCustomization);
|
settings.analogCustomizations.remove(AnalogCustomization);
|
||||||
} else {
|
} else {
|
||||||
// update existing record
|
// update existing record
|
||||||
if (!strcmp(name, AnalogCustomization.name)) {
|
if (!strcmp(name, AnalogCustomization.name) && EMSESP::nvs_.isKey(AnalogCustomization.name)) {
|
||||||
EMSESP::nvs_.remove(AnalogCustomization.name);
|
EMSESP::nvs_.remove(AnalogCustomization.name);
|
||||||
}
|
}
|
||||||
strlcpy(AnalogCustomization.name, name, sizeof(AnalogCustomization.name));
|
strlcpy(AnalogCustomization.name, name, sizeof(AnalogCustomization.name));
|
||||||
|
|||||||
@@ -1799,8 +1799,8 @@ void EMSESP::start() {
|
|||||||
// this will also handle any MQTT subscriptions
|
// this will also handle any MQTT subscriptions
|
||||||
webCustomizationService.begin(); // load the customizations
|
webCustomizationService.begin(); // load the customizations
|
||||||
webCommandService.begin(); // load the user commands
|
webCommandService.begin(); // load the user commands
|
||||||
webSchedulerService.begin(); // load the scheduler events
|
|
||||||
webCustomEntityService.begin(); // load the custom telegram reads
|
webCustomEntityService.begin(); // load the custom telegram reads
|
||||||
|
webSchedulerService.begin(); // load the scheduler events
|
||||||
|
|
||||||
// perform any system upgrades
|
// perform any system upgrades
|
||||||
if (!factory_settings) {
|
if (!factory_settings) {
|
||||||
|
|||||||
@@ -862,6 +862,7 @@ std::string compute(const std::string & expr) {
|
|||||||
}
|
}
|
||||||
result = json.as<std::string>();
|
result = json.as<std::string>();
|
||||||
}
|
}
|
||||||
|
expr_new.replace(f, e - f, result.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
expr_new.replace(f, e - f, result);
|
expr_new.replace(f, e - f, result);
|
||||||
|
|||||||
@@ -1958,7 +1958,9 @@ bool System::get_value_info(JsonObject output, const char * cmd) {
|
|||||||
LOG_ERROR("empty system command");
|
LOG_ERROR("empty system command");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!strcmp(cmd, "restart")) { // restart is a command, not an entity
|
||||||
|
return false;
|
||||||
|
}
|
||||||
// check for hardcoded "info"/"value"
|
// check for hardcoded "info"/"value"
|
||||||
if (!strcmp(cmd, F_(info)) || !strcmp(cmd, F_(values))) {
|
if (!strcmp(cmd, F_(info)) || !strcmp(cmd, F_(values))) {
|
||||||
return command_info("", 0, output);
|
return command_info("", 0, output);
|
||||||
|
|||||||
@@ -77,7 +77,9 @@ StateUpdateResult WebCustomEntity::update(JsonObject root, WebCustomEntity & web
|
|||||||
if (entityItem.ram == 2) { // NVS
|
if (entityItem.ram == 2) { // NVS
|
||||||
char key[sizeof(entityItem.name) + 2];
|
char key[sizeof(entityItem.name) + 2];
|
||||||
snprintf(key, sizeof(key), "c:%s", entityItem.name);
|
snprintf(key, sizeof(key), "c:%s", entityItem.name);
|
||||||
EMSESP::nvs_.remove(key);
|
if (EMSESP::nvs_.isKey(key)) {
|
||||||
|
EMSESP::nvs_.remove(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (entityItem.ram) { // save name/value pairs for change checking
|
if (entityItem.ram) { // save name/value pairs for change checking
|
||||||
doc[entityItem.name] = entityItem.value;
|
doc[entityItem.name] = entityItem.value;
|
||||||
|
|||||||
@@ -370,6 +370,10 @@ void WebSchedulerService::loop() {
|
|||||||
if (scheduleItems_->empty()) {
|
if (scheduleItems_->empty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// do not execute any command in the first 60 secondes
|
||||||
|
if (uuid::get_uptime_sec() < 60) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// check if we have onChange events
|
// check if we have onChange events
|
||||||
while (!cmd_changed_.empty()) {
|
while (!cmd_changed_.empty()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user