mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
@@ -1676,6 +1676,7 @@ void EMSdevice::mqtt_ha_entity_config_remove() {
|
|||||||
if (dv.has_state(DeviceValueState::DV_HA_CONFIG_CREATED)
|
if (dv.has_state(DeviceValueState::DV_HA_CONFIG_CREATED)
|
||||||
&& ((dv.has_state(DeviceValueState::DV_API_MQTT_EXCLUDE)) || (!dv.has_state(DeviceValueState::DV_ACTIVE)))) {
|
&& ((dv.has_state(DeviceValueState::DV_API_MQTT_EXCLUDE)) || (!dv.has_state(DeviceValueState::DV_ACTIVE)))) {
|
||||||
dv.remove_state(DeviceValueState::DV_HA_CONFIG_CREATED);
|
dv.remove_state(DeviceValueState::DV_HA_CONFIG_CREATED);
|
||||||
|
dv.remove_state(DeviceValueState::DV_HA_CONFIG_RECREATE);
|
||||||
if (dv.short_name == FL_(climate)[0]) {
|
if (dv.short_name == FL_(climate)[0]) {
|
||||||
Mqtt::publish_ha_climate_config(dv.tag, false, true); // delete topic (remove = true)
|
Mqtt::publish_ha_climate_config(dv.tag, false, true); // delete topic (remove = true)
|
||||||
} else {
|
} else {
|
||||||
@@ -1694,6 +1695,10 @@ void EMSdevice::mqtt_ha_entity_config_create() {
|
|||||||
// create climate if roomtemp is visible
|
// create climate if roomtemp is visible
|
||||||
// create the discovery topic if if hasn't already been created, not a command (like reset) and is active and visible
|
// create the discovery topic if if hasn't already been created, not a command (like reset) and is active and visible
|
||||||
for (auto & dv : devicevalues_) {
|
for (auto & dv : devicevalues_) {
|
||||||
|
if (dv.has_state(DeviceValueState::DV_HA_CONFIG_RECREATE)) {
|
||||||
|
dv.remove_state(DeviceValueState::DV_HA_CONFIG_CREATED);
|
||||||
|
dv.remove_state(DeviceValueState::DV_HA_CONFIG_RECREATE);
|
||||||
|
}
|
||||||
if ((dv.short_name == FL_(climate)[0]) && !dv.has_state(DeviceValueState::DV_API_MQTT_EXCLUDE) && dv.has_state(DeviceValueState::DV_ACTIVE)) {
|
if ((dv.short_name == FL_(climate)[0]) && !dv.has_state(DeviceValueState::DV_API_MQTT_EXCLUDE) && dv.has_state(DeviceValueState::DV_ACTIVE)) {
|
||||||
if (*(int8_t *)(dv.value_p) == 1 && (!dv.has_state(DeviceValueState::DV_HA_CONFIG_CREATED) || dv.has_state(DeviceValueState::DV_HA_CLIMATE_NO_RT))) {
|
if (*(int8_t *)(dv.value_p) == 1 && (!dv.has_state(DeviceValueState::DV_HA_CONFIG_CREATED) || dv.has_state(DeviceValueState::DV_HA_CLIMATE_NO_RT))) {
|
||||||
dv.remove_state(DeviceValueState::DV_HA_CLIMATE_NO_RT);
|
dv.remove_state(DeviceValueState::DV_HA_CLIMATE_NO_RT);
|
||||||
@@ -1721,8 +1726,9 @@ void EMSdevice::mqtt_ha_entity_config_create() {
|
|||||||
// remove all config topics in HA
|
// remove all config topics in HA
|
||||||
void EMSdevice::ha_config_clear() {
|
void EMSdevice::ha_config_clear() {
|
||||||
for (auto & dv : devicevalues_) {
|
for (auto & dv : devicevalues_) {
|
||||||
Mqtt::publish_ha_sensor_config(dv, "", "", true); // delete topic (remove = true)
|
if (dv.has_state(DeviceValueState::DV_HA_CONFIG_CREATED)) {
|
||||||
dv.remove_state(DeviceValueState::DV_HA_CONFIG_CREATED);
|
dv.add_state(DeviceValueState::DV_HA_CONFIG_RECREATE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ha_config_done(false); // this will force the recreation of the main HA device config
|
ha_config_done(false); // this will force the recreation of the main HA device config
|
||||||
|
|||||||
@@ -124,6 +124,7 @@ class DeviceValue {
|
|||||||
DV_ACTIVE = (1 << 0), // 1 - has a validated real value
|
DV_ACTIVE = (1 << 0), // 1 - has a validated real value
|
||||||
DV_HA_CONFIG_CREATED = (1 << 1), // 2 - set if the HA config topic has been created
|
DV_HA_CONFIG_CREATED = (1 << 1), // 2 - set if the HA config topic has been created
|
||||||
DV_HA_CLIMATE_NO_RT = (1 << 2), // 4 - climate created without roomTemp
|
DV_HA_CLIMATE_NO_RT = (1 << 2), // 4 - climate created without roomTemp
|
||||||
|
DV_HA_CONFIG_RECREATE = (1 << 3), // 8 - set on reconnect to recreate HA config topic
|
||||||
|
|
||||||
// high nibble as mask for exclusions & special functions
|
// high nibble as mask for exclusions & special functions
|
||||||
DV_WEB_EXCLUDE = (1 << 4), // 16 - not shown on web
|
DV_WEB_EXCLUDE = (1 << 4), // 16 - not shown on web
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "emsesp.h" // for send_raw_telegram() command
|
#include "emsesp.h" // for send_raw_telegram() command
|
||||||
|
#include "esp_ota_ops.h"
|
||||||
|
|
||||||
|
|
||||||
#include <semver200.h>
|
#include <semver200.h>
|
||||||
|
|
||||||
@@ -268,7 +270,6 @@ void System::syslog_init() {
|
|||||||
syslog_.mark_interval(0);
|
syslog_.mark_interval(0);
|
||||||
syslog_.destination("");
|
syslog_.destination("");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Mqtt::publish_single()) {
|
if (Mqtt::publish_single()) {
|
||||||
if (Mqtt::publish_single2cmd()) {
|
if (Mqtt::publish_single2cmd()) {
|
||||||
Mqtt::publish("system/syslog", syslog_enabled_ ? (FL_(list_syslog_level)[syslog_level_ + 1]) : "off");
|
Mqtt::publish("system/syslog", syslog_enabled_ ? (FL_(list_syslog_level)[syslog_level_ + 1]) : "off");
|
||||||
@@ -397,7 +398,7 @@ void System::start() {
|
|||||||
fstotal_ = LittleFS.totalBytes() / 1024; // read only once, it takes 500 ms to read
|
fstotal_ = LittleFS.totalBytes() / 1024; // read only once, it takes 500 ms to read
|
||||||
psram_ = ESP.getPsramSize() / 1024;
|
psram_ = ESP.getPsramSize() / 1024;
|
||||||
appused_ = ESP.getSketchSize() / 1024;
|
appused_ = ESP.getSketchSize() / 1024;
|
||||||
appfree_ = ESP.getFreeSketchSpace() / 1024 - appused_;
|
appfree_ = esp_ota_get_running_partition()->size / 1024 - appused_;
|
||||||
refreshHeapMem(); // refresh free heap and max alloc heap
|
refreshHeapMem(); // refresh free heap and max alloc heap
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user