diff --git a/esphome/components/mdns/__init__.py b/esphome/components/mdns/__init__.py index e32d39cede..469fe8ada6 100644 --- a/esphome/components/mdns/__init__.py +++ b/esphome/components/mdns/__init__.py @@ -93,6 +93,9 @@ async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) + if config[CONF_SERVICES]: + cg.add_define("USE_MDNS_EXTRA_SERVICES") + for service in config[CONF_SERVICES]: txt = [ cg.StructInitializer( diff --git a/esphome/components/mdns/mdns_component.cpp b/esphome/components/mdns/mdns_component.cpp index 06ca99b402..640750720d 100644 --- a/esphome/components/mdns/mdns_component.cpp +++ b/esphome/components/mdns/mdns_component.cpp @@ -104,7 +104,9 @@ void MDNSComponent::compile_records_() { } #endif +#ifdef USE_MDNS_EXTRA_SERVICES this->services_.insert(this->services_.end(), this->services_extra_.begin(), this->services_extra_.end()); +#endif if (this->services_.empty()) { // Publish "http" service if not using native API diff --git a/esphome/components/mdns/mdns_component.h b/esphome/components/mdns/mdns_component.h index 93a16f40d2..f87ef08bcd 100644 --- a/esphome/components/mdns/mdns_component.h +++ b/esphome/components/mdns/mdns_component.h @@ -35,14 +35,18 @@ class MDNSComponent : public Component { #endif float get_setup_priority() const override { return setup_priority::AFTER_CONNECTION; } +#ifdef USE_MDNS_EXTRA_SERVICES void add_extra_service(MDNSService service) { services_extra_.push_back(std::move(service)); } +#endif std::vector get_services(); void on_shutdown() override; protected: +#ifdef USE_MDNS_EXTRA_SERVICES std::vector services_extra_{}; +#endif std::vector services_{}; std::string hostname_; void compile_records_();