mirror of
https://github.com/esphome/esphome.git
synced 2026-07-10 17:05:36 +00:00
327f03fe4fc68720b941dd3fd23be7cb42573770
Fixes the task watchdog firing on configs with no looping components and no scheduler work (e.g. a minimal esphome: + logger: config, or a device where every looping component has called disable_loop()). In 2026.4.0, scheduler.call() feeds the WDT per executed item and each component feeds it after its loop() runs. When neither fires on a tick, the main loop task sleeps in yield_with_select_() with nothing ever reaching arch_feed_wdt(), so the task watchdog starves and panics. Add one feed_wdt_with_time() call right after before_loop_tasks_() in Application::loop(). Rate-limited inline fast path, nearly free when the 3 ms floor has not elapsed. To keep the timestamp argument monotonic with last_wdt_feed_ (advanced by Scheduler::execute_item_() as items fire), Scheduler::call() now returns its internal `now` (advanced via `now = this->execute_item_(item, now);`), forwarded through before_loop_tasks_(). No extra millis() call needed; when no items run the returned value equals the input.
Description
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
Readme
Multiple Licenses
546 MiB
Languages
C++
60.1%
Python
39.3%
C
0.3%
JavaScript
0.2%
