diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md
index b665af1e2..104ef1b19 100644
--- a/CHANGELOG_LATEST.md
+++ b/CHANGELOG_LATEST.md
@@ -38,6 +38,7 @@
- Added Shower Alert trigger time and cold shot time [#436](https://github.com/emsesp/EMS-ESP32/issues/436)
- Improved Table layout in Web UI (searching, filtering, sorting, exporting to CSV)
- API fetch individual attributes from an entity [#462](https://github.com/emsesp/EMS-ESP32/issues/462)
+- Option to disable mDNS
### Fixed
diff --git a/interface/src/framework/network/NetworkSettingsForm.tsx b/interface/src/framework/network/NetworkSettingsForm.tsx
index b15eb66f5..c1221713d 100644
--- a/interface/src/framework/network/NetworkSettingsForm.tsx
+++ b/interface/src/framework/network/NetworkSettingsForm.tsx
@@ -56,7 +56,8 @@ const WiFiSettingsForm: FC = () => {
enableIPv6: false,
bandwidth20: false,
tx_power: 20,
- nosleep: false
+ nosleep: false,
+ enableMDNS: true
});
}
setInitialized(true);
@@ -153,6 +154,11 @@ const WiFiSettingsForm: FC = () => {
label="Use Lower WiFi Bandwidth"
/>
+ }
+ label="Enable mDNS Service"
+ />
+
General
diff --git a/interface/src/types/network.ts b/interface/src/types/network.ts
index 538020903..fb6b576ba 100644
--- a/interface/src/types/network.ts
+++ b/interface/src/types/network.ts
@@ -47,6 +47,7 @@ export interface NetworkSettings {
subnet_mask?: string;
dns_ip_1?: string;
dns_ip_2?: string;
+ enableMDNS: boolean;
}
export interface WiFiNetworkList {
diff --git a/lib/framework/NetworkSettingsService.h b/lib/framework/NetworkSettingsService.h
index ce3b9b189..60843431f 100644
--- a/lib/framework/NetworkSettingsService.h
+++ b/lib/framework/NetworkSettingsService.h
@@ -38,6 +38,7 @@ class NetworkSettings {
bool bandwidth20;
int8_t tx_power;
bool nosleep;
+ bool enableMDNS;
// optional configuration for static IP address
IPAddress localIP;
@@ -56,6 +57,7 @@ class NetworkSettings {
root["bandwidth20"] = settings.bandwidth20;
root["tx_power"] = settings.tx_power;
root["nosleep"] = settings.nosleep;
+ root["enableMDNS"] = settings.enableMDNS;
// extended settings
JsonUtils::writeIP(root, "local_ip", settings.localIP);
@@ -74,6 +76,7 @@ class NetworkSettings {
settings.bandwidth20 = root["bandwidth20"] | false;
settings.tx_power = root["tx_power"] | 20;
settings.nosleep = root["nosleep"] | false;
+ settings.enableMDNS = root["enableMDNS"] | true;
// extended settings
JsonUtils::readIP(root, "local_ip", settings.localIP);
diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp
index f4122656b..76063f679 100644
--- a/src/web/WebStatusService.cpp
+++ b/src/web/WebStatusService.cpp
@@ -189,21 +189,31 @@ void WebStatusService::webStatusService(AsyncWebServerRequest * request) {
void WebStatusService::mDNS_start() const {
#ifndef EMSESP_STANDALONE
MDNS.end();
- if (!MDNS.begin(EMSESP::system_.hostname().c_str())) {
- EMSESP::logger().warning(F("Failed to start mDNS responder service"));
- return;
- }
+ EMSESP::esp8266React.getNetworkSettingsService()->read([&](NetworkSettings & networkSettings) {
+ if (networkSettings.enableMDNS) {
+ if (!MDNS.begin(EMSESP::system_.hostname().c_str())) {
+ EMSESP::logger().warning(F("Failed to start mDNS responder service"));
+ return;
+ }
- std::string address_s = EMSESP::system_.hostname() + ".local";
+ std::string address_s = EMSESP::system_.hostname() + ".local";
- MDNS.addService("http", "tcp", 80); // add our web server and rest API
- MDNS.addService("telnet", "tcp", 23); // add our telnet console
+ MDNS.addService("http", "tcp", 80); // add our web server and rest API
+ MDNS.addService("telnet", "tcp", 23); // add our telnet console
- MDNS.addServiceTxt("http", "tcp", "version", EMSESP_APP_VERSION);
- MDNS.addServiceTxt("http", "tcp", "address", address_s.c_str());
+ MDNS.addServiceTxt("http", "tcp", "version", EMSESP_APP_VERSION);
+ MDNS.addServiceTxt("http", "tcp", "address", address_s.c_str());
+
+ EMSESP::logger().info(F("mDNS responder service started"));
+ }
+ });
+#else
+ EMSESP::esp8266React.getNetworkSettingsService()->read([&](NetworkSettings & networkSettings) {
+ if (networkSettings.enableMDNS) {
+ EMSESP::logger().info(F("mDNS responder service started"));
+ }
+ });
#endif
-
- EMSESP::logger().info(F("mDNS responder service started"));
}
} // namespace emsesp
\ No newline at end of file