J. Nick Koston
bf7083c501
[mdns] Drive MDNS.update() polling from WiFi IP state events on ESP8266/RP2040
...
The Arduino LEAmDNS library only has meaningful timer-driven work during the
~9 s probe+announce phase following MDNS.begin() or _restart(): 3 probes at
250 ms + 8 announcements at 1000 ms, then all internal timeouts are set to
resetToNeverExpires(). Incoming packets are handled via the lwIP UDP RX
callback independently of update(). ESPHome does not issue service queries,
so the query cache path is always a no-op.
The previous implementation ran set_interval(50) forever — ~20 dispatches/sec,
1200+ scheduler calls per minute of pure overhead once probing completed.
This PR arms a bounded MDNS_POLL_WINDOW_MS (12 s) polling window driven by
WiFiIPStateListener events. A fresh window covers each probe/announce cycle
(boot, wifi reconnect, or internal _restart() triggered by netif changes);
outside the window there are zero scheduler dispatches and the scheduler
heap contains no mDNS items.
ESP8266 is WiFi-only in the Arduino build so the path is unconditional.
RP2040 supports W5500 ethernet without WiFi, so the listener is requested
only when WiFi is in the config; ethernet-only RP2040 builds keep the
legacy polling loop.
Scheduler IDs use uint32_t (MDNS_POLL_ID / MDNS_POLL_STOP_ID) to avoid the
name-hash/strcmp cost of string-named timers on the cancel + re-arm paths.
2026-04-23 19:19:29 -05:00
J. Nick Koston and Copilot
a8b7c7a4ac
[core] Add TemplatableFn for 4-byte function-pointer templatable storage ( #15545 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-04-08 08:38:00 -04:00
J. Nick Koston and Copilot
74e4b69654
[core] Replace Application name/friendly_name std::string with StringRef ( #14532 )
...
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com >
2026-03-06 06:58:13 -10:00
Kevin Ahrendt and J. Nick Koston
ba7134ee3f
[mdns] add Sendspin advertisement support ( #14013 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-02-18 21:51:16 -06:00
J. Nick Koston
f9aa48295c
[mdns] Reduce RAM usage by eliminating MAC address heap allocation ( #12073 )
2025-12-09 09:33:23 -05:00
J. Nick Koston
c888becfa7
[api] Optimize APINoiseContext memory usage by removing shared_ptr overhead ( #11981 )
2025-11-25 06:52:15 +13:00
J. Nick Koston
5071473767
[mdns] Modernize to C++17 nested namespace syntax ( #11983 )
2025-11-20 08:57:33 -05:00
J. Nick Koston
0d6c9623ce
[dashboard_import] Store package import URL in .rodata instead of RAM ( #11951 )
2025-11-17 20:02:16 -06:00
J. Nick Koston
be006ecadd
[mdns] Eliminate redundant hostname copy to save heap memory ( #11734 )
2025-11-05 18:31:19 +00:00
J. Nick Koston
7a82379c88
[mdns] Use FixedVector for txt_records to reduce flash usage ( #11228 )
2025-10-15 02:16:59 +00:00
J. Nick Koston
c10f68ef0c
[mdns] Conditionally store services to reduce RAM usage by 200-464 bytes ( #11180 )
2025-10-14 07:24:57 +13:00
J. Nick Koston
5ca407e27c
[mdns] Store TXT record values in flash to reduce heap usage ( #11114 )
2025-10-10 09:01:58 +13:00
J. Nick Koston
ec63247ae0
[mdns] Fix delete/malloc bug and store string constants in flash ( #11105 )
2025-10-08 04:19:29 +00:00
J. Nick Koston
0fd71ca211
[mdns][openthread] Use StaticVector for services storage with compile-time capacity ( #10976 )
2025-10-06 09:30:17 +13:00
J. Nick Koston
487ba4dad0
[mdns] Move constant strings to flash on ESP8266 ( #10599 )
2025-09-05 18:08:25 -05:00
J. Nick Koston
9b1ebdb6da
[mdns] Reduce flash usage and prevent RAM over-allocation in service compilation ( #10287 )
2025-08-20 14:34:34 +12:00
J. Nick Koston
76fd104fb6
[mdns] Conditionally compile extra services to reduce flash usage ( #10129 )
2025-08-08 10:32:35 +10:00
Mathieu Rene and Jesse Hills
9d9d210176
Add OpenThread support on ESP-IDF ( #7506 )
...
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2025-06-11 17:27:58 +12:00
J. Nick Koston
c0b05ada1a
Reduce ESP_LOGCONFIG calls ( #9026 )
2025-06-09 00:02:30 +00:00
Nate Clark
253e3ec6f6
[mdns] Support templatable config options for MDNS extra services ( #8606 )
2025-04-28 16:27:39 +12:00
Keith Burzinski and Jesse Hills
2fd5f9ac58
[api] Allow noise encryption key to be set at runtime ( #7296 )
...
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2025-04-17 13:15:25 +12:00
Markus
c9a0daf4b6
Do not build mDNS when mDNS is disabled via yaml ( #6979 )
2024-06-25 20:05:37 +12:00
a9630ac847
Support for LibreTiny platform (RTL8710, BK7231 & other modules) ( #3509 )
...
Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl >
Co-authored-by: Sam Neirinck <git@samneirinck.com >
Co-authored-by: David Buezas <dbuezas@users.noreply.github.com >
Co-authored-by: Stroe Andrei Catalin <catalin2402@gmail.com >
Co-authored-by: Sam Neirinck <github@samneirinck.be >
Co-authored-by: Péter Sárközi <xmisterhu@gmail.com >
Co-authored-by: Hajo Noerenberg <hn@users.noreply.github.com >
2023-09-05 10:16:08 +12:00
J. Nick Koston
2e2ac53071
Advertise noise is enabled ( #5034 )
2023-07-04 12:52:42 +12:00
Joakim Plate
0554b06b7e
Allow mdns services to be exposed by config ( #4202 )
2023-02-02 17:18:58 +13:00
Stroe Andrei Catalin
6d65671f92
Add friendly name in MDNS records if it is not empty ( #4317 )
2023-01-20 09:13:18 +13:00
Jesse Hills
c301ae3645
Add friendly_name to device ( #4296 )
2023-01-17 10:28:09 +13:00
Jesse Hills and Paulus Schoutsen
6153bcc6ad
Initial Support for RP2040 platform ( #3284 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com >
2022-10-20 16:50:39 +13:00
Jesse Hills
01b7c4200e
Add network type to mdns service message ( #3880 )
2022-10-07 14:42:28 +13:00
RoboMagus
936c408a58
List webserver service on MDNS if enabled. ( #3662 )
2022-08-02 11:31:06 +12:00
Oxan van Leeuwen
c2ee0f0864
Rename WEBSERVER_PORT define to USE_WEBSERVER_PORT ( #3102 )
2022-01-24 00:34:38 +01:00
Otto Winter
eccdef8211
Fix mDNS ESP8266 log not included ( #2589 )
2021-10-21 18:53:08 +02:00
Maurice Makaay
f2ebfe7aef
Add mDNS config dump ( #2576 )
2021-10-21 16:02:28 +02:00
34606b0f1f
Fix MDNS for ESP8266 devices ( #2571 )
...
Co-authored-by: Maurice Makaay <account-github@makaay.nl >
Co-authored-by: Otto winter <otto@otto-winter.com >
Co-authored-by: Maurice Makaay <mmakaay1@xs4all.net >
2021-10-21 12:23:21 +02:00
Otto Winter
45940b0514
Dashboard node import and render in browser ( #2374 )
2021-09-27 10:10:53 -07:00
Otto Winter and Jesse Hills
ac0d921413
ESP-IDF support and generic target platforms ( #2303 )
...
* Socket refactor and SSL
* esp-idf temp
* Fixes
* Echo component and noise
* Add noise API transport support
* Updates
* ESP-IDF
* Complete
* Fixes
* Fixes
* Versions update
* New i2c APIs
* Complete i2c refactor
* SPI migration
* Revert ESP Preferences migration, too complex for now
* OTA support
* Remove echo again
* Remove ssl again
* GPIOFlags updates
* Rename esphal and ICACHE_RAM_ATTR
* Make ESP32 arduino compilable again
* Fix GPIO flags
* Complete pin registry refactor and fixes
* Fixes to make test1 compile
* Remove sdkconfig file
* Ignore sdkconfig file
* Fixes in reviewing
* Make test2 compile
* Make test4 compile
* Make test5 compile
* Run clang-format
* Fix lint errors
* Use esp-idf APIs instead of btStart
* Another round of fixes
* Start implementing ESP8266
* Make test3 compile
* Guard esp8266 code
* Lint
* Reformat
* Fixes
* Fixes v2
* more fixes
* ESP-IDF tidy target
* Convert ARDUINO_ARCH_ESPxx
* Update WiFiSignalSensor
* Update time ifdefs
* OTA needs millis from hal
* RestartSwitch needs delay from hal
* ESP-IDF Uart
* Fix OTA blank password
* Allow setting sdkconfig
* Fix idf partitions and allow setting sdkconfig from yaml
* Re-add read/write compat APIs and fix esp8266 uart
* Fix esp8266 store log strings in flash
* Fix ESP32 arduino preferences not initialized
* Update ifdefs
* Change how sdkconfig change is detected
* Add checks to ci-custom and fix them
* Run clang-format
* Add esp-idf clang-tidy target and fix errors
* Fixes from clang-tidy idf round 2
* Fixes from compiling tests with esp-idf
* Run clang-format
* Switch test5.yaml to esp-idf
* Implement ESP8266 Preferences
* Lint
* Re-do PIO package version selection a bit
* Fix arduinoespressif32 package version
* Fix unit tests
* Lint
* Lint fixes
* Fix readv/writev not defined
* Fix graphing component
* Re-add all old options from core/config.py
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2021-09-20 11:47:51 +02:00