From e26cc79027047070aeb62dc4e8ee3252d3666010 Mon Sep 17 00:00:00 2001 From: Mariusz Wasiluk Date: Wed, 17 Dec 2025 23:05:36 +0100 Subject: [PATCH 1/3] Send Discovery Configuration on each MQTT connect --- src/publisher/pubMqtt.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/publisher/pubMqtt.h b/src/publisher/pubMqtt.h index 721cc2ff..92fe8f41 100644 --- a/src/publisher/pubMqtt.h +++ b/src/publisher/pubMqtt.h @@ -303,6 +303,7 @@ class PubMqtt { subscribe(mVal.data()); } subscribe(subscr[MQTT_SUBS_SET_TIME]); + sendDiscoveryConfig(); } void onDisconnect(espMqttClientTypes::DisconnectReason reason) { From 2a5042457db87e36fa087dfc99b53a3a7077044e Mon Sep 17 00:00:00 2001 From: Mariusz Wasiluk Date: Mon, 22 Dec 2025 00:06:37 +0100 Subject: [PATCH 2/3] Add configuration option to send Home Assistant discovery config on MQTT connect --- src/config/settings.h | 4 ++++ src/publisher/pubMqtt.h | 3 ++- src/web/RestApi.h | 1 + src/web/html/setup.html | 7 ++++++- src/web/web.h | 1 + 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/config/settings.h b/src/config/settings.h index 0d8970d5..b0c327f1 100644 --- a/src/config/settings.h +++ b/src/config/settings.h @@ -166,6 +166,7 @@ typedef struct { bool json; uint16_t interval; bool enableRetain; + bool sendConfigOnConnect; } cfgMqtt_t; typedef struct { @@ -473,6 +474,7 @@ class settings { mCfg.mqtt.interval = 0; // off mCfg.mqtt.json = false; // off mCfg.mqtt.enableRetain = true; + mCfg.mqtt.sendConfigOnConnect = false; mCfg.inst.sendInterval = SEND_INTERVAL; mCfg.inst.rstValsAtMidNight = false; @@ -728,6 +730,7 @@ class settings { obj[F("json")] = mCfg.mqtt.json; obj[F("intvl")] = mCfg.mqtt.interval; obj[F("retain")] = mCfg.mqtt.enableRetain; + obj[F("sendConfigOnConnect")] = mCfg.mqtt.sendConfigOnConnect; } else { getVal(obj, F("port"), &mCfg.mqtt.port); @@ -739,6 +742,7 @@ class settings { getChar(obj, F("pwd"), mCfg.mqtt.pwd, MQTT_PWD_LEN); getChar(obj, F("topic"), mCfg.mqtt.topic, MQTT_TOPIC_LEN); getVal(obj, F("retain"), &mCfg.mqtt.enableRetain); + getVal(obj, F("sendConfigOnConnect"), &mCfg.mqtt.sendConfigOnConnect); } } diff --git a/src/publisher/pubMqtt.h b/src/publisher/pubMqtt.h index 92fe8f41..12d08c15 100644 --- a/src/publisher/pubMqtt.h +++ b/src/publisher/pubMqtt.h @@ -303,7 +303,8 @@ class PubMqtt { subscribe(mVal.data()); } subscribe(subscr[MQTT_SUBS_SET_TIME]); - sendDiscoveryConfig(); + if(mCfgMqtt->sendConfigOnConnect) + sendDiscoveryConfig(); } void onDisconnect(espMqttClientTypes::DisconnectReason reason) { diff --git a/src/web/RestApi.h b/src/web/RestApi.h index c6859386..770b7f1e 100644 --- a/src/web/RestApi.h +++ b/src/web/RestApi.h @@ -731,6 +731,7 @@ class RestApi { obj[F("json")] = (bool) mConfig->mqtt.json; obj[F("interval")] = String(mConfig->mqtt.interval); obj[F("retain")] = (bool)mConfig->mqtt.enableRetain; + obj[F("sendConfigOnConnect")] = (bool)mConfig->mqtt.sendConfigOnConnect; } void getNtp(JsonObject obj) { diff --git a/src/web/html/setup.html b/src/web/html/setup.html index 88b3be77..33399728 100644 --- a/src/web/html/setup.html +++ b/src/web/html/setup.html @@ -245,7 +245,11 @@
-
Discovery Config (homeassistant)
+
Send Home Assistant discovery config on MQTT connect
+
+
+
+
Force sending Home Assistant discovery config
@@ -990,6 +994,7 @@ document.getElementsByName("mqtt"+i[0])[0].value = obj[i[1]]; document.getElementsByName("mqttJson")[0].checked = obj["json"]; document.getElementsByName("retain")[0].checked = obj.retain + document.getElementsByName("sendConfigOnConnect")[0].checked = obj["sendConfigOnConnect"]; } function parseNtp(obj) { diff --git a/src/web/web.h b/src/web/web.h index efabe587..f0bcabfd 100644 --- a/src/web/web.h +++ b/src/web/web.h @@ -598,6 +598,7 @@ class Web { mConfig->mqtt.json = (request->arg("mqttJson") == "on"); mConfig->mqtt.port = request->arg("mqttPort").toInt(); mConfig->mqtt.interval = request->arg("mqttInterval").toInt(); + mConfig->mqtt.sendConfigOnConnect = (request->arg("sendConfigOnConnect") == "on"); mConfig->mqtt.enableRetain = (request->arg("retain") == "on"); // serial console From 2563254d3067d700f68aec5980a9c90d10c63daa Mon Sep 17 00:00:00 2001 From: Mariusz Wasiluk Date: Thu, 25 Dec 2025 12:48:54 +0100 Subject: [PATCH 3/3] Rework MQTT web configuration --- src/web/html/setup.html | 13 +++++-------- src/web/lang.json | 9 +++++++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/web/html/setup.html b/src/web/html/setup.html index 33399728..a3a15362 100644 --- a/src/web/html/setup.html +++ b/src/web/html/setup.html @@ -245,20 +245,17 @@
-
Send Home Assistant discovery config on MQTT connect
-
+
{#RETAIN}
+
-
Force sending Home Assistant discovery config
-
+
{#SEND_CONFIG_ON_CONNECT}
+
+
-
-
{#RETAIN}
-
-
diff --git a/src/web/lang.json b/src/web/lang.json index 96f60a54..21354f54 100644 --- a/src/web/lang.json +++ b/src/web/lang.json @@ -495,8 +495,8 @@ }, { "token": "BTN_SEND", - "en": "send", - "de": "senden" + "en": "Force send", + "de": "Senden erzwingen" }, { "token": "BTN_REBOOT_SUCCESSFUL_SAVE", @@ -822,6 +822,11 @@ "token": "NO_NETWORK_FOUND", "en": "no network found", "de": "kein Netzwerk gefunden" + }, + { + "token": "SEND_CONFIG_ON_CONNECT", + "en": "Send discovery config on MQTT connect", + "de": "Discovery-Konfiguration beim MQTT-Verbindungsaufbau senden" } ] },