diff --git a/src/src/DataStructs/SettingsStruct.h b/src/src/DataStructs/SettingsStruct.h index 38c2dfceb..cec889051 100644 --- a/src/src/DataStructs/SettingsStruct.h +++ b/src/src/DataStructs/SettingsStruct.h @@ -247,6 +247,11 @@ class SettingsStruct_tmpl inline void MQTTConnectInBackground(bool value) { VariousBits_2.MQTTConnectInBackground = !value; } #endif // if FEATURE_MQTT_CONNECT_BACKGROUND + #if FEATURE_MQTT_DISCOVER + inline bool MQTTDiscoverGroupInclTaskname() const { return VariousBits_1.MQTTDiscoverGroupInclTaskname; } + inline void MQTTDiscoverGroupInclTaskname(bool value) { VariousBits_1.MQTTDiscoverGroupInclTaskname = value; } + #endif // if FEATURE_MQTT_DISCOVER + // Flag indicating whether all task values should be sent in a single event or one event per task value (default behavior) bool CombineTaskValues_SingleEvent(taskIndex_t taskIndex) const; void CombineTaskValues_SingleEvent(taskIndex_t taskIndex, bool value); @@ -688,7 +693,7 @@ public: // VariousBits_1 defaults to 0, keep in mind when adding bit lookups. struct { - uint32_t unused_00 : 1; // Bit 00 + uint32_t MQTTDiscoverGroupInclTaskname : 1; // Bit 00 uint32_t appendUnitToHostname : 1; // Bit 01 Inverted uint32_t unused_02 : 1; // Bit 02 uniqueMQTTclientIdReconnect_unused uint32_t OldRulesEngine : 1; // Bit 03 Inverted diff --git a/src/src/Helpers/StringProvider.cpp b/src/src/Helpers/StringProvider.cpp index 1bd2c7a03..478be58a6 100644 --- a/src/src/Helpers/StringProvider.cpp +++ b/src/src/Helpers/StringProvider.cpp @@ -483,6 +483,12 @@ KeyValueStruct getKeyValue(LabelType::Enum label, bool extendedValue) return KeyValueStruct(F("MQTT Connect in background"), Settings.MQTTConnectInBackground()); } #endif // if FEATURE_MQTT_CONNECT_BACKGROUND + #if FEATURE_MQTT_DISCOVER + case LabelType::MQTT_DISCOVER_GROUP_INCL_TASKNAME: + { + return KeyValueStruct(F("MQTT Discover, Group incl. Taskname"), Settings.MQTTDiscoverGroupInclTaskname()); + } + #endif // if FEATURE_MQTT_DISCOVER #if FEATURE_COLORIZE_CONSOLE_LOGS case LabelType::COLORIZE_CONSOLE_LOGS: { diff --git a/src/src/Helpers/StringProvider.h b/src/src/Helpers/StringProvider.h index 4ab9a6894..b904824bf 100644 --- a/src/src/Helpers/StringProvider.h +++ b/src/src/Helpers/StringProvider.h @@ -112,6 +112,9 @@ struct LabelType { #if FEATURE_MQTT_CONNECT_BACKGROUND MQTT_CONNECT_IN_BACKGROUND, #endif // if FEATURE_MQTT_CONNECT_BACKGROUND + #if FEATURE_MQTT_DISCOVER + MQTT_DISCOVER_GROUP_INCL_TASKNAME, + #endif // if FEATURE_MQTT_DISCOVER #if FEATURE_COLORIZE_CONSOLE_LOGS COLORIZE_CONSOLE_LOGS, #endif diff --git a/src/src/Helpers/_CPlugin_Helper_mqtt.cpp b/src/src/Helpers/_CPlugin_Helper_mqtt.cpp index c9039a427..856fc18b3 100644 --- a/src/src/Helpers/_CPlugin_Helper_mqtt.cpp +++ b/src/src/Helpers/_CPlugin_Helper_mqtt.cpp @@ -1114,6 +1114,8 @@ bool MQTT_DiscoveryPublishWithStatusAndSet(taskIndex_t taskIndex, const String valName = makeHomeAssistantCompliantName(valueName); const String uniqueId = elementName.isEmpty() ? MQTT_TaskValueUniqueName(taskName, valName) + : Settings.MQTTDiscoverGroupInclTaskname() + ? strformat(F("%s_%s_%s"), elementId.c_str(), taskName.c_str(), valName.c_str()) : strformat(F("%s_%s"), elementId.c_str(), valName.c_str()); String message; { diff --git a/src/src/WebServer/AdvancedConfigPage.cpp b/src/src/WebServer/AdvancedConfigPage.cpp index cf5ffa115..00f57b776 100644 --- a/src/src/WebServer/AdvancedConfigPage.cpp +++ b/src/src/WebServer/AdvancedConfigPage.cpp @@ -161,6 +161,9 @@ void handle_advanced() { #if FEATURE_MQTT_CONNECT_BACKGROUND Settings.MQTTConnectInBackground(isFormItemChecked(LabelType::MQTT_CONNECT_IN_BACKGROUND)); #endif // if FEATURE_MQTT_CONNECT_BACKGROUND + #if FEATURE_MQTT_DISCOVER + Settings.MQTTDiscoverGroupInclTaskname(isFormItemChecked(LabelType::MQTT_DISCOVER_GROUP_INCL_TASKNAME)); + #endif // if FEATURE_MQTT_DISCOVER #if FEATURE_COLORIZE_CONSOLE_LOGS Settings.ColorizeSerialLog(isFormItemChecked(LabelType::COLORIZE_CONSOLE_LOGS)); #endif @@ -331,6 +334,9 @@ void handle_advanced() { #if FEATURE_MQTT_CONNECT_BACKGROUND ,LabelType::MQTT_CONNECT_IN_BACKGROUND #endif // if FEATURE_MQTT_CONNECT_BACKGROUND + #if FEATURE_MQTT_DISCOVER + ,LabelType::MQTT_DISCOVER_GROUP_INCL_TASKNAME + #endif // if FEATURE_MQTT_DISCOVER #if FEATURE_COLORIZE_CONSOLE_LOGS ,LabelType::COLORIZE_CONSOLE_LOGS #endif