[DISC] Add ability to change Discovery Prefix via WebUI or via mosquitto_pub (#2007)

Add discovery_prefix change at runtime

---------

Co-authored-by: Florian <1technophile@users.noreply.github.com>
This commit is contained in:
puterboyandFlorian authored and GitHub committed 2024-08-22 13:22:08 -05:00
1 parent 36945dae42
commit 57fbca8f88
6 files changed
+58 -14

No files matched your search

+19 -2
View File
@@ -692,7 +692,8 @@ void handleWI() {
* T: handleMQ Arg: 4, sc=on
* T: handleMQ Arg: 5, h=
* T: handleMQ Arg: 6, mt=home/
* T: handleMQ Arg: 7, save=
* T: handleMQ Arg: 7 dp=homeassistant (#ifdef ZmqttDiscovery)
* T: handleMQ Arg: 8, save=
*/
void handleMQ() {
WEBUI_TRACE_LOG(F("handleMQ: uri: %s, args: %d, method: %d" CR), server.uri(), server.args(), server.method());
@@ -762,6 +763,14 @@ void handleMQ() {
update = true;
}
}
# ifdef ZmqttDiscovery
if (server.hasArg("dp")) {
WEBtoSYS["discovery_prefix"] = server.arg("dp");
if (strncmp(discovery_prefix, server.arg("dp").c_str(), parameters_size)) {
update = true;
}
}
# endif
# ifndef ESPWifiManualSetup
if (update) {
@@ -803,11 +812,19 @@ void handleMQ() {
String response = String(buffer);
response += String(script);
response += String(style);
// mqtt server (mh), mqtt port (ml), mqtt username (mu), mqtt password (mp), secure connection (sc), server certificate (msc), topic (mt)
// mqtt server (mh), mqtt port (ml), mqtt username (mu), mqtt password (mp), secure connection (sc), server certificate (msc), mqtt topic (mt), discovery prefix (dp) (last one only #ifdef ZmqttDiscovery)
# if MQTT_BROKER_MODE
# ifdef ZmqttDiscovery
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, config_mqtt_body, jsonChar, gateway_name, "", "1883", "", "", gateway_name, mqtt_topic, discovery_prefix);
# else
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, config_mqtt_body, jsonChar, gateway_name, "", "1883", "", "", gateway_name, mqtt_topic);
# endif
# else
# ifdef ZmqttDiscovery
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, config_mqtt_body, jsonChar, gateway_name, cnt_parameters_array[CNT_DEFAULT_INDEX].mqtt_server, cnt_parameters_array[CNT_DEFAULT_INDEX].mqtt_port, cnt_parameters_array[CNT_DEFAULT_INDEX].mqtt_user, (cnt_parameters_array[CNT_DEFAULT_INDEX].isConnectionSecure ? "checked" : ""), gateway_name, mqtt_topic, discovery_prefix);
# else
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, config_mqtt_body, jsonChar, gateway_name, cnt_parameters_array[CNT_DEFAULT_INDEX].mqtt_server, cnt_parameters_array[CNT_DEFAULT_INDEX].mqtt_port, cnt_parameters_array[CNT_DEFAULT_INDEX].mqtt_user, (cnt_parameters_array[CNT_DEFAULT_INDEX].isConnectionSecure ? "checked" : ""), gateway_name, mqtt_topic);
# endif
# endif
response += String(buffer);
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, footer, OMG_VERSION);